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