[allow foreign exporting functions with unboxed arguments and return values
John Meacham <john@repetae.net>**20090227083138
 Ignore-this: d95bf53200e740bb1b3d7ebdabe2a1fb
] hunk ./E/FromHs.hs 516
-                (cn,rtt',rtt) <- lookupCType' dataTable rt'
+                ExtTypeBoxed cn rtt' rtt <- lookupExtTypeInfo dataTable rt'
hunk ./E/FromHs.hs 541
-        argCTys <- mapM (liftM (\(_,st,_) -> st) . lookupCType' dataTable) argTys
+        aets <- forM argTys $ \ty -> do
+            eti <- lookupExtTypeInfo dataTable ty
+            ty' <- case eti of
+                ExtTypeVoid -> fail "attempt to foreign export function with void argument"
+                ExtTypeRaw _ -> do return ty
+                ExtTypeBoxed _ ty' _  -> do return ty'
+            [v] <- newVars [ty']
+            e <- marshallFromC dataTable (EVar v) ty
+            return (e,v,ty')
hunk ./E/FromHs.hs 551
-        argTvrs <- newVars argCTys
-        argEs <- sequence [(marshallFromC dataTable (EVar v) et) | v <- argTvrs | et <- argTys]
+
+        let argEs   = [ e | (e,_,_) <- aets ]
+            argTvrs = [ v | (_,v,_) <- aets ]
+            argCTys = [ t | (_,_,t) <- aets ]
+--        argCTys <- mapM (liftM (\(_,st,_) -> st) . lookupCType' dataTable) argTys
+
+ --       argTvrs <- newVars argCTys
+--        argEs <- sequence [(marshallFromC dataTable (EVar v) et) | v <- argTvrs | et <- argTys]
hunk ./E/FromHs.hs 587
-    cDecl x@HsForeignExport {} = fail ("Unsupported foreign export: "++ show x)
-
hunk ./test/ffihello.hs 7
+import Jhc.Prim
hunk ./test/ffihello.hs 9
-putChar :: Char -> IO ()
+putChar :: Char__ -> IO ()
hunk ./test/ffihello.hs 12
-foreign import primitive "U2U" charToInt :: Char -> Int
+foreign import primitive "U2U" charToInt :: Char__ -> Int
hunk ./test/ffihello.hs 15
-foreign export ccall "myputc" putChar :: Char -> IO ()
+foreign export ccall "myputc" putChar :: Char__ -> IO ()
hunk ./test/ffihello.hs 20
-    mapM_ (callPutc p_putc) "Hello, World!"
-    c_putwchar (charToInt '\n')
+    mapM_ (callPutc p_putc) "Hello, World!\n"