-- GENERATED by C->Haskell Compiler, version 0.14.6 Travelling Lightly, 28 Apr 2006 (Haskell) -- Edit the ORIGNAL .chs file instead! {-# LINE 1 "Calls.chs" #-}-- -*-haskell-*- module Main where import Monad import C2HS {-# LINE 9 "Calls.chs" #-} type TString = ((Ptr CChar)) {-# LINE 11 "Calls.chs" #-} type MyStringT = ((FunPtr (CInt -> (IO (Ptr CChar))))) -- extract a function type main :: IO () main = do let barfoo = bar foo {-# LINE 16 "Calls.chs" #-} baz foo barfoo printString MyString {-# LINE 18 "Calls.chs" #-} -- test typedef'ed args without argument variable in prototype printString2 MyString {-# LINE 20 "Calls.chs" #-} fooFun :: IO (Int) fooFun = fooFun'_ >>= \res -> let {res' = cIntConv res} in return (res') {-# LINE 22 "Calls.chs" #-} barFun :: Int -> Float barFun a1 = let {a1' = cIntConv a1} in let {res = barFun'_ a1'} in let {res' = cFloatConv res} in (res') {-# LINE 24 "Calls.chs" #-} bazFun :: Int -> Float -> IO () bazFun a1 a2 = let {a1' = cIntConv a1} in let {a2' = cFloatConv a2} in bazFun'_ a1' a2' >>= \res -> return () {-# LINE 26 "Calls.chs" #-} myStringFun :: IO (String) myStringFun = myStringFun'_ >>= \res -> peekCString res >>= \res' -> return (res') {-# LINE 28 "Calls.chs" #-} printStringFun :: String -> IO () printStringFun a1 = withCString a1 $ \a1' -> printStringFun'_ a1' >>= \res -> return () {-# LINE 30 "Calls.chs" #-} foobar :: String -> Float -> IO (Int, Int) foobar a1 a3 = withCStringLenIntConv a1 $ \(a1'1, a1'2) -> alloca $ \a2' -> let {a3' = cFloatConv a3} in foobar'_ a1'1 a1'2 a2' a3' >>= \res -> peekIntConv a2'>>= \a2'' -> let {res' = cIntConv res} in return (res', a2'') {-# LINE 35 "Calls.chs" #-} foreign import ccall safe "calls.h bar" bar :: (CInt -> CFloat) foreign import ccall safe "calls.h foo" foo :: CInt foreign import ccall unsafe "calls.h baz" baz :: (CInt -> (CFloat -> (IO ()))) foreign import ccall safe "calls.h printString" printString :: ((Ptr CChar) -> (IO ())) foreign import ccall safe "calls.h MyString" MyString :: (Ptr CChar) foreign import ccall safe "calls.h printString2" printString2 :: ((Ptr CChar) -> (IO ())) foreign import ccall safe "calls.h foo" fooFun'_ :: (IO CInt) foreign import ccall safe "calls.h bar" barFun'_ :: (CInt -> CFloat) foreign import ccall safe "calls.h baz" bazFun'_ :: (CInt -> (CFloat -> (IO ()))) foreign import ccall safe "calls.h MyString" myStringFun'_ :: (IO (Ptr CChar)) foreign import ccall safe "calls.h printString" printStringFun'_ :: ((Ptr CChar) -> (IO ())) foreign import ccall safe "calls.h foobar" foobar'_ :: ((Ptr CChar) -> (CInt -> ((Ptr CInt) -> (CFloat -> (IO CInt)))))