diff --git a/compiler/CS_CodeGen.jrag b/compiler/CS_CodeGen.jrag index a02f45533e371c6584df576fd608c8d9d80c6f40..f911ecf4d43527b1ea872ec5de9d9c49cf0160ed 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 228ebd62e8bcfe43703f76ee562a0a67d4b330af..e2e04baac6435830a280165aa77d055d512aa071 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 96dffe3ff0612806a0f2e1c34739975b6bd53d2a..b01ff8f02e5052fd9979c69ed60bee9e32768586 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 79aeb4307575f6d6d98f6c9a2215e80eb340e05d..670b8247472c127839eaabf6340e438d538d6c81 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 6f4da2ca1b7e1d621a5e52d0e7e1052c33edbb3b..837cf7243b0c4ac383b43b6ad93cf5f1cdd15757 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 06a4e659507c21cf82071af63c1aad66abffb435..68fdc4de6db96a45ae1d75fc263fd3ebc498aafe 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 9c0869bbac9fcb143051897784603655be27c27f..93644bc2ed679087264766594acece7467f04eaf 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