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