# HG changeset patch # User Adam Chlipala # Date 1220797242 14400 # Node ID e89076c41c3909caf6884812c7d9d51ce178da76 # Parent 77a28e7430bfdc3a8208c1e7d82f30a9c9603ea6 toString for float and bool diff -r 77a28e7430bf -r e89076c41c39 include/urweb.h --- a/include/urweb.h Sun Sep 07 10:13:02 2008 -0400 +++ b/include/urweb.h Sun Sep 07 10:20:42 2008 -0400 @@ -69,3 +69,5 @@ char *lw_Basis_ensqlBool(lw_Basis_bool); lw_Basis_string lw_Basis_intToString(lw_context, lw_Basis_int); +lw_Basis_string lw_Basis_floatToString(lw_context, lw_Basis_float); +lw_Basis_string lw_Basis_boolToString(lw_context, lw_Basis_bool); diff -r 77a28e7430bf -r e89076c41c39 lib/basis.urs --- a/lib/basis.urs Sun Sep 07 10:13:02 2008 -0400 +++ b/lib/basis.urs Sun Sep 07 10:20:42 2008 -0400 @@ -24,7 +24,8 @@ val strcat : string -> string -> string val intToString : int -> string - +val floatToString : float -> string +val boolToString : bool -> string (** SQL *) diff -r 77a28e7430bf -r e89076c41c39 src/c/urweb.c --- a/src/c/urweb.c Sun Sep 07 10:13:02 2008 -0400 +++ b/src/c/urweb.c Sun Sep 07 10:20:42 2008 -0400 @@ -681,3 +681,21 @@ ctx->heap_front += len+1; return r; } + +lw_Basis_string lw_Basis_floatToString(lw_context ctx, lw_Basis_float n) { + int len; + char *r; + + lw_check_heap(ctx, FLOATS_MAX); + r = ctx->heap_front; + sprintf(r, "%g%n", n, &len); + ctx->heap_front += len+1; + return r; +} + +lw_Basis_string lw_Basis_boolToString(lw_context ctx, lw_Basis_bool b) { + if (b == lw_Basis_False) + return "False"; + else + return "True"; +} diff -r 77a28e7430bf -r e89076c41c39 src/prim.sml --- a/src/prim.sml Sun Sep 07 10:13:02 2008 -0400 +++ b/src/prim.sml Sun Sep 07 10:20:42 2008 -0400 @@ -49,9 +49,9 @@ fun float2s n = if Real64.compare (n, Real64.fromInt 0) = LESS then - "-" ^ Real64.toString (Real64.~ n) ^ "L" + "-" ^ Real64.toString (Real64.~ n) else - Real64.toString n ^ "L" + Real64.toString n fun p_t_GCC t = case t of diff -r 77a28e7430bf -r e89076c41c39 tests/toString.ur --- a/tests/toString.ur Sun Sep 07 10:13:02 2008 -0400 +++ b/tests/toString.ur Sun Sep 07 10:20:42 2008 -0400 @@ -1,3 +1,5 @@ fun main () : transaction page = return - 6 = {cdata (intToString 6)} + 6 = {cdata (intToString 6)}
+ 12.34 = {cdata (floatToString 12.34)}
+ False = {cdata (boolToString False)}