changeset 1109:631a3597c065

Proper [un]urlification of unit
author Adam Chlipala <adamc@hcoop.net>
date Fri, 01 Jan 2010 12:48:06 -0500
parents 82ac88b4e0a7
children 7fc4e0087e50
files include/urweb.h src/c/urweb.c src/cjr_print.sml src/monoize.sml
diffstat 4 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/include/urweb.h	Fri Jan 01 10:49:36 2010 -0500
+++ b/include/urweb.h	Fri Jan 01 12:48:06 2010 -0500
@@ -117,6 +117,7 @@
 uw_unit uw_Basis_urlifyBool_w(uw_context, uw_Basis_bool);
 uw_unit uw_Basis_urlifyChannel_w(uw_context, uw_Basis_channel);
 
+uw_Basis_unit uw_Basis_unurlifyUnit(uw_context ctx, char **s);
 uw_Basis_int uw_Basis_unurlifyInt(uw_context, char **);
 uw_Basis_float uw_Basis_unurlifyFloat(uw_context, char **);
 uw_Basis_string uw_Basis_unurlifyString(uw_context, char **);
--- a/src/c/urweb.c	Fri Jan 01 10:49:36 2010 -0500
+++ b/src/c/urweb.c	Fri Jan 01 12:48:06 2010 -0500
@@ -1793,6 +1793,11 @@
   return r;
 }
 
+uw_Basis_unit uw_Basis_unurlifyUnit(uw_context ctx, char **s) {
+  *s = uw_unurlify_advance(*s);
+  return uw_unit_v;
+}
+
 uw_Basis_string uw_Basis_unurlifyString_fromClient(uw_context ctx, char **s) {
   char *new_s = uw_unurlify_advance(*s);
   char *r, *s1, *s2;
--- a/src/cjr_print.sml	Fri Jan 01 10:49:36 2010 -0500
+++ b/src/cjr_print.sml	Fri Jan 01 12:48:06 2010 -0500
@@ -565,14 +565,14 @@
     let
         fun unurlify' rf t =
             case t of
-                TFfi ("Basis", "unit") => string "uw_unit_v"
+                TFfi ("Basis", "unit") => string "uw_Basis_unurlifyUnit(ctx, &request)"
               | TFfi ("Basis", "string") => string (if fromClient then
                                                         "uw_Basis_unurlifyString_fromClient(ctx, &request)"
                                                     else
                                                         "uw_Basis_unurlifyString(ctx, &request)")
               | TFfi (m, t) => string ("uw_" ^ ident m ^ "_unurlify" ^ capitalize t ^ "(ctx, &request)")
 
-              | TRecord 0 => string "uw_unit_v"
+              | TRecord 0 => string "uw_Basis_unurlifyUnit(ctx, &request)"
               | TRecord i =>
                 let
                     val xts = E.lookupStruct env i
--- a/src/monoize.sml	Fri Jan 01 10:49:36 2010 -0500
+++ b/src/monoize.sml	Fri Jan 01 12:48:06 2010 -0500
@@ -433,7 +433,8 @@
                 end
               | _ =>
                 case t of
-                    L'.TFfi (m, x) => ((L'.EFfiApp (m, fk2s fk ^ "ify" ^ capitalize x, [e]), loc), fm)
+                    L'.TFfi ("Basis", "unit") => ((L'.EPrim (Prim.String ""), loc), fm)
+                  | L'.TFfi (m, x) => ((L'.EFfiApp (m, fk2s fk ^ "ify" ^ capitalize x, [e]), loc), fm)
 
                   | L'.TRecord [] => ((L'.EPrim (Prim.String ""), loc), fm)
                   | L'.TRecord ((x, t) :: xts) =>