diff src/cjr_print.sml @ 922:d6a71f19a3d8

Find chances to use mstrcat()
author Adam Chlipala <adamc@hcoop.net>
date Wed, 09 Sep 2009 08:15:46 -0400
parents 7a4b026e45dd
children be6585b4058b
line wrap: on
line diff
--- a/src/cjr_print.sml	Wed Sep 09 08:00:45 2009 -0400
+++ b/src/cjr_print.sml	Wed Sep 09 08:15:46 2009 -0400
@@ -1468,6 +1468,24 @@
       | EApp ((EReturnBlob {blob, mimeType, t = (TFun (_, ran), _)}, loc), _) =>
         p_exp env (EReturnBlob {blob = blob, mimeType = mimeType, t = ran}, loc)
 
+      | EFfiApp ("Basis", "strcat", [e1, e2]) =>
+        let
+            fun flatten e =
+                case #1 e of
+                    EFfiApp ("Basis", "strcat", [e1, e2]) => flatten e1 @ flatten e2
+                  | _ => [e]
+        in
+            case flatten e1 @ flatten e2 of
+                [e1, e2] => box [string "uw_Basis_strcat(ctx, ",
+                                 p_exp env e1,
+                                 string ",",
+                                 p_exp env e2,
+                                 string ")"]
+              | es => box [string "uw_Basis_mstrcat(ctx, ",
+                           p_list (p_exp env) es,
+                           string ", NULL)"]
+        end
+
       | EFfiApp (m, x, []) => box [string "uw_",
                                    p_ident m,
                                    string "_",