diff options
-rw-r--r-- | include/urweb.h | 2 | ||||
-rw-r--r-- | lib/basis.urs | 3 | ||||
-rw-r--r-- | src/c/urweb.c | 18 | ||||
-rw-r--r-- | src/prim.sml | 4 | ||||
-rw-r--r-- | tests/toString.ur | 4 |
5 files changed, 27 insertions, 4 deletions
diff --git a/include/urweb.h b/include/urweb.h index f4f33362..68ac4fc6 100644 --- a/include/urweb.h +++ b/include/urweb.h @@ -69,3 +69,5 @@ lw_Basis_bool lw_Basis_sqlifyBool(lw_context, lw_Basis_bool); 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 --git a/lib/basis.urs b/lib/basis.urs index 109ab31a..14b6d464 100644 --- a/lib/basis.urs +++ b/lib/basis.urs @@ -24,7 +24,8 @@ val eq_bool : eq bool val strcat : string -> string -> string val intToString : int -> string - +val floatToString : float -> string +val boolToString : bool -> string (** SQL *) diff --git a/src/c/urweb.c b/src/c/urweb.c index 78a8e0f8..7ed582da 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -681,3 +681,21 @@ lw_Basis_string lw_Basis_intToString(lw_context ctx, lw_Basis_int n) { 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 --git a/src/prim.sml b/src/prim.sml index 8c0e03f7..2c24fa0a 100644 --- a/src/prim.sml +++ b/src/prim.sml @@ -49,9 +49,9 @@ fun int2s n = 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 --git a/tests/toString.ur b/tests/toString.ur index 830f4713..f51ef098 100644 --- a/tests/toString.ur +++ b/tests/toString.ur @@ -1,3 +1,5 @@ fun main () : transaction page = return <html><body> - 6 = {cdata (intToString 6)} + 6 = {cdata (intToString 6)}<br/> + 12.34 = {cdata (floatToString 12.34)}<br/> + False = {cdata (boolToString False)}<br/> </body></html> |