diff --git a/compiler/Java_CodeGen.jrag b/compiler/Java_CodeGen.jrag index 4b6891d706e88931601823814ccbffcf8f1b19ee..ae4805ea95c9779e621a970b2c0bee5a43a2a2b1 100644 --- a/compiler/Java_CodeGen.jrag +++ b/compiler/Java_CodeGen.jrag @@ -399,9 +399,15 @@ aspect Java_Class { } if (getType().Java_needInstance() || hasDependencies()) { env.println("import se.lth.control.labcomm"+env.verStr+".Encoder;"); + env.println("import se.lth.control.labcomm"+env.verStr+".SampleDispatcher;"); + env.println("import se.lth.control.labcomm"+env.verStr+".SampleHandler;"); env.println(); } + if (getType().Java_needInstance()) { + env.println("import java.io.IOException;"); + env.println("import se.lth.control.labcomm"+env.verStr+".Decoder;"); + } // For types without type_dependencies and not needing an instance, // currently just an empty class is generated @@ -409,18 +415,21 @@ aspect Java_Class { env.println(); env.indent(); - if(hasDependencies() || isReferenced()) { - // XXX Java_emitRegisterEncoder(env); - // XXX Java_emitDispatcher(env, false); - } - if (getType().Java_needInstance()) { getType().Java_emitInstance(env); Java_emitEncoder(env); Java_emitDecoder(env); } + + if(hasDependencies() || isReferenced()) { + // XXX Java_emitRegisterEncoder(env); + // XXX Java_emitDispatcher(env, false); + Java_emitSignature(env); + } + env.unindent(); env.println("}"); + env.println(); } @@ -471,6 +480,13 @@ aspect Java_Class { Java_emitEncoder(env); Java_emitDecoder(env); + Java_emitSignature(env); + env.unindent(); + env.println("}"); + env.println(); + } + + public void Decl.Java_emitSignature(Java_env env) { env.println("private static byte[] signature = new byte[] {"); env.indent(); SignatureList signature = signature(env.version); @@ -492,10 +508,8 @@ aspect Java_Class { env.println("};"); env.unindent(); env.println(); - env.println("}"); } - public void Decl.Java_emitDispatcher(Java_env env, boolean canDecodeAndHandle) { env.println("private static class Dispatcher implements SampleDispatcher {"); env.indent();