From 8f7951aab60ead817129f71da1955f006c540eda Mon Sep 17 00:00:00 2001 From: Sven Gestegard Robertz <sven.robertz@cs.lth.se> Date: Fri, 6 Dec 2013 09:52:03 +0100 Subject: [PATCH] versions for both with and without typedef --- examples/dynamic/dynamic_type.sh | 24 ++++++++++++++++++++++++ examples/dynamic/handlers2.txt | 2 +- examples/dynamic/handlers_type.txt | 20 ++++++++++++++++++++ examples/dynamic/simple.lc | 6 ++---- examples/dynamic/simple_type.lc | 10 ++++++++++ examples/dynamic/test/DynamicPart.java | 8 +++++++- examples/dynamic/test/StaticDecoder.java | 3 +-- examples/dynamic/test/StaticEncoder.java | 3 +-- examples/dynamic/test_type.sh | 7 +++++++ 9 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 examples/dynamic/dynamic_type.sh create mode 100644 examples/dynamic/handlers_type.txt create mode 100644 examples/dynamic/simple_type.lc create mode 100644 examples/dynamic/test_type.sh diff --git a/examples/dynamic/dynamic_type.sh b/examples/dynamic/dynamic_type.sh new file mode 100644 index 0000000..8059a96 --- /dev/null +++ b/examples/dynamic/dynamic_type.sh @@ -0,0 +1,24 @@ +#dummy script to test the on-the-fly compilation + +java -jar ../../compiler/labComm.jar --java=gen --javapackage=gen simple.lc + +javac -cp .:gen:../../lib/java/labcomm.jar gen/*.java + +# compile static encoder and decoder +javac -cp .:gen:../../lib/java/labcomm.jar test/StaticEncoder.java +javac -cp .:gen:../../lib/java/labcomm.jar test/StaticDecoder.java + +# compile dynamic part +javac -cp .:../../compiler/labComm.jar:../../lib/java/labcomm.jar:../../lib/tools/beaver.jar:../../lib/tools/beaver-rt.jar:../../lib/tools/jastadd2.jar:../../lib/tools/JFlex.jar:../../lib/tools/proj.jar test/DynamicPart.java + +javac test/HandlerContext.java + +# run static encoder +java -cp .:gen:../../lib/java//labcomm.jar test.StaticEncoder encoded_data + +# run dynamic part +java -cp .:../../compiler/labComm.jar:../../lib/java/labcomm.jar:../../lib/tools/beaver.jar:../../lib/tools/beaver-rt.jar:../../lib/tools/jastadd2.jar:../../lib/tools/JFlex.jar:../../lib/tools/proj.jar test.DynamicPart simple_type.lc handlers_type.txt encoded_data dynamic_out + + +# run static decoder +java -cp .:gen:../../lib/java//labcomm.jar test.StaticDecoder dynamic_out diff --git a/examples/dynamic/handlers2.txt b/examples/dynamic/handlers2.txt index be5e7f1..efa3f75 100644 --- a/examples/dynamic/handlers2.txt +++ b/examples/dynamic/handlers2.txt @@ -1,4 +1,4 @@ -foo:handler(foo_t value) { +foo:handler(foo value) { test.HandlerContext ctx = (test.HandlerContext)context; System.out.println("foo handler from handlers2.txt"); System.out.println("using context "+ctx.str); diff --git a/examples/dynamic/handlers_type.txt b/examples/dynamic/handlers_type.txt new file mode 100644 index 0000000..a3922f7 --- /dev/null +++ b/examples/dynamic/handlers_type.txt @@ -0,0 +1,20 @@ +foo:handler(foo_t value) { + test.HandlerContext ctx = (test.HandlerContext)context; + System.out.println("foo handler from handlers_type.txt"); + System.out.println("using context "+ctx.str); + ctx.x = value.x + 1000; + ctx.y = value.y + 1000; + ctx.z = value.z + 1000; + System.out.println(value.x); + System.out.println(value.y); + System.out.println(value.z); + for(int i=0; i<value.x; i++){ + System.out.print("."+(value.x-i)); + } + System.out.println(); +}### +bar:handler(int value) { + System.out.println("bar:"+value); + test.HandlerContext ctx = (test.HandlerContext)context; + ctx.bar = value + 1000; +}### diff --git a/examples/dynamic/simple.lc b/examples/dynamic/simple.lc index abdf856..915cb44 100644 --- a/examples/dynamic/simple.lc +++ b/examples/dynamic/simple.lc @@ -1,10 +1,8 @@ -typedef struct { +sample struct { int x; int y; int z; -} foo_t; - -sample foo_t foo; +} foo; sample int bar; diff --git a/examples/dynamic/simple_type.lc b/examples/dynamic/simple_type.lc new file mode 100644 index 0000000..abdf856 --- /dev/null +++ b/examples/dynamic/simple_type.lc @@ -0,0 +1,10 @@ +typedef struct { + int x; + int y; + int z; +} foo_t; + +sample foo_t foo; + +sample int bar; + diff --git a/examples/dynamic/test/DynamicPart.java b/examples/dynamic/test/DynamicPart.java index 9768f00..1a5ab3f 100644 --- a/examples/dynamic/test/DynamicPart.java +++ b/examples/dynamic/test/DynamicPart.java @@ -302,9 +302,15 @@ public class DynamicPart { */ private void encodeTest(InRAMCompiler irc, HandlerContext ctxt, String tmpFile) { try { - Class ft = irc.load(TYPE_NAME_FOO); Class fc = irc.load(SAMPLE_NAME_FOO); Class bc = irc.load(SAMPLE_NAME_BAR); + Class ft; // hack for both cases with and w/o typedef + try { + ft = irc.load(TYPE_NAME_FOO); + } catch (ClassNotFoundException e) { + System.out.println("** encodeTest: defaulting to sample==type"); + ft = fc; + } /* create sample class and instance objects */ Object fv = ft.newInstance(); diff --git a/examples/dynamic/test/StaticDecoder.java b/examples/dynamic/test/StaticDecoder.java index c33dd9e..b3d74ed 100644 --- a/examples/dynamic/test/StaticDecoder.java +++ b/examples/dynamic/test/StaticDecoder.java @@ -1,6 +1,5 @@ package test; -import gen.foo_t; import gen.foo; import gen.bar; @@ -32,7 +31,7 @@ public class StaticDecoder implements foo.Handler, bar.Handler } - public void handle_foo(foo_t d) throws java.io.IOException { + public void handle_foo(foo d) throws java.io.IOException { System.out.println("Got foo, x="+d.x+", y="+d.y+", z="+d.z); } diff --git a/examples/dynamic/test/StaticEncoder.java b/examples/dynamic/test/StaticEncoder.java index 9f39fdd..697f339 100644 --- a/examples/dynamic/test/StaticEncoder.java +++ b/examples/dynamic/test/StaticEncoder.java @@ -4,7 +4,6 @@ import java.io.FileOutputStream; import java.io.OutputStream; import se.lth.control.labcomm.LabCommEncoderChannel; -import gen.foo_t; import gen.foo; import gen.bar; @@ -21,7 +20,7 @@ public class StaticEncoder { } public void doEncode() throws java.io.IOException { - foo_t f = new foo_t(); + foo f = new foo(); f.x = 17; f.y = 42; f.z = 37; diff --git a/examples/dynamic/test_type.sh b/examples/dynamic/test_type.sh new file mode 100644 index 0000000..3463d1a --- /dev/null +++ b/examples/dynamic/test_type.sh @@ -0,0 +1,7 @@ +#dummy script to test the on-the-fly compilation + +javac -cp .:../../compiler/labComm.jar:../../lib/java/labcomm.jar:../../lib/tools/beaver.jar:../../lib/tools/beaver-rt.jar:../../lib/tools/jastadd2.jar:../../lib/tools/JFlex.jar:../../lib/tools/proj.jar test/TestLabcommGen.java + +javac test/HandlerContext.java + +java -cp .:../../compiler/labComm.jar:../../lib/java/labcomm.jar:../../lib/tools/beaver.jar:../../lib/tools/beaver-rt.jar:../../lib/tools/jastadd2.jar:../../lib/tools/JFlex.jar:../../lib/tools/proj.jar test.TestLabcommGen simple_type.lc handlers_type.txt encoded_data -- GitLab