From 7670af1577fec915711acbe8f87a7978929b5816 Mon Sep 17 00:00:00 2001
From: Sven Gestegard Robertz <sven.robertz@cs.lth.se>
Date: Fri, 28 Mar 2014 11:36:28 +0100
Subject: [PATCH] updated test cases to leaving out value parameter for void
 samples

---
 compiler/CS_CodeGen.jrag                     |  4 +++-
 compiler/C_CodeGen.jrag                      | 15 +++++++++++++--
 compiler/Java_CodeGen.jrag                   |  4 +++-
 lib/c/test/test_labcomm_generated_encoding.c |  6 ++++--
 test/relay_gen_c.py                          | 19 +++++++++++++------
 test/relay_gen_cs.py                         |  2 +-
 test/relay_gen_java.py                       |  2 +-
 7 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/compiler/CS_CodeGen.jrag b/compiler/CS_CodeGen.jrag
index a02f455..f911ecf 100644
--- a/compiler/CS_CodeGen.jrag
+++ b/compiler/CS_CodeGen.jrag
@@ -776,13 +776,15 @@ aspect CS_Info {
 
   public void TypeDecl.CS_info(CS_env env, String namespace) {
     env.print(";C#;typedef;" + namespace + getName() + ";");
-    getType().CS_emitType(env);
+    getType().CS_emitType(env) ;
+    env.print(";not_applicable_for_Java");
     env.println();
   }
 
   public void SampleDecl.CS_info(CS_env env, String namespace) {
     env.print(";C#;sample;" + namespace + getName() + ";");
     getType().CS_emitType(env);
+    env.print(";not_applicable_for_Java");
     env.println();
   }
 
diff --git a/compiler/C_CodeGen.jrag b/compiler/C_CodeGen.jrag
index 228ebd6..e2e04ba 100644
--- a/compiler/C_CodeGen.jrag
+++ b/compiler/C_CodeGen.jrag
@@ -1163,12 +1163,23 @@ aspect C_Info {
 
   public void TypeDecl.C_info(C_env env) {
     env.println(",C,typedef," + env.prefix + getName() + "," + 
-                 env.prefix + getName());
+                 env.prefix + getName() + "," +
+                 C_info_type_or_void(env.prefix));
   }
 
   public void SampleDecl.C_info(C_env env) {
     env.println(",C,sample," + env.prefix + getName() + "," + 
-                env.prefix + getName());
+                 env.prefix + getName() + "," +
+                 C_info_type_or_void(env.prefix));
   }
 
+  // make void types explicitly as they require special treatment
+  // in encoder/decoder calls
+  protected String Decl.C_info_type_or_void(String prefix) {
+    if(isVoid() ) {
+      return "void";
+    } else {
+      return prefix + getName() ;
+    }
+  }
 }
diff --git a/compiler/Java_CodeGen.jrag b/compiler/Java_CodeGen.jrag
index 96dffe3..b01ff8f 100644
--- a/compiler/Java_CodeGen.jrag
+++ b/compiler/Java_CodeGen.jrag
@@ -869,13 +869,15 @@ aspect Java_Info {
 
   public void TypeDecl.Java_info(Java_env env) {
     env.print(",Java,typedef," + getName() + ",");
-    getType().Java_emitType(env);
+    getType().Java_emitType(env); 
+    env.print(",not_applicable_for_Java");
     env.println();
   }
 
   public void SampleDecl.Java_info(Java_env env) {
     env.print(",Java,sample," + getName() + ",");
     getType().Java_emitType(env);
+    env.print(",not_applicable_for_Java");
     env.println();
   }
 
diff --git a/lib/c/test/test_labcomm_generated_encoding.c b/lib/c/test/test_labcomm_generated_encoding.c
index 79aeb43..670b824 100644
--- a/lib/c/test/test_labcomm_generated_encoding.c
+++ b/lib/c/test/test_labcomm_generated_encoding.c
@@ -179,7 +179,8 @@ void dump_encoder(struct labcomm_encoder *encoder)
 
 int main(void)
 {
-  generated_encoding_V V;
+  //no longer used
+  //generated_encoding_V V;
   generated_encoding_B B = 1;
 
   struct labcomm_encoder *encoder = labcomm_encoder_new(
@@ -199,7 +200,8 @@ int main(void)
   EXPECT({0x02, -1, 0x01, 'B', 0x21});
 
   labcomm_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
-  labcomm_encode_generated_encoding_V(encoder, &V);
+  // was: labcomm_encode_generated_encoding_V(encoder, &V);
+  labcomm_encode_generated_encoding_V(encoder);
   EXPECT({-1});
 
   labcomm_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
diff --git a/test/relay_gen_c.py b/test/relay_gen_c.py
index 6f4da2c..837cf72 100755
--- a/test/relay_gen_c.py
+++ b/test/relay_gen_c.py
@@ -16,13 +16,14 @@ if __name__ == '__main__':
     f = open(sys.argv[1])
     sample = []
     for l in map(lambda s: s.strip(), f):
-        lang,kind,func,arg = l[1:].split(l[0])
+        lang,kind,func,arg,stype = l[1:].split(l[0])
         if lang == 'C' and kind == 'sample':
-            sample.append((func, arg))
+            sample.append((func, arg, stype))
             pass
         pass
     result = []
     result.extend(split_match('^[^|]*\|(.*)$', """
+      |// generated by relay_gen_c.py
       |#include <sys/types.h>
       |#include <sys/stat.h>
       |#include <fcntl.h>
@@ -34,13 +35,19 @@ if __name__ == '__main__':
       |#include <labcomm_fd_writer.h>
       |#include "c_code.h"
     """))
-    for func,arg in sample:
+    for func,arg,stype in sample:
         result.extend(split_match('^[^|]*\|(.*)$', """
           |void handle_%(func)s(%(arg)s *v, void *context)
           |{
           |  struct labcomm_encoder *e = context;
-          |  labcomm_encode_%(func)s(e, v);
-          |}""" % { 'func': func, 'arg': arg }))
+          |  labcomm_encode_%(func)s(e%(valargstr)s);
+          |}""" % { 'func': func, 'arg': arg, 'valargstr': '' if stype == "void" else', v' }))
+#        result.extend(split_match('^[^|]*\|(.*)$', """
+#          |void handle_%(func)s(%(arg)s *v, void *context)
+#          |{
+#          |  struct labcomm_encoder *e = context;
+#          |  labcomm_encode_%(func)s(e, v);
+#          |}""" % { 'func': func, 'arg': arg }))
         pass
     result.extend(split_match('^[^|]*\|(.*)$', """
       |int main(int argc, char *argv[]) {
@@ -64,7 +71,7 @@ if __name__ == '__main__':
       |                           labcomm_default_memory,
       |                           labcomm_default_scheduler);
     """))
-    for func,arg in sample:
+    for func,arg,stype in sample:
         result.extend(split_match('^[^|]*\|(.*)$', """
           |  labcomm_encoder_register_%(func)s(e);
           |  labcomm_decoder_register_%(func)s(d, handle_%(func)s, e);
diff --git a/test/relay_gen_cs.py b/test/relay_gen_cs.py
index 06a4e65..68fdc4d 100755
--- a/test/relay_gen_cs.py
+++ b/test/relay_gen_cs.py
@@ -16,7 +16,7 @@ if __name__ == '__main__':
     f = open(sys.argv[1])
     sample = []
     for l in map(lambda s: s.strip(), f):
-        lang,kind,func,arg = l[1:].split(l[0])
+        lang,kind,func,arg,dummy = l[1:].split(l[0])
         if lang == 'C#' and kind == 'sample':
             sample.append((func, arg))
             pass
diff --git a/test/relay_gen_java.py b/test/relay_gen_java.py
index 9c0869b..93644bc 100755
--- a/test/relay_gen_java.py
+++ b/test/relay_gen_java.py
@@ -16,7 +16,7 @@ if __name__ == '__main__':
     f = open(sys.argv[1])
     sample = []
     for l in map(lambda s: s.strip(), f):
-        lang,kind,func,arg = l[1:].split(l[0])
+        lang,kind,func,arg,dummy = l[1:].split(l[0])
         if lang == 'Java' and kind == 'sample':
             sample.append((func, arg))
             pass
-- 
GitLab