#! /bin/sh


     ###################################### 
     ##### Model Transformation Tools #####
     ######################################

# Bourne shell script: mtt_p2c
# Pascal to c converter for MTT
# Uses the wonderful GNU p2c by  Dave Gillespie, daveg@csvax.cs.caltech.edu.    
# P.J.Gawthrop July 1998
# Copyright (c) P.J.Gawthrop 1998

###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.10  2000/09/15 09:01:41  peterg
## Updated internal comments
##
## Revision 1.9  2000/05/16 18:56:58  peterg
## Now realised that libp2c.a avoids many probs - so simplified it.
##
## Revision 1.8  2000/05/11 19:34:50  peterg
## *** empty log message ***
##
## Revision 1.7  1999/08/29 06:14:27  peterg
## No longer remove "PASCAL_MAIN"
##
## Revision 1.6  1999/04/20 06:17:15  peterg
## Fudge to avoid a bizzare bug (?) in p2c which corrupts "zero_matrix"
##
## Revision 1.5  1998/08/12 14:14:18  peterg
## Added pretty heading and explicitly include p2c header.
##
## Revision 1.4  1998/07/29 13:56:34  peterg
## Replces p2c include by local include.
##
## Revision 1.3  1998/07/27 20:32:51  peterg
## Now gives immediate warnings
##
## Revision 1.2  1998/07/25 16:35:43  peterg
## Sorted out log files etc
##
## Revision 1.1  1998/07/25 16:28:38  peterg
## Initial revision
##
###############################################################


# Options
info=''
while [ -n "`echo $1 | grep '^-'`" ]; do
  case $1 in
	-I )
                info=info;
                ;;
	*)
		echo "$1 is an invalid argument - ignoring" ;;
  esac
  shift
done

# Inform user
echo Creating $1_$2.c

# Use p2c to do the translation 
p2c -V  $1_$2.p  | grep Warning # > mtt_p2c.log 2>> mtt_p2c.log
cat $1_$2.log >> mtt_p2c.log
mv $1_$2.c mtt_junk.c

# Change p2c.h include.
#mv $1_$2.c mtt_junk1#
#cat mtt_junk1 | grep -v 'p2c/p2c.h'> mtt_junk2

# pretty heading
DATE=`date`

cat <<EOF  >$1_$2.c
/* C program  $1_$2.c */
/* Generated by MTT on $DATE */

/* Compile with gcc -lm -lp2c $1_$2.c -o $1_$2.out */
/* Note that p2c must be correctly installed so that p2c.h and libp2c.a are accessible */
#include "$1.h"
EOF

#cat<<EOF >>$1_$2.c
#/* The following is the header file included here for completeness */
#EOF

#cat $MTTPATH/trans/c/p2c.h >> $1_$2.c

#cat <<EOF >> $1_$2.c
#/* End of the header file. */
#
#
#EOF

## The sed item is to avoid a bizzare bug (?) in p2c which corrupts "zero_matrix"
###cat mtt_junk2 | sed 's/zero_matrix/mttmat/g'>> $1_$2.c

## Sort out the pascal EOF, PASCAL_MAIN etc
cat mtt_junk.c |\
 grep -v PASCAL_MAIN >> $1_$2.c

if [ -n "$info" ]; then
    cat mtt_p2c.log
fi

# Remove the garbage
rm -f mtt_junk.c
