From 8dee991e264405ab707649aab9a06cf1e5315f93 Mon Sep 17 00:00:00 2001 From: Anders Blomdell <anders.blomdell@control.lth.se> Date: Mon, 1 Jun 2015 16:48:14 +0200 Subject: [PATCH] Tyepdefs and typerefs no longer sent on line, lot's of cleanups needed --- compiler/2014/C_CodeGen.jrag | 100 +++++++++--------- compiler/2014/Java_CodeGen.jrag | 46 ++++---- examples/Makefile | 7 +- lib/c/2014/test/test_labcomm.c | 4 - .../test/test_labcomm_generated_encoding.c | 11 +- .../2014/test/test_labcomm_renaming_encoder.c | 14 +-- lib/java/Makefile | 6 +- .../control/labcomm2014/DecoderRegistry.java | 15 --- .../control/labcomm2014/EncoderChannel.java | 8 -- .../control/labcomm2014/SampleDispatcher.java | 4 - .../{labcomm2014 => typedef}/ASTbuilder.java | 0 .../{labcomm2014 => typedef}/BuiltinType.java | 0 .../{labcomm2014 => typedef}/TypeBinding.java | 0 .../{labcomm2014 => typedef}/TypeDef.java | 0 .../TypeDefParser.java | 0 lib/python/labcomm2014/LabComm.py | 5 + 16 files changed, 87 insertions(+), 133 deletions(-) rename lib/java/se/lth/control/{labcomm2014 => typedef}/ASTbuilder.java (100%) rename lib/java/se/lth/control/{labcomm2014 => typedef}/BuiltinType.java (100%) rename lib/java/se/lth/control/{labcomm2014 => typedef}/TypeBinding.java (100%) rename lib/java/se/lth/control/{labcomm2014 => typedef}/TypeDef.java (100%) rename lib/java/se/lth/control/{labcomm2014 => typedef}/TypeDefParser.java (100%) diff --git a/compiler/2014/C_CodeGen.jrag b/compiler/2014/C_CodeGen.jrag index 11c94d5..b762e58 100644 --- a/compiler/2014/C_CodeGen.jrag +++ b/compiler/2014/C_CodeGen.jrag @@ -47,10 +47,6 @@ aspect C_CodeGenEnv { private boolean rootIsPointer; private int rootLevel; - public boolean versionHasMetaData() { - return version != 2006; - } - private C_env(String qualid, String lcName, String rawPrefix, int indent, int depth, C_printer printer, int nestedLevel, int version) @@ -1141,7 +1137,7 @@ aspect C_Encoder { env.indent(); env.println("//TODO: add error handling for dependencies"); - C_emitUserTypeDeps(env, null, true); +// C_emitUserTypeDeps(env, null, true); if(!isSampleDecl() || hasDependencies()) { env.println("return e->type_register("); @@ -1171,7 +1167,7 @@ aspect C_Encoder { env.println(")"); env.println("{"); env.indent(); - C_emitUserTypeDeps(env, null, false); //XXX HERE BE DRAGONS +// C_emitUserTypeDeps(env, null, false); //XXX HERE BE DRAGONS //currently set to false to turn off //outputting of code env.println("int result = e->sample_register("); @@ -1181,17 +1177,17 @@ aspect C_Encoder { env.println("(labcomm2014_encoder_function)encode_" + env.prefix + getName()); env.unindent(); env.println(");"); - env.println("if(result >= 0) {\n"); - env.indent(); - env.println("labcomm2014_encoder_type_register_" + env.prefix + getName()+"(e);"); - env.println("e->type_bind("); - env.indent(); - env.println("e,"); - env.println("&signature_" + env.prefix + getName() + ","); - env.println( (hasDependencies() ? "1" : "0") + ");"); - env.unindent(); - env.println("}"); - env.unindent(); +// env.println("if(result >= 0) {\n"); +// env.indent(); +// env.println("labcomm2014_encoder_type_register_" + env.prefix + getName()+"(e);"); +// env.println("e->type_bind("); +// env.indent(); +// env.println("e,"); +// env.println("&signature_" + env.prefix + getName() + ","); +// env.println( (hasDependencies() ? "1" : "0") + ");"); +// env.unindent(); +// env.println("}"); +// env.unindent(); env.println("return result;"); env.unindent(); env.println("}"); @@ -1235,41 +1231,41 @@ aspect C_EncoderIoctl { } -aspect C_TypeDependencies { - public void Decl.C_emitUserTypeDeps(C_env env, String via, boolean outputCode) { - if( hasDependencies() ) { - Iterator<Decl> it = type_dependencies().iterator(); - while(it.hasNext()) { - Decl t = it.next(); - - t.C_emitUserTypeDeps(env, t.getName(), outputCode); - if(outputCode) { - env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);"); - } else { // Just output a comment - String refpath = (via == null) ? "directly" : "indirectly via "+via; - env.println(" //Depends ("+refpath+") on "+t.getName() ); - } - } - } - } - - public void Decl.C_emitUserTypeRefs(C_env env, String via, boolean outputCode) { - if( isReferenced() ) { - Iterator<Decl> it = type_references().iterator(); - while(it.hasNext()) { - Decl t = it.next(); - - t.C_emitUserTypeRefs(env, t.getName(), outputCode); - if(outputCode) { - env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);"); - } else { // Just output a comment - String refpath = (via == null) ? "directly" : "indirectly via "+via; - env.println(" //Is referenced ("+refpath+") by "+t.getName() ); - } - } - } - } -} +//aspect C_TypeDependencies { +// public void Decl.C_emitUserTypeDeps(C_env env, String via, boolean outputCode) { +// if( hasDependencies() ) { +// Iterator<Decl> it = type_dependencies().iterator(); +// while(it.hasNext()) { +// Decl t = it.next(); +// +// t.C_emitUserTypeDeps(env, t.getName(), outputCode); +// if(outputCode) { +// env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);"); +// } else { // Just output a comment +// String refpath = (via == null) ? "directly" : "indirectly via "+via; +// env.println(" //Depends ("+refpath+") on "+t.getName() ); +// } +// } +// } +// } +// +// public void Decl.C_emitUserTypeRefs(C_env env, String via, boolean outputCode) { +// if( isReferenced() ) { +// Iterator<Decl> it = type_references().iterator(); +// while(it.hasNext()) { +// Decl t = it.next(); +// +// t.C_emitUserTypeRefs(env, t.getName(), outputCode); +// if(outputCode) { +// env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);"); +// } else { // Just output a comment +// String refpath = (via == null) ? "directly" : "indirectly via "+via; +// env.println(" //Is referenced ("+refpath+") by "+t.getName() ); +// } +// } +// } +// } +//} aspect C_Signature { diff --git a/compiler/2014/Java_CodeGen.jrag b/compiler/2014/Java_CodeGen.jrag index 456ada2..f2d7441 100644 --- a/compiler/2014/Java_CodeGen.jrag +++ b/compiler/2014/Java_CodeGen.jrag @@ -329,13 +329,13 @@ aspect Java_Class { public void Decl.Java_emitRegisterEncoder(Java_env env) { env.println("public static void register(Encoder e) throws IOException {"); env.indent(); - env.println("register(e, true);"); - env.unindent(); - env.println("}"); - env.println(); - env.println("public static void register(Encoder e, boolean sendMetaData) throws IOException {"); - env.indent(); - Java_emitUserTypeDeps(env, null, true); +// env.println("register(e, true);"); +// env.unindent(); +// env.println("}"); +// env.println(); +// env.println("public static void register(Encoder e, boolean sendMetaData) throws IOException {"); +// env.indent(); +// Java_emitUserTypeDeps(env, null, true); env.println("e.register(dispatcher);"); env.unindent(); env.println("}"); @@ -382,11 +382,11 @@ aspect Java_Class { //if(hasDependencies() || isReferenced()) { //if( getDataType().isUserType() && isReferenced()) { - if( isReferenced()) { - Java_emitRegisterEncoder(env); - Java_emitDispatcher(env, false); - } - Java_emitSignature(env); +// if( isReferenced()) { +// Java_emitRegisterEncoder(env); +// Java_emitDispatcher(env, false); +// } +// Java_emitSignature(env); env.println("}"); env.unindent(); @@ -540,17 +540,17 @@ aspect Java_Class { env.unindent(); env.println("}"); env.println(); - env.println("public boolean isSample() {"); - env.indent(); - env.println("return "+isSample+";"); - env.unindent(); - env.println("}"); - env.println("public boolean hasDependencies() {"); - env.indent(); - env.println("return "+hasDependencies()+";"); - env.unindent(); - env.println("}"); - env.println(); +// env.println("public boolean isSample() {"); +// env.indent(); +// env.println("return "+isSample+";"); +// env.unindent(); +// env.println("}"); +// env.println("public boolean hasDependencies() {"); +// env.indent(); +// env.println("return "+hasDependencies()+";"); +// env.unindent(); +// env.println("}"); +// env.println(); env.println("/** return the flat signature. */"); env.println("public byte[] getSignature() {"); env.indent(); diff --git a/examples/Makefile b/examples/Makefile index fc39c55..a6f964b 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -1,5 +1,6 @@ SUBDIRS=duck_typing dynamic jgrafchart robot simple tcp \ - twoway user_types wiki_example + twoway wiki_example +# user_types # Disabled until typeefs are reimplemented in library .PHONY: all @@ -13,11 +14,11 @@ UNAME_S=$(shell uname -s) test: echo More to be done... ifeq ($(UNAME_S),Darwin) - $(MAKE) -C user_types all +# $(MAKE) -C user_types all else cd simple ; sh compile.sh && sh run.sh $(MAKE) -C wiki_example test - $(MAKE) -C user_types test +# $(MAKE) -C user_types test endif $(MAKE) -C duck_typing test $(MAKE) -C twoway test diff --git a/lib/c/2014/test/test_labcomm.c b/lib/c/2014/test/test_labcomm.c index 0b0fbf3..81cc07b 100644 --- a/lib/c/2014/test/test_labcomm.c +++ b/lib/c/2014/test/test_labcomm.c @@ -254,10 +254,6 @@ static int do_test(int argc, char *argv[]) NULL); struct expect expect_registration[] = { { "Sampledef", -1, test_decode_one, decoder }, -#ifdef SHOULD_THIS_BE_REMOVED - { "Typedef", -1, test_decode_one, decoder }, -#endif - { "Binding", -1, test_decode_one, decoder }, { 0, 0, 0 } }; expect = expect_registration; diff --git a/lib/c/2014/test/test_labcomm_generated_encoding.c b/lib/c/2014/test/test_labcomm_generated_encoding.c index 6b880d4..868b1b6 100644 --- a/lib/c/2014/test/test_labcomm_generated_encoding.c +++ b/lib/c/2014/test/test_labcomm_generated_encoding.c @@ -213,24 +213,19 @@ int main(void) /* Register twice to make sure that only one registration gets encoded */ labcomm2014_encoder_register_generated_encoding_V(encoder); labcomm2014_encoder_register_generated_encoding_V(encoder); - EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00, - 0x04, 0x08, VARIABLE(1), 0x03, 'v', '_', 't', 0x02, 0x11, 0x00, - 0x04, 0x05, VARIABLE(2), 0x01, 'V', 0x01, VARIABLE(1), - 0x05, 0x02, VARIABLE(0), VARIABLE(2) }); + EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00 }); labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET); /* Register twice to make sure that only one registration gets encoded */ labcomm2014_encoder_register_generated_encoding_B(encoder); labcomm2014_encoder_register_generated_encoding_B(encoder); - EXPECT({ 0x02, 0x05, VARIABLE(3), 0x01, 'B', 0x01, 0x21, - 0x05, 0x02, VARIABLE(3), LABCOMM_BIND_SELF }); + EXPECT({ 0x02, 0x05, VARIABLE(3), 0x01, 'B', 0x01, 0x21 }); labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET); /* Register twice to make sure that only one registration gets encoded */ labcomm2014_encoder_register_generated_encoding_R(encoder); labcomm2014_encoder_register_generated_encoding_R(encoder); - EXPECT({ 0x02, 0x08, VARIABLE(4), 0x01, 'R', 0x04, 0x10, 0x01, 0x04, 0x28, - 0x05, 0x02, VARIABLE(4), LABCOMM_BIND_SELF }); + EXPECT({ 0x02, 0x08, VARIABLE(4), 0x01, 'R', 0x04, 0x10, 0x01, 0x04, 0x28 }); labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET); /* Register twice to make sure that only one registration gets encoded */ diff --git a/lib/c/2014/test/test_labcomm_renaming_encoder.c b/lib/c/2014/test/test_labcomm_renaming_encoder.c index ac6c19b..f5bbd88 100644 --- a/lib/c/2014/test/test_labcomm_renaming_encoder.c +++ b/lib/c/2014/test/test_labcomm_renaming_encoder.c @@ -235,25 +235,17 @@ static int do_test(int argc, char *argv[]) /* Register twice to make sure that only one registration gets encoded */ labcomm2014_encoder_register_generated_encoding_V(encoder); labcomm2014_encoder_register_generated_encoding_V(encoder); - EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00, - 0x04, 0x08, VARIABLE(1), 0x03, 'v', '_', 't', 0x02, 0x11, 0x00, - 0x04, 0x05, VARIABLE(2), 0x01, 'V', 0x01, VARIABLE(1), - 0x05, 0x02, VARIABLE(0), VARIABLE(2) }); + EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00 }); labcomm2014_encoder_ioctl(prefix, IOCTL_WRITER_RESET); labcomm2014_encoder_register_generated_encoding_V(prefix); labcomm2014_encoder_register_generated_encoding_V(prefix); - EXPECT({ 0x02, 0x08, VARIABLE(3), 0x03, 'p', '.', 'V', 0x02, 0x11, 0x00, - 0x04, 0x07, VARIABLE(4), 0x03, 'p', '.', 'V', 0x01, VARIABLE(2), - 0x05, 0x02, VARIABLE(3), VARIABLE(4) }); + EXPECT({ 0x02, 0x08, VARIABLE(3), 0x03, 'p', '.', 'V', 0x02, 0x11, 0x00 }); labcomm2014_encoder_ioctl(suffix, IOCTL_WRITER_RESET); labcomm2014_encoder_register_generated_encoding_V(suffix); labcomm2014_encoder_register_generated_encoding_V(suffix); - EXPECT({ 0x02, 0x0a, VARIABLE(5), 0x05, 'p', '.', 'V', '.', 's', 0x02, 0x11, 0x00, - 0x04, 0x07, VARIABLE(6), 0x03, 'V', '.', 's', 0x01, VARIABLE(2), /* BOGUS */ - 0x04, 0x09, VARIABLE(7), 0x05, 'p', '.', 'V', '.', 's', 0x01, VARIABLE(2), - 0x05, 0x02, VARIABLE(5), VARIABLE(7) }); + EXPECT({ 0x02, 0x0a, VARIABLE(5), 0x05, 'p', '.', 'V', '.', 's', 0x02, 0x11, 0x00 }); labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET); diff --git a/lib/java/Makefile b/lib/java/Makefile index c9fd3f9..a593965 100644 --- a/lib/java/Makefile +++ b/lib/java/Makefile @@ -10,14 +10,10 @@ MODULES=Constant \ SampleDispatcher \ SampleHandler \ SampleType \ - BuiltinType \ - TypeDef \ - TypeBinding \ - ASTbuilder \ - TypeDefParser \ Writer \ WriterWrapper + .PHONY: all all: labcomm2014.jar diff --git a/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java b/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java index af264e6..d6d2cf7 100644 --- a/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java +++ b/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java @@ -101,20 +101,6 @@ public class DecoderRegistry { public synchronized void add(SampleDispatcher dispatcher, SampleHandler handler) throws IOException{ - //XXX kludge: special handling of predefined types - if(dispatcher.getSampleClass() == TypeDef.class){ - Entry e = new Entry(dispatcher, handler); - e.setIndex(Constant.TYPE_DEF); - byClass.put(dispatcher.getSampleClass(), e); - byIndex.put(Integer.valueOf(Constant.TYPE_DEF), e); - //System.out.println("LCDecoderRegistry.add("+e.getName()+", "+e.getIndex()+")"); - } else if(dispatcher.getSampleClass() == TypeBinding.class){ - Entry e = new Entry(dispatcher, handler); - e.setIndex(Constant.TYPE_BINDING); - byClass.put(dispatcher.getSampleClass(), e); - byIndex.put(Integer.valueOf(Constant.TYPE_BINDING), e); - //System.out.println("LCDecoderRegistry.add("+e.getName()+", "+e.getIndex()+")"); - } else { Entry e = byClass.get(dispatcher.getSampleClass()); if (e != null) { e.check(dispatcher.getName(), dispatcher.getSignature()); @@ -133,7 +119,6 @@ public class DecoderRegistry { byClass.put(dispatcher.getSampleClass(), e); } } - } } public synchronized void add(int index, diff --git a/lib/java/se/lth/control/labcomm2014/EncoderChannel.java b/lib/java/se/lth/control/labcomm2014/EncoderChannel.java index b6c25bb..4f07548 100644 --- a/lib/java/se/lth/control/labcomm2014/EncoderChannel.java +++ b/lib/java/se/lth/control/labcomm2014/EncoderChannel.java @@ -53,14 +53,6 @@ public class EncoderChannel implements Encoder { encodeByte(signature[i]); } end(null); - int tindex; - if(dispatcher.hasDependencies()){ - tindex = registerTypeDef(dispatcher); - } else { - tindex = Constant.TYPE_BIND_SELF; - } - bindType(index, tindex); - } private static class WrappedEncoder extends EncoderChannel{ diff --git a/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java b/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java index 0d6b8b4..7a07981 100644 --- a/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java +++ b/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java @@ -13,10 +13,6 @@ public interface SampleDispatcher <T extends SampleType>{ public void decodeAndHandle(Decoder decoder, SampleHandler handler) throws Exception; - /** @return true if the type depends on one or more typedefs - */ - public boolean hasDependencies(); - public void encodeTypeDef(Encoder e, int index) throws IOException; /** return the tag SAMPLE_DEF or TYPE_DEF, for use diff --git a/lib/java/se/lth/control/labcomm2014/ASTbuilder.java b/lib/java/se/lth/control/typedef/ASTbuilder.java similarity index 100% rename from lib/java/se/lth/control/labcomm2014/ASTbuilder.java rename to lib/java/se/lth/control/typedef/ASTbuilder.java diff --git a/lib/java/se/lth/control/labcomm2014/BuiltinType.java b/lib/java/se/lth/control/typedef/BuiltinType.java similarity index 100% rename from lib/java/se/lth/control/labcomm2014/BuiltinType.java rename to lib/java/se/lth/control/typedef/BuiltinType.java diff --git a/lib/java/se/lth/control/labcomm2014/TypeBinding.java b/lib/java/se/lth/control/typedef/TypeBinding.java similarity index 100% rename from lib/java/se/lth/control/labcomm2014/TypeBinding.java rename to lib/java/se/lth/control/typedef/TypeBinding.java diff --git a/lib/java/se/lth/control/labcomm2014/TypeDef.java b/lib/java/se/lth/control/typedef/TypeDef.java similarity index 100% rename from lib/java/se/lth/control/labcomm2014/TypeDef.java rename to lib/java/se/lth/control/typedef/TypeDef.java diff --git a/lib/java/se/lth/control/labcomm2014/TypeDefParser.java b/lib/java/se/lth/control/typedef/TypeDefParser.java similarity index 100% rename from lib/java/se/lth/control/labcomm2014/TypeDefParser.java rename to lib/java/se/lth/control/typedef/TypeDefParser.java diff --git a/lib/python/labcomm2014/LabComm.py b/lib/python/labcomm2014/LabComm.py index abf071b..8d05a05 100644 --- a/lib/python/labcomm2014/LabComm.py +++ b/lib/python/labcomm2014/LabComm.py @@ -478,9 +478,11 @@ class typedef(sampledef_or_sampleref_or_typedef): type_name = 'typedef' def encode_decl(self, encoder): + raise Exception("typedef's are disabled") self.decl.encode_decl(encoder) def encode(self, encoder, value): + raise Exception("typedef's are disabled") self.decl.encode(encoder, value) class array(type_decl): @@ -923,14 +925,17 @@ class Decoder(Codec): decl = self.index_to_decl[index].decode_decl(self) value = None elif index == i_TYPE_DEF: + raise Exception("typedef's are disabled") self.skip_or_raise(length, index) decl = None value = None elif index == i_TYPE_BINDING: + raise Exception("typebindings's are disabled") self.skip_or_raise(length, index) decl = None value = None elif index == i_PRAGMA: + raise Exception("pragma's are disabled") self.skip_or_raise(length, index) decl = None value = None -- GitLab