bindings-0.0.1: src/Bindings/Utilities.hs
module Bindings.Utilities where
import Foreign.C
import Foreign
import Data.Int
newtype (Storable a) => GlobalVar a = GlobalVar (Ptr a)
setGlobalVar(GlobalVar p) v = poke p v
getGlobalVar (GlobalVar p) = peek p
class Callback f where
makeCallback :: f -> IO (FunPtr f)
freeCallback :: FunPtr f -> IO ()
withCallback :: f -> (FunPtr f -> IO a) -> IO a
freeCallback = freeHaskellFunPtr
withCallback fun action = do
funPtr <- makeCallback fun
result <- action funPtr
freeHaskellFunPtr funPtr
return result
type CallbackMaker a = a -> IO (FunPtr a)
type CB0001 a = Ptr a -> CInt -> Ptr CString -> Ptr CString -> IO CInt
foreign import ccall "wrapper" mkCB0001 :: CallbackMaker (CB0001 a)
instance Callback (CB0001 a) where
makeCallback = mkCB0001
type CB0002 = Ptr () -> Ptr () -> IO CInt
foreign import ccall "wrapper" mkCB0002 :: CallbackMaker CB0002
instance Callback CB0002 where
makeCallback = mkCB0002
type CB0003 a = Ptr a -> CInt -> IO CInt
foreign import ccall "wrapper" mkCB0003 :: CallbackMaker (CB0003 a)
instance Callback (CB0003 a) where
makeCallback = mkCB0003
type CB0004 a b = Ptr a -> Ptr b -> CInt -> CString -> IO ()
foreign import ccall "wrapper" mkCB0004 :: CallbackMaker (CB0004 a b)
instance Callback (CB0004 a b) where
makeCallback = mkCB0004
type CB0005 a = Ptr a -> IO CInt
foreign import ccall "wrapper" mkCB0005 :: CallbackMaker (CB0005 a)
instance Callback (CB0005 a) where
makeCallback = mkCB0005
type CB0006 a = Ptr a -> CInt -> CString -> CInt -> CString -> IO CInt
foreign import ccall "wrapper" mkCB0006 :: CallbackMaker (CB0006 a)
instance Callback (CB0006 a) where
makeCallback = mkCB0006
type CB0007 a b = Ptr a -> CInt -> Ptr (Ptr b) -> IO ()
foreign import ccall "wrapper" mkCB0007 :: CallbackMaker (CB0007 a b)
instance Callback (CB0007 a b) where
makeCallback = mkCB0007
type CB0008 a = Ptr a -> IO ()
foreign import ccall "wrapper" mkCB0008 :: CallbackMaker (CB0008 a)
instance Callback (CB0008 a) where
makeCallback = mkCB0008
type CB0009 a = Ptr a -> CInt -> CString -> CString ->
CString -> CString -> IO CInt
foreign import ccall "wrapper" mkCB0009 :: CallbackMaker (CB0009 a)
instance Callback (CB0009 a) where
makeCallback = mkCB0009
type CB000A a = Ptr a -> CInt -> CString -> CString ->
Data.Int.Int64 -> IO ()
foreign import ccall "wrapper" mkCB000A :: CallbackMaker (CB000A a)
instance Callback (CB000A a) where
makeCallback = mkCB000A
type CB000B = CInt -> IO ()
foreign import ccall "wrapper" mkCB000B :: CallbackMaker CB000B
instance Callback CB000B where
makeCallback = mkCB000B
type CB000C = IO ()
foreign import ccall "wrapper" mkCB000C :: CallbackMaker CB000C
instance Callback CB000C where
makeCallback = mkCB000C