Mercurial > urweb
changeset 1546:133c71008bef
Add prototypes for [un]urlification functions
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 21 Aug 2011 10:55:31 -0400 |
parents | 5f530f8e3511 |
children | 553a5cc3a4b5 |
files | src/cjr_print.sml tests/rpcNested.ur |
diffstat | 2 files changed, 88 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cjr_print.sml Sun Aug 21 10:39:19 2011 -0400 +++ b/src/cjr_print.sml Sun Aug 21 10:55:31 2011 -0400 @@ -524,7 +524,7 @@ str (Char.toUpper (String.sub (s, 0))) ^ String.extract (s, 1, NONE) local - val urlHandlers = ref ([] : pp_desc list) + val urlHandlers = ref ([] : (pp_desc * pp_desc) list) in fun addUrlHandler v = urlHandlers := v :: !urlHandlers @@ -648,6 +648,14 @@ space, string "*unurlify_", string (Int.toString i), + string "(uw_context, char **);", + newline], + box [string "static", + space, + p_typ env t, + space, + string "*unurlify_", + string (Int.toString i), string "(uw_context ctx, char **request) {", newline, box [string "return ((*request)[0] == '/' ? ++*request : *request,", @@ -799,6 +807,14 @@ space, string "unurlify_", string (Int.toString i), + string "(uw_context, char **);", + newline], + box [string "static", + space, + p_typ env (t, ErrorMsg.dummySpan), + space, + string "unurlify_", + string (Int.toString i), string "(uw_context ctx, char **request) {", newline, box [string "return", @@ -828,6 +844,14 @@ space, string "unurlify_list_", string (Int.toString i), + string "(uw_context, char **);", + newline], + box [string "static", + space, + p_typ env (t, loc), + space, + string "unurlify_list_", + string (Int.toString i), string "(uw_context ctx, char **request) {", newline, box [string "return ((*request)[0] == '/' ? ++*request : *request,", @@ -1037,6 +1061,22 @@ space, string "urlify_", string (Int.toString i), + string "(uw_context,", + space, + p_typ env t, + space, + if isUnboxable t then + box [] + else + string "*", + string ");", + newline], + box [string "static", + space, + string "void", + space, + string "urlify_", + string (Int.toString i), string "(uw_context ctx,", space, p_typ env t, @@ -1153,6 +1193,17 @@ space, string "urlify_", string (Int.toString i), + string "(uw_context,", + space, + p_typ env t, + string ");", + newline], + box [string "static", + space, + string "void", + space, + string "urlify_", + string (Int.toString i), string "(uw_context ctx,", space, p_typ env t, @@ -1226,6 +1277,19 @@ space, string "urlifyl_", string (Int.toString i), + string "(uw_context,", + space, + string "struct __uws_", + string (Int.toString i), + space, + string "*);", + newline], + box [string "static", + space, + string "void", + space, + string "urlifyl_", + string (Int.toString i), string "(uw_context ctx,", space, string "struct __uws_", @@ -2323,8 +2387,10 @@ val (pds, env) = ListUtil.foldlMap (fn (d, env) => let val d' = p_decl env d + val hs = latestUrlHandlers () + val (protos, defs) = ListPair.unzip hs in - (box (List.revAppend (latestUrlHandlers (), [d'])), + (box (List.revAppend (protos, (List.revAppend (defs, [d'])))), E.declBinds env d) end) env ds @@ -2848,7 +2914,8 @@ in (p', latestUrlHandlers () @ handlers) end) [] ps - + val (protos, defs) = ListPair.unzip handlers + val hasDb = ref false val tables = ref [] val views = ref [] @@ -3120,7 +3187,8 @@ newline, newline, - box (rev handlers), + box (rev protos), + box (rev defs), string "static void uw_handle(uw_context ctx, char *request) {", newline,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/rpcNested.ur Sun Aug 21 10:55:31 2011 -0400 @@ -0,0 +1,16 @@ +datatype node + = Node of + { Label : string + , SubForest : list node + } + +fun getNode () : transaction node = + return (Node { Label = "foo", SubForest = [] }) + +fun main () : transaction page = return <xml><body> + <button onclick={ + n <- rpc (getNode ()); + case n of + Node {Label = l, ...} => alert ("l = " ^ l) + }/> + </body></xml>