-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Runtime for fficxx-generated library -- -- Runtime for fficxx-generated library. fficxx is an automatic haskell -- Foreign Function Interface (FFI) generator to C++. @package fficxx-runtime @version 0.6 module FFICXX.Runtime.Cast class IsRawType a class Castable a b cast :: Castable a b => a -> (b -> IO r) -> IO r uncast :: Castable a b => b -> (a -> IO r) -> IO r class FPtr a where { type family Raw a :: *; } get_fptr :: FPtr a => a -> Ptr (Raw a) cast_fptr_to_obj :: FPtr a => Ptr (Raw a) -> a class FunPtrWrappable a where { type family FunPtrHsType a :: *; type family FunPtrType a :: *; data family FunPtrWrapped a :: *; } fptrWrap :: FunPtrWrappable a => FunPtrWrapped a -> IO (FunPtr (FunPtrType a)) wrap :: FunPtrWrappable a => FunPtrHsType a -> FunPtrWrapped a class IsCType a xformnull :: Castable a ca => IO ca -> IO a xform0 :: (Castable a ca, Castable y cy) => (ca -> IO cy) -> a -> IO y xform1 :: (Castable a ca, Castable x1 cx1, Castable y cy) => (ca -> cx1 -> IO cy) -> a -> x1 -> IO y xform2 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) => (ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y xform3 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> IO cy) -> a -> x1 -> x2 -> x3 -> IO y xform4 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> IO y xform5 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> IO y xform6 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable x6 cx6, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> cx6 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> x6 -> IO y xform7 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable x6 cx6, Castable x7 cx7, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> cx6 -> cx7 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> x6 -> x7 -> IO y xform8 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable x6 cx6, Castable x7 cx7, Castable x8 cx8, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> cx6 -> cx7 -> cx8 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> x6 -> x7 -> x8 -> IO y xform9 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable x6 cx6, Castable x7 cx7, Castable x8 cx8, Castable x9 cx9, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> cx6 -> cx7 -> cx8 -> cx9 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> x6 -> x7 -> x8 -> x9 -> IO y xform10 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable x6 cx6, Castable x7 cx7, Castable x8 cx8, Castable x9 cx9, Castable x10 cx10, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> cx6 -> cx7 -> cx8 -> cx9 -> cx10 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> x6 -> x7 -> x8 -> x9 -> x10 -> IO y xform11 :: (Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3, Castable x4 cx4, Castable x5 cx5, Castable x6 cx6, Castable x7 cx7, Castable x8 cx8, Castable x9 cx9, Castable x10 cx10, Castable x11 cx11, Castable y cy) => (ca -> cx1 -> cx2 -> cx3 -> cx4 -> cx5 -> cx6 -> cx7 -> cx8 -> cx9 -> cx10 -> cx11 -> IO cy) -> a -> x1 -> x2 -> x3 -> x4 -> x5 -> x6 -> x7 -> x8 -> x9 -> x10 -> x11 -> IO y instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CBool instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CChar instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CClock instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CDouble instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CFile instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CFloat instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CFpos instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CInt instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CIntMax instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CIntPtr instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CJmpBuf instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CLLong instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CLong instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CPtrdiff instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CSChar instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CSUSeconds instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CShort instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CSigAtomic instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CSize instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CTime instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CUChar instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CUInt instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CUIntMax instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CUIntPtr instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CULLong instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CULong instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CUSeconds instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CUShort instance FFICXX.Runtime.Cast.IsCType Foreign.C.Types.CWchar instance FFICXX.Runtime.Cast.IsCType Foreign.C.String.CString instance FFICXX.Runtime.Cast.IsCType GHC.Int.Int8 instance FFICXX.Runtime.Cast.IsCType GHC.Int.Int16 instance FFICXX.Runtime.Cast.IsCType GHC.Int.Int32 instance FFICXX.Runtime.Cast.IsCType GHC.Int.Int64 instance FFICXX.Runtime.Cast.IsCType GHC.Word.Word8 instance FFICXX.Runtime.Cast.IsCType GHC.Word.Word16 instance FFICXX.Runtime.Cast.IsCType GHC.Word.Word32 instance FFICXX.Runtime.Cast.IsCType GHC.Word.Word64 instance FFICXX.Runtime.Cast.Castable () () instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CBool Foreign.C.Types.CBool instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CChar Foreign.C.Types.CChar instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CClock Foreign.C.Types.CClock instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CDouble Foreign.C.Types.CDouble instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CFile Foreign.C.Types.CFile instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CFloat Foreign.C.Types.CFloat instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CFpos Foreign.C.Types.CFpos instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CInt Foreign.C.Types.CInt instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CIntMax Foreign.C.Types.CIntMax instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CIntPtr Foreign.C.Types.CIntPtr instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CJmpBuf Foreign.C.Types.CJmpBuf instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CLLong Foreign.C.Types.CLLong instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CLong Foreign.C.Types.CLong instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CPtrdiff Foreign.C.Types.CPtrdiff instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CSChar Foreign.C.Types.CSChar instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CSUSeconds Foreign.C.Types.CSUSeconds instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CShort Foreign.C.Types.CShort instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CSigAtomic Foreign.C.Types.CSigAtomic instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CSize Foreign.C.Types.CSize instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CTime Foreign.C.Types.CTime instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CUChar Foreign.C.Types.CUChar instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CUInt Foreign.C.Types.CUInt instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CUIntMax Foreign.C.Types.CUIntMax instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CUIntPtr Foreign.C.Types.CUIntPtr instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CULLong Foreign.C.Types.CULLong instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CULong Foreign.C.Types.CULong instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CUSeconds Foreign.C.Types.CUSeconds instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CUShort Foreign.C.Types.CUShort instance FFICXX.Runtime.Cast.Castable Foreign.C.Types.CWchar Foreign.C.Types.CWchar instance FFICXX.Runtime.Cast.Castable GHC.Int.Int8 GHC.Int.Int8 instance FFICXX.Runtime.Cast.Castable GHC.Int.Int16 GHC.Int.Int16 instance FFICXX.Runtime.Cast.Castable GHC.Int.Int32 GHC.Int.Int32 instance FFICXX.Runtime.Cast.Castable GHC.Int.Int64 GHC.Int.Int64 instance FFICXX.Runtime.Cast.Castable GHC.Word.Word8 GHC.Word.Word8 instance FFICXX.Runtime.Cast.Castable GHC.Word.Word16 GHC.Word.Word16 instance FFICXX.Runtime.Cast.Castable GHC.Word.Word32 GHC.Word.Word32 instance FFICXX.Runtime.Cast.Castable GHC.Word.Word64 GHC.Word.Word64 instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.Types.CInt) (GHC.Ptr.Ptr Foreign.C.Types.CInt) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.Types.CChar) (GHC.Ptr.Ptr Foreign.C.Types.CChar) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.Types.CUInt) (GHC.Ptr.Ptr Foreign.C.Types.CUInt) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.Types.CULong) (GHC.Ptr.Ptr Foreign.C.Types.CULong) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.Types.CLong) (GHC.Ptr.Ptr Foreign.C.Types.CLong) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.Types.CDouble) (GHC.Ptr.Ptr Foreign.C.Types.CDouble) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr Foreign.C.String.CString) (GHC.Ptr.Ptr Foreign.C.String.CString) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.Ptr ()) (GHC.Ptr.Ptr ()) instance FFICXX.Runtime.Cast.Castable GHC.Types.Int Foreign.C.Types.CInt instance FFICXX.Runtime.Cast.Castable GHC.Int.Int16 Foreign.C.Types.CShort instance FFICXX.Runtime.Cast.Castable GHC.Int.Int8 Foreign.C.Types.CChar instance FFICXX.Runtime.Cast.Castable GHC.Types.Word Foreign.C.Types.CUInt instance FFICXX.Runtime.Cast.Castable GHC.Word.Word8 Foreign.C.Types.CChar instance FFICXX.Runtime.Cast.Castable GHC.Types.Double Foreign.C.Types.CDouble instance FFICXX.Runtime.Cast.Castable [GHC.Types.Double] (GHC.Ptr.Ptr Foreign.C.Types.CDouble) instance FFICXX.Runtime.Cast.Castable [GHC.Types.Int] (GHC.Ptr.Ptr Foreign.C.Types.CInt) instance FFICXX.Runtime.Cast.Castable Data.ByteString.Internal.ByteString Foreign.C.String.CString instance FFICXX.Runtime.Cast.Castable [Data.ByteString.Internal.ByteString] (GHC.Ptr.Ptr Foreign.C.String.CString) module FFICXX.Runtime.CodeGen.Cxx newtype HeaderName HdrName :: String -> HeaderName [unHdrName] :: HeaderName -> String newtype Namespace NS :: String -> Namespace [unNamespace] :: Namespace -> String data PragmaParam Once :: PragmaParam -- | parts for interpolation newtype NamePart (f :: * -> *) NamePart :: String -> NamePart (f :: * -> *) newtype CName (f :: * -> *) CName :: [NamePart f] -> CName (f :: * -> *) sname :: String -> CName Identity renderCName :: CName Identity -> String -- | Types data CType (f :: * -> *) CTVoid :: CType (f :: * -> *) CTSimple :: CName f -> CType (f :: * -> *) CTStar :: CType f -> CType (f :: * -> *) CTAuto :: CType (f :: * -> *) CTTApp :: CName f -> [CType f] -> CType (f :: * -> *) CTConst :: CType f -> CType (f :: * -> *) CTScoped :: CType f -> CType f -> CType (f :: * -> *) CTVerbatim :: String -> CType (f :: * -> *) -- | Operators data COp CArrow :: COp CAssign :: COp renderCOp :: COp -> String data CExp (f :: * -> *) -- | variable CVar :: CName f -> CExp (f :: * -> *) -- | C function app: f(a1,a2,..) CApp :: CExp f -> [CExp f] -> CExp (f :: * -> *) -- | template app : fT1,T2,..(a1,a2,..) CTApp :: CName f -> [CType f] -> [CExp f] -> CExp (f :: * -> *) -- | binary operator: x op y CBinOp :: COp -> CExp f -> CExp f -> CExp (f :: * -> *) -- | (type)exp CCast :: CType f -> CExp f -> CExp (f :: * -> *) -- | &(exp) CAddr :: CExp f -> CExp (f :: * -> *) -- | CStar :: CExp f -> CExp (f :: * -> *) -- | new operator: new Cstr(a1,a2,...) CNew :: CName f -> [CExp f] -> CExp (f :: * -> *) -- | new operator for template class: new CstrT1,T2,..(a1,a2,..) CTNew :: CName f -> [CType f] -> [CExp f] -> CExp (f :: * -> *) -- | new operator for inner class of template class: new -- CstrT1,T2,..::inner(a1,a2,..) -- TODO: make a generalization CTNewI :: CName f -> CName f -> [CType f] -> [CExp f] -> CExp (f :: * -> *) -- | macro function at expression level CEMacroApp :: CName f -> [CName f] -> CExp (f :: * -> *) -- | verbatim CEVerbatim :: String -> CExp (f :: * -> *) -- | empty C expression. (for convenience) CNull :: CExp (f :: * -> *) data CFunDecl (f :: * -> *) -- | type func( type1 arg1, type2 arg2, ... ) CFunDecl :: CType f -> CName f -> [(CType f, CName f)] -> CFunDecl (f :: * -> *) data CVarDecl (f :: * -> *) CVarDecl :: CType f -> CName f -> CVarDecl (f :: * -> *) data CQual Inline :: CQual data CStatement (f :: * -> *) -- | using namespace namespace; UsingNamespace :: Namespace -> CStatement (f :: * -> *) -- | typedef origtype newname; TypeDef :: CType f -> CName f -> CStatement (f :: * -> *) -- | C expression standalone; CExpSA :: CExp f -> CStatement (f :: * -> *) -- | function declaration; CDeclaration :: CFunDecl f -> CStatement (f :: * -> *) -- | function definition; CDefinition :: Maybe CQual -> CFunDecl f -> [CStatement f] -> CStatement (f :: * -> *) -- | variable initialization; CInit :: CVarDecl f -> CExp f -> CStatement (f :: * -> *) -- | return statement; CReturn :: CExp f -> CStatement (f :: * -> *) -- | delete statement; CDelete :: CExp f -> CStatement (f :: * -> *) -- | C Macro application at statement level (temporary) CMacroApp :: CName f -> [CName f] -> CStatement (f :: * -> *) -- | extern C {..} CExtern :: [CStatement f] -> CStatement (f :: * -> *) -- | comment Comment :: String -> CStatement (f :: * -> *) -- | for convenience CEmptyLine :: CStatement (f :: * -> *) -- | temporary verbatim CVerbatim :: String -> CStatement (f :: * -> *) data CMacro (f :: * -> *) -- | regular C++ statement CRegular :: CStatement f -> CMacro (f :: * -> *) -- | #include "header" Include :: HeaderName -> CMacro (f :: * -> *) -- | #pragma Pragma :: PragmaParam -> CMacro (f :: * -> *) -- | #undef name Undef :: CName f -> CMacro (f :: * -> *) -- | #define macro (type) definition Define :: CName f -> [CName f] -> [CStatement f] -> CMacro (f :: * -> *) -- | just for convenience EmptyLine :: CMacro (f :: * -> *) -- | temporary verbatim Verbatim :: String -> CMacro (f :: * -> *) data CBlock (f :: * -> *) ExternC :: [CMacro f] -> CBlock (f :: * -> *) renderPragmaParam :: PragmaParam -> String renderCType :: CType Identity -> String renderCExp :: CExp Identity -> String renderCQual :: CQual -> String renderCFDecl :: CFunDecl Identity -> String renderCVDecl :: CVarDecl Identity -> String -- | render CStatement in a regular environment renderCStmt :: CStatement Identity -> String -- | render CStatement in a macro definition environment renderCStmtInMacro :: CStatement Identity -> [String] renderCMacro :: CMacro Identity -> String renderBlock :: CBlock Identity -> String instance GHC.Classes.Ord FFICXX.Runtime.CodeGen.Cxx.HeaderName instance GHC.Classes.Eq FFICXX.Runtime.CodeGen.Cxx.HeaderName instance GHC.Show.Show FFICXX.Runtime.CodeGen.Cxx.HeaderName instance Data.Hashable.Class.Hashable FFICXX.Runtime.CodeGen.Cxx.HeaderName instance GHC.Classes.Ord FFICXX.Runtime.CodeGen.Cxx.Namespace instance GHC.Classes.Eq FFICXX.Runtime.CodeGen.Cxx.Namespace instance GHC.Show.Show FFICXX.Runtime.CodeGen.Cxx.Namespace instance Data.String.IsString FFICXX.Runtime.CodeGen.Cxx.Namespace instance Data.String.IsString FFICXX.Runtime.CodeGen.Cxx.HeaderName module FFICXX.Runtime.Function.Template data RawFunction t newtype Function t Function :: Ptr (RawFunction t) -> Function t class IFunction t newFunction :: IFunction t => FunPtr t -> IO (Function t) call :: IFunction t => Function t -> t deleteFunction :: IFunction t => Function t -> IO () class FunPtrWrapper t wrapFunPtr :: FunPtrWrapper t => t -> IO (FunPtr t) instance FFICXX.Runtime.Cast.FPtr (FFICXX.Runtime.Function.Template.Function t) instance FFICXX.Runtime.Cast.Castable (FFICXX.Runtime.Function.Template.Function t) (GHC.Ptr.Ptr (FFICXX.Runtime.Function.Template.RawFunction t)) instance FFICXX.Runtime.Cast.Castable (GHC.Ptr.FunPtr t) (GHC.Ptr.FunPtr t) module FFICXX.Runtime.TH -- | Primitive C type like int, double should be treated differently than -- Non-primitive type. The primitive type detection is not yet automatic. -- So we manually mark template instantiation with this boolean -- parameter. data IsCPrimitive CPrim :: IsCPrimitive NonCPrim :: IsCPrimitive -- | template parameter: A,B,.. in TA,B.. data TemplateParamInfo TPInfo :: String -> [HeaderName] -> [Namespace] -> String -> TemplateParamInfo [tpinfoCxxType] :: TemplateParamInfo -> String [tpinfoCxxHeaders] :: TemplateParamInfo -> [HeaderName] [tpinfoCxxNamespaces] :: TemplateParamInfo -> [Namespace] [tpinfoSuffix] :: TemplateParamInfo -> String -- | function pointer parameter A(B,C,..) in std::functionA(B,C,..) data FunctionParamInfo FPInfo :: [(String, String)] -> Maybe String -> [HeaderName] -> [Namespace] -> String -> FunctionParamInfo [fpinfoCxxArgTypes] :: FunctionParamInfo -> [(String, String)] [fpinfoCxxRetType] :: FunctionParamInfo -> Maybe String [fpinfoCxxHeaders] :: FunctionParamInfo -> [HeaderName] [fpinfoCxxNamespaces] :: FunctionParamInfo -> [Namespace] [fpinfoSuffix] :: FunctionParamInfo -> String con :: String -> Type mkInstance :: Cxt -> Type -> [Dec] -> Dec mkTFunc :: (types, String, String -> String, types -> Q Type) -> Q Exp mkMember :: String -> (types -> String -> Q Exp) -> types -> String -> Q Dec mkNew :: String -> (types -> String -> Q Exp) -> types -> String -> Q Dec mkDelete :: String -> (types -> String -> Q Exp) -> types -> String -> Q Dec -- | utility function for converting . to '_' dot2_ :: String -> String instance GHC.Show.Show FFICXX.Runtime.TH.IsCPrimitive instance GHC.Show.Show FFICXX.Runtime.TH.TemplateParamInfo instance GHC.Show.Show FFICXX.Runtime.TH.FunctionParamInfo module FFICXX.Runtime.Function.TH mkWrapper :: (Type, String) -> Q Dec t_newFunction :: Type -> String -> Q Exp t_call :: Type -> String -> Q Exp t_deleteFunction :: Type -> String -> Q Exp genFunctionInstanceFor :: Q Type -> FunctionParamInfo -> Q [Dec]