From a6f1423cbb0b794cc5ee1d4a20d0e8cf5a628420 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Thu, 16 May 2013 16:25:08 +0200
Subject: [PATCH] Made C declarations use explicitly sized integer types
 (stdint.h)

---
 compiler/C_CodeGen.jrag | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/compiler/C_CodeGen.jrag b/compiler/C_CodeGen.jrag
index d3d3976..a6f54ae 100644
--- a/compiler/C_CodeGen.jrag
+++ b/compiler/C_CodeGen.jrag
@@ -161,6 +161,7 @@ aspect C_CodeGen {
     env.println("");
 
     // Include
+    env.println("#include <stdint.h>");
     env.println("#include \"labcomm.h\"");
     for (int i = 0 ; i < includes.size() ; i++) {
       env.println("#include \"" + includes.get(i) + "\"");
@@ -260,11 +261,14 @@ aspect C_Type {
 
   public void PrimType.C_emitType(C_env env, String name) {
     switch (getToken()) {
-      case LABCOMM_BOOLEAN: { env.print("unsigned char"); } break;
-      case LABCOMM_BYTE: { env.print("unsigned char"); } break;
+      case LABCOMM_BOOLEAN: { env.print("uint8_t"); } break;
+      case LABCOMM_BYTE: { env.print("uint8_t"); } break;
+      case LABCOMM_SHORT: { env.print("int16_t"); } break;
+      case LABCOMM_INT: { env.print("int32_t"); } break;
+      case LABCOMM_LONG: { env.print("int64_t"); } break;
+      case LABCOMM_FLOAT: { env.print("float"); } break;
+      case LABCOMM_DOUBLE: { env.print("double"); } break;
       case LABCOMM_STRING: { env.print("char*"); } break;
-      case LABCOMM_LONG: { env.print("long long"); } break;
-      default: { env.print(getName()); } break;
     }
     env.print(" " + name);
   }
-- 
GitLab