changeset 276:ed4af33681d8

Switch base types to 64-bit versions
author Adam Chlipala <adamc@hcoop.net>
date Tue, 02 Sep 2008 14:59:27 -0400
parents 73456bfde988
children 286f734db702
files include/types.h src/c/urweb.c src/cjr_print.sml src/prim.sig src/prim.sml
diffstat 5 files changed, 31 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/include/types.h	Tue Sep 02 14:40:57 2008 -0400
+++ b/include/types.h	Tue Sep 02 14:59:27 2008 -0400
@@ -1,5 +1,5 @@
-typedef int lw_Basis_int;
-typedef float lw_Basis_float;
+typedef long long lw_Basis_int;
+typedef double lw_Basis_float;
 typedef char* lw_Basis_string;
 
 struct __lws_0 {
--- a/src/c/urweb.c	Tue Sep 02 14:40:57 2008 -0400
+++ b/src/c/urweb.c	Tue Sep 02 14:59:27 2008 -0400
@@ -233,7 +233,7 @@
   int len;
   lw_check_heap(ctx, INTS_MAX);
   result = ctx->heap_front;
-  sprintf(result, "%d%n", n, &len);
+  sprintf(result, "%lld%n", n, &len);
   ctx->heap_front += len+1;
   return result;
 }
@@ -282,7 +282,7 @@
 static void lw_Basis_attrifyInt_w_unsafe(lw_context ctx, lw_Basis_int n) {
   int len;
 
-  sprintf(ctx->page_front, "%d%n", n, &len);
+  sprintf(ctx->page_front, "%lld%n", n, &len);
   ctx->page_front += len;
 }
 
@@ -326,7 +326,7 @@
 
   lw_check_heap(ctx, INTS_MAX);
   r = ctx->heap_front;
-  sprintf(r, "%d%n", n, &len);
+  sprintf(r, "%lld%n", n, &len);
   ctx->heap_front += len+1;
   return r;
 }
@@ -375,7 +375,7 @@
 static void lw_Basis_urlifyInt_w_unsafe(lw_context ctx, lw_Basis_int n) {
   int len;
 
-  sprintf(ctx->page_front, "%d%n", n, &len);
+  sprintf(ctx->page_front, "%lld%n", n, &len);
   ctx->page_front += len;
 }
 
@@ -430,16 +430,16 @@
 
 lw_Basis_int lw_Basis_unurlifyInt(lw_context ctx, char **s) {
   char *new_s = lw_unurlify_advance(*s);
-  int r;
+  lw_Basis_int r;
 
-  r = atoi(*s);
+  r = atoll(*s);
   *s = new_s;
   return r;
 }
 
 lw_Basis_float lw_Basis_unurlifyFloat(lw_context ctx, char **s) {
   char *new_s = lw_unurlify_advance(*s);
-  int r;
+  lw_Basis_float r;
 
   r = atof(*s);
   *s = new_s;
--- a/src/cjr_print.sml	Tue Sep 02 14:40:57 2008 -0400
+++ b/src/cjr_print.sml	Tue Sep 02 14:59:27 2008 -0400
@@ -157,7 +157,7 @@
               space,
               string "!=",
               space,
-              Prim.p_t (Prim.Int n),
+              Prim.p_t_GCC (Prim.Int n),
               string ")",
               space,
               exit],
@@ -169,7 +169,7 @@
               string (Int.toString depth),
               string ",",
               space,
-              Prim.p_t (Prim.String s),
+              Prim.p_t_GCC (Prim.String s),
               string "))",
               space,
               exit],
@@ -323,7 +323,7 @@
 
 fun p_exp' par env (e, loc) =
     case e of
-        EPrim p => Prim.p_t p
+        EPrim p => Prim.p_t_GCC p
       | ERel n => p_rel env n
       | ENamed n => p_enamed env n
       | ECon (Enum, pc, _) => p_patCon env pc
--- a/src/prim.sig	Tue Sep 02 14:40:57 2008 -0400
+++ b/src/prim.sig	Tue Sep 02 14:59:27 2008 -0400
@@ -33,6 +33,7 @@
            | String of string
 
     val p_t : t Print.printer
+    val p_t_GCC : t Print.printer
 
     val equal : t * t -> bool
 
--- a/src/prim.sml	Tue Sep 02 14:40:57 2008 -0400
+++ b/src/prim.sml	Tue Sep 02 14:59:27 2008 -0400
@@ -41,6 +41,24 @@
       | Float n => string (Real64.toString n)
       | String s => box [string "\"", string (String.toString s), string "\""]
 
+fun int2s n =
+    if Int64.compare (n, Int64.fromInt 0) = LESS then
+        "-" ^ Int64.toString (Int64.~ n) ^ "LL"
+    else
+        Int64.toString n ^ "LL"
+
+fun float2s n =
+    if Real64.compare (n, Real64.fromInt 0) = LESS then
+        "-" ^ Real64.toString (Real64.~ n) ^ "L"
+    else
+        Real64.toString n ^ "L"
+
+fun p_t_GCC t =
+    case t of
+        Int n => string (int2s n)
+      | Float n => string (float2s n)
+      | String s => box [string "\"", string (String.toString s), string "\""]
+
 fun equal x =
     case x of
         (Int n1, Int n2) => n1 = n2