diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-03-08 13:41:55 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-03-08 13:41:55 -0400 |
commit | d8d9309a0242408460488de0c44029d74c7b3113 (patch) | |
tree | 340a1e5251d1a16874ce49b5edf487714f45ff7b /src | |
parent | 654a4218e5122728bcd17bf3cc85e575cdd4fbdc (diff) |
RPC returning an option
Diffstat (limited to 'src')
-rw-r--r-- | src/cjr_print.sml | 50 | ||||
-rw-r--r-- | src/jscomp.sml | 2 |
2 files changed, 23 insertions, 29 deletions
diff --git a/src/cjr_print.sml b/src/cjr_print.sml index 73024aa5..aff5efd3 100644 --- a/src/cjr_print.sml +++ b/src/cjr_print.sml @@ -1087,42 +1087,36 @@ fun urlify env t = newline] end - | TOption t => box [] - (*box [string "(request[0] == '/' ? ++request : request, ", - string "((!strncmp(request, \"None\", 4) ", - string "&& (request[4] == 0 || request[4] == '/')) ", - string "? (request += 4, NULL) ", - string ": ((!strncmp(request, \"Some\", 4) ", - string "&& request[4] == '/') ", - string "? (request += 5, ", - if isUnboxable t then - unurlify' rf (#1 t) - else - box [string "({", + | TOption t => + box [string "if (it", + string (Int.toString level), + string ") {", + if isUnboxable t then + box [string "uw_write(ctx, \"Some/\");", newline, - p_typ env t, - space, - string "*tmp", - space, - string "=", + urlify' rf level t] + else + box [p_typ env t, space, - string "uw_malloc(ctx, sizeof(", - p_typ env t, - string "));", - newline, - string "*tmp", + string "it", + string (Int.toString (level + 1)), space, string "=", space, - unurlify' rf (#1 t), + string "*it", + string (Int.toString level), string ";", newline, - string "tmp;", + string "uw_write(ctx, \"Some/\");", newline, - string "})"], - string ") :", - space, - string "(uw_error(ctx, FATAL, \"Error unurlifying option type\"), NULL))))"]*) + urlify' rf (level + 1) t, + string ";", + newline], + string "} else {", + box [string "uw_write(ctx, \"None\");", + newline], + string "}", + newline] | _ => (ErrorMsg.errorAt loc "Unable to choose a URL encoding function"; space) diff --git a/src/jscomp.sml b/src/jscomp.sml index 1a85bba2..23b6e936 100644 --- a/src/jscomp.sml +++ b/src/jscomp.sml @@ -338,7 +338,7 @@ fun process file = @ ["}"]), st) end - | TFfi ("Basis", "string") => ("decode(t[i++])", st) + | TFfi ("Basis", "string") => ("unescape(t[i++])", st) | TFfi ("Basis", "int") => ("parseInt(t[i++])", st) | TFfi ("Basis", "float") => ("parseFloat(t[i++])", st) |