diff --git a/compiler/2014/C_CodeGen.jrag b/compiler/2014/C_CodeGen.jrag index 11c94d5706049c290d24e8e1f09dbc2f6665b499..b762e588c3278555ad9d52685816a8b1b02bb084 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 456ada22f63d8ec25551ae0481d7574776875244..f2d74415d734e627d2643945cff15eabf219ccc4 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 fc39c55448fc0246f0ddbba0c05e24c7bc2e0b1d..a6f964bba08cfb1835964fc377664afbf7ad2efc 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 0b0fbf36fe0caa3c663654ba9a75bb5509b562f7..81cc07b68ed6fa4058fbf40694b486cb375fc458 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 6b880d46c2183a424b2e6cba5147269f669adee8..868b1b6f49cdc6f79f9f6b2673720bd18056f043 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 ac6c19bb3b09095f5a7d2b5e0248d6796e734055..f5bbd88f1fd0af0be446d9c8f26896f885d0787c 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 c9fd3f92d633dff4ce8cc20ca44efba8a44afc6e..a5939656b14a31f96ef102632bbf85a94131c73b 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 af264e6e36583735463493f7566fa7d95ebd359a..d6d2cf7722a13970e28d73f4da05871046730fc2 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 b6c25bb4ea54176693820c0a78a09ba31f678678..4f075489f454dc48733db7dcb1d8c220baa3603e 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 0d6b8b44951c3eab494636d10fc3e1c78e91c509..7a0798180a5d4ab9cb050ce96105e1dfc5548359 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 abf071b742f1571105b087a95b279b3495ba6110..8d05a050ded1cedeb4426830dd0047fddcb25c3a 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