#!/bin/sh # $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ # Make Giotto Code Gen Java files # Given a .giotto file, create .java stub files # if [ $# -ne 1 ]; then echo "$0: Usage: $0 giottofile" exit 3 fi giottoFile=$1 if [ ! -r "$giottoFile" ]; then echo "$0: $giottoFile is not readable" exit 4 fi basename=`basename $giottoFile .giotto` if [ ! -d $basename ]; then mkdir $basename fi # Create the Token_port.java token_portFileName=$basename/Token_port.java echo $token_portFileName cat > $token_portFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class Token_port extends int_port implements PortVariable, Serializable { } EOF # Create copy_Token_port.java copy_Token_portFileName=$basename/copy_Token_port.java echo $copy_Token_portFileName cat > $copy_Token_portFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class copy_Token_port extends copy_int_port implements DriverInterface, Serializable { /** * @see giotto.functionality.interfaces.DriverInterface#run(Parameter) */ public void run(Parameter parameter) { System.out.println("copy_Token_port " + parameter); super.run(parameter); } } EOF # Create the task files tasks=`grep schedule $giottoFile | awk '{split($2,f,"("); print f[1]}'` for task in $tasks do taskFileName=$basename/$task.java echo "$taskFileName" cat > $taskFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class $task implements TaskInterface, Serializable { /** * @see giotto.functionality.interfaces.DriverInterface#run(Parameter) */ public void run(Parameter parameter) { System.out.println("$task " + parameter); //((PortMove)p.getPortVariable(1)).setIntValue(idle); //((PortDoor)p.getPortVariable(2)).setIntValue(idle); // JElevator.elIdle((Buttons)p.getPortVariable(0), (Move)p.getPortVariable(1), (Door)p.getPortVariable(2)); } } EOF1 done # Create the driver drivers1=`egrep "^driver" $giottoFile | awk '{ if ($2 ~ /\(/) { split($2, f, "(") print substr(f[1], 1, length(f[1]) - length("driver"))"inputdriver" } else { print substr($2, 1, length($2) - length("driver"))"inputdriver" } }'` drivers2=`egrep ":=" $giottoFile | awk '{print substr($4, 1, length($4)-1)}'` # Handle sensors like " real_port positionX uses GetPosX;" drivers3=`egrep "uses" $giottoFile | awk '{print substr($4, 1, length($4)-1)}'` # Get one filename per line drivers="`echo $drivers1 $drivers2 $drivers3 | awk '{for(i=1;i<=NF;i++) {print $i}}'`" for driver in $drivers do driverFileName=$basename/$driver.java echo "$driverFileName" cat > $driverFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class $driver implements DriverInterface, Serializable { /** * @see giotto.functionality.interfaces.DriverInterface#run(Parameter) */ public void run(Parameter parameter) { System.out.println("$driver " + parameter); //giotto.functionality.code.elevator.PortMove m0 = (giotto.functionality.code.elevator.PortMove)parameter.getPortVariable(0); //giotto.functionality.code.elevator.PortMove m1 = (giotto.functionality.code.elevator.PortMove)parameter.getPortVariable(1); //m1.copyValueFrom(m0); } } EOF2 done # Create the port files ports=`egrep 'uses|:=' $giottoFile | awk '{print $1}' | sort | uniq` for port in $ports do portFileName=$basename/$port.java echo "$portFileName" cat > $portFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class $port implements PortVariable, Serializable { public void copyValueFrom(PortVariable source) { //_value = ((real_port)source).getFloatValue(); } //private float _value; } EOF1 portFileName=$basename/copy_$port.java echo "$portFileName" cat > $portFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class copy_$port extends copy_int_port implements DriverInterface, Serializable { /** * @see giotto.functionality.interfaces.DriverInterface#run(Parameter) */ public void run(Parameter parameter) { System.out.println("copy_$port_port " + parameter); super.run(parameter); } } EOF5 done # Create the condition files conditions=`egrep "^[ ]*if " $giottoFile | awk '{split($2, f ,"("); print f[1]}' | sort | uniq` for condition in $conditions do conditionFileName=$basename/$condition.java echo "$conditionFileName" cat > $conditionFileName <Created by $PTII/ptolemy/domains/gr/kernel/mkGiottoCGJava. @author $USERNAME @version $Id: mkGiottoCGJava 35999 2005-02-05 03:07:13Z cxh $ @since `date` */ public class $condition extends BaseCondition implements ConditionInterface, Serializable { /** * @see giotto.functionality.interfaces.ConditionInterface#run(Parameter) */ public boolean run(Parameter parameter) { System.out.println("condition $condition " + parameter); if (super.run(parameter)) { return true; } return false; } } EOF6 done