summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-09-07 10:20:42 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-09-07 10:20:42 -0400
commitdbb9192edae68feb230b5b231fcaf10fd68103e8 (patch)
tree251b269c6625e07edaba423511cac2cdad51bbed
parent79c2e18d5d237d48f0803bb874d72b4354ba9b25 (diff)
toString for float and bool
-rw-r--r--include/urweb.h2
-rw-r--r--lib/basis.urs3
-rw-r--r--src/c/urweb.c18
-rw-r--r--src/prim.sml4
-rw-r--r--tests/toString.ur4
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>