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