From 4dd9404d036d89d53e096b2fccd395deffc8b094 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 3 Jan 2010 12:47:27 -0500 Subject: Proper C-side deserialization; Shake.sliceDb --- src/cjr_print.sml | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/cjr_print.sml') diff --git a/src/cjr_print.sml b/src/cjr_print.sml index 8c5a24b4..faf5f7b2 100644 --- a/src/cjr_print.sml +++ b/src/cjr_print.sml @@ -1863,7 +1863,7 @@ fun p_exp' par env (e, loc) = newline, string "})"] - | EUnurlify (e, t) => + | EUnurlify (e, t, true) => let fun getIt () = if isUnboxable t then @@ -1898,6 +1898,40 @@ fun p_exp' par env (e, loc) = string "})"] end + | EUnurlify (e, t, false) => + let + fun getIt () = + if isUnboxable t then + unurlify false env t + else + box [string "({", + newline, + p_typ env t, + string " *tmp = uw_malloc(ctx, sizeof(", + p_typ env t, + string "));", + newline, + string "*tmp = ", + unurlify false env t, + string ";", + newline, + string "tmp;", + newline, + string "})"] + in + box [string "({", + newline, + string "uw_Basis_string request = uw_maybe_strdup(ctx, ", + p_exp env e, + string ");", + newline, + newline, + unurlify false env t, + string ";", + newline, + string "})"] + end + and p_exp env = p_exp' false env fun p_fun env (fx, n, args, ran, e) = -- cgit v1.2.3