From fc942c4de3ec974336eda354920aea6ef863f9b9 Mon Sep 17 00:00:00 2001 From: Anders Blomdell <anders.blomdell@control.lth.se> Date: Mon, 13 May 2013 19:34:10 +0200 Subject: [PATCH] compiler/*_CodeGen.jrag: put delimiter first in typeinfo to simplify parsing and not assume what delimiter should be used for various languages (was broken for C#) compiler/CS_CodeGen.jrag: corrected handling of variable sized arrays (int -> packed32) compiler/Python_CodeGen.jrag: added signature list --- compiler/CS_CodeGen.jrag | 8 ++++---- compiler/C_CodeGen.jrag | 4 ++-- compiler/Java_CodeGen.jrag | 4 ++-- compiler/Python_CodeGen.jrag | 7 ++++++- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/compiler/CS_CodeGen.jrag b/compiler/CS_CodeGen.jrag index aef757e..2b45d0d 100644 --- a/compiler/CS_CodeGen.jrag +++ b/compiler/CS_CodeGen.jrag @@ -463,7 +463,7 @@ aspect CS_Class { } public String VariableSize.CS_emitEncoder(CS_env env, String name) { - env.println("e.encodeInt(" + name + ");"); + env.println("e.encodePacked32(" + name + ");"); return name; } @@ -571,7 +571,7 @@ aspect CS_Class { } public void VariableSize.CS_emitDecoder(CS_env env) { - env.print("d.decodeInt()"); + env.print("d.decodePacked32()"); } public void StructType.CS_emitDecoder(CS_env env, String name) { @@ -786,13 +786,13 @@ aspect CS_Info { } public void TypeDecl.CS_info(CS_env env, String namespace) { - env.print("C#,typedef," + namespace + getName() + ","); + env.print(";C#;typedef;" + namespace + getName() + ";"); getType().CS_emitType(env); env.println(); } public void SampleDecl.CS_info(CS_env env, String namespace) { - env.print("C#,sample," + namespace + getName() + ","); + env.print(";C#;sample;" + namespace + getName() + ";"); getType().CS_emitType(env); env.println(); } diff --git a/compiler/C_CodeGen.jrag b/compiler/C_CodeGen.jrag index ef59b2b..d103045 100644 --- a/compiler/C_CodeGen.jrag +++ b/compiler/C_CodeGen.jrag @@ -1102,12 +1102,12 @@ aspect C_Info { } public void TypeDecl.C_info(C_env env) { - env.println("C,typedef," + env.prefix + getName() + "," + + env.println(",C,typedef," + env.prefix + getName() + "," + env.prefix + getName()); } public void SampleDecl.C_info(C_env env) { - env.println("C,sample," + env.prefix + getName() + "," + + env.println(",C,sample," + env.prefix + getName() + "," + env.prefix + getName()); } diff --git a/compiler/Java_CodeGen.jrag b/compiler/Java_CodeGen.jrag index 303cd7e..188878c 100644 --- a/compiler/Java_CodeGen.jrag +++ b/compiler/Java_CodeGen.jrag @@ -783,13 +783,13 @@ aspect Java_Info { } public void TypeDecl.Java_info(Java_env env) { - env.print("Java,typedef," + getName() + ","); + env.print(",Java,typedef," + getName() + ","); getType().Java_emitType(env); env.println(); } public void SampleDecl.Java_info(Java_env env) { - env.print("Java,sample," + getName() + ","); + env.print(",Java,sample," + getName() + ","); getType().Java_emitType(env); env.println(); } diff --git a/compiler/Python_CodeGen.jrag b/compiler/Python_CodeGen.jrag index b0908bc..ed3f2c7 100644 --- a/compiler/Python_CodeGen.jrag +++ b/compiler/Python_CodeGen.jrag @@ -80,6 +80,12 @@ aspect Python_CodeGen { env.println("import labcomm"); env.println(); Python_genTypes(env); + env.println("signatures = ["); + for (int i = 0 ; i < getNumDecl() ; i++) { + env.println(" ('" + getDecl(i).getName() + "', " + + getDecl(i).getName() + ".signature),"); + } + env.println("]"); } } @@ -167,7 +173,6 @@ aspect PythonTypes { public void VoidType.Python_genSignature(Python_env env) { env.println("labcomm.struct([])"); - env.unindent(); } public void Field.Python_genSignature(Python_env env) { -- GitLab