| Copyright | (c) 2026 Tushar Adhatrao |
|---|---|
| License | MIT |
| Stability | internal |
| Safe Haskell | None |
| Language | GHC2021 |
WasmEdge.Internal.FFI.Instance
Description
MemoryType, MemoryInstance, GlobalType, GlobalInstance, TagType (0.18+), TagInstance (0.18+), CallingFrame, ModuleInstance.
Synopsis
- c_FunctionTypeCreate :: Ptr CValType_ -> Word32 -> Ptr CValType_ -> Word32 -> IO (Ptr FunctionTypeTag)
- c_FunctionTypeDelete :: FunPtr (Ptr FunctionTypeTag -> IO ())
- c_FunctionTypeGetParametersLength :: Ptr FunctionTypeTag -> IO Word32
- c_FunctionTypeGetParameters :: Ptr FunctionTypeTag -> Ptr CValType_ -> Word32 -> IO Word32
- c_FunctionTypeGetReturnsLength :: Ptr FunctionTypeTag -> IO Word32
- c_FunctionTypeGetReturns :: Ptr FunctionTypeTag -> Ptr CValType_ -> Word32 -> IO Word32
- c_FunctionInstanceCreate :: Ptr FunctionTypeTag -> FunPtr RawHostFuncT -> Ptr () -> Word64 -> IO (Ptr FunctionInstanceTag)
- c_FunctionInstanceCreateBinding :: Ptr FunctionTypeTag -> FunPtr RawHostFuncT -> Ptr () -> Word64 -> IO (Ptr FunctionInstanceTag)
- c_FunctionInstanceDelete :: FunPtr (Ptr FunctionInstanceTag -> IO ())
- c_FunctionInstanceGetFunctionType :: Ptr FunctionInstanceTag -> IO (Ptr FunctionTypeTag)
- type RawHostFuncT = Ptr () -> Ptr CallingFrameTag -> Ptr () -> Word32 -> Ptr () -> Word32 -> Ptr CResult_ -> IO ()
- mkHostFuncWrapper :: RawHostFuncT -> IO (FunPtr RawHostFuncT)
- c_TableTypeCreate :: Ptr CValType_ -> CBool -> Word64 -> Word64 -> CBool -> CBool -> IO (Ptr TableTypeTag)
- c_TableTypeDelete :: FunPtr (Ptr TableTypeTag -> IO ())
- c_TableTypeGetRefType :: Ptr TableTypeTag -> Ptr CValType_ -> IO ()
- c_TableTypeGetLimit :: Ptr TableTypeTag -> IO (Ptr ())
- c_TableInstanceCreate :: Ptr TableTypeTag -> IO (Ptr TableInstanceTag)
- c_TableInstanceDelete :: FunPtr (Ptr TableInstanceTag -> IO ())
- c_TableInstanceGetTableType :: Ptr TableInstanceTag -> IO (Ptr TableTypeTag)
- c_TableInstanceGetData :: Ptr CResult_ -> Ptr TableInstanceTag -> Ptr CValue_ -> Word32 -> IO ()
- c_TableInstanceSetData :: Ptr CResult_ -> Ptr TableInstanceTag -> Ptr CValue_ -> Word32 -> IO ()
- c_TableInstanceGetSize :: Ptr TableInstanceTag -> IO Word32
- c_TableInstanceGrow :: Ptr CResult_ -> Ptr TableInstanceTag -> Word32 -> IO ()
- c_MemoryTypeCreate :: CBool -> Word64 -> Word64 -> CBool -> CBool -> IO (Ptr MemoryTypeTag)
- c_MemoryTypeDelete :: FunPtr (Ptr MemoryTypeTag -> IO ())
- c_MemoryTypeGetLimit :: Ptr MemoryTypeTag -> IO (Ptr ())
- c_MemoryInstanceCreate :: Ptr MemoryTypeTag -> IO (Ptr MemoryInstanceTag)
- c_MemoryInstanceDelete :: FunPtr (Ptr MemoryInstanceTag -> IO ())
- c_MemoryInstanceGetMemoryType :: Ptr MemoryInstanceTag -> IO (Ptr MemoryTypeTag)
- c_MemoryInstanceGetData :: Ptr CResult_ -> Ptr MemoryInstanceTag -> Ptr Word32 -> Word32 -> Word32 -> IO ()
- c_MemoryInstanceSetData :: Ptr CResult_ -> Ptr MemoryInstanceTag -> Ptr Word32 -> Word32 -> Word32 -> IO ()
- c_MemoryInstanceGetPointer :: Ptr MemoryInstanceTag -> Word32 -> Word32 -> IO (Ptr Word8)
- c_MemoryInstanceGetPointerConst :: Ptr MemoryInstanceTag -> Word32 -> Word32 -> IO (Ptr Word8)
- c_MemoryInstanceGetPageSize :: Ptr MemoryInstanceTag -> IO Word32
- c_MemoryInstanceGrowPage :: Ptr CResult_ -> Ptr MemoryInstanceTag -> Word32 -> IO ()
- c_GlobalTypeCreate :: Ptr CValType_ -> Word32 -> IO (Ptr GlobalTypeTag)
- c_GlobalTypeDelete :: FunPtr (Ptr GlobalTypeTag -> IO ())
- c_GlobalTypeGetValType :: Ptr GlobalTypeTag -> Ptr CValType_ -> IO ()
- c_GlobalTypeGetMutability :: Ptr GlobalTypeTag -> IO Word32
- c_GlobalInstanceCreate :: Ptr GlobalTypeTag -> Ptr CValue_ -> IO (Ptr GlobalInstanceTag)
- c_GlobalInstanceDelete :: FunPtr (Ptr GlobalInstanceTag -> IO ())
- c_GlobalInstanceGetGlobalType :: Ptr GlobalInstanceTag -> IO (Ptr GlobalTypeTag)
- c_GlobalInstanceGetValue :: Ptr CValue_ -> Ptr GlobalInstanceTag -> IO ()
- c_GlobalInstanceSetValue :: Ptr CResult_ -> Ptr GlobalInstanceTag -> Ptr CValue_ -> IO ()
- c_CallingFrameGetExecutor :: Ptr CallingFrameTag -> IO (Ptr ExecutorTag)
- c_CallingFrameGetModuleInstance :: Ptr CallingFrameTag -> IO (Ptr ModuleInstanceTag)
- c_CallingFrameGetMemoryInstance :: Ptr CallingFrameTag -> Word32 -> IO (Ptr MemoryInstanceTag)
- c_ModuleInstanceCreate :: Ptr CString_ -> IO (Ptr ModuleInstanceTag)
- c_ModuleInstanceCreateWithData :: Ptr CString_ -> Ptr () -> FunPtr (Ptr () -> IO ()) -> IO (Ptr ModuleInstanceTag)
- c_ModuleInstanceCreateWASI :: Ptr CString -> Word32 -> Ptr CString -> Word32 -> Ptr CString -> Word32 -> IO (Ptr ModuleInstanceTag)
- c_ModuleInstanceDelete :: FunPtr (Ptr ModuleInstanceTag -> IO ())
- c_ModuleInstanceInitWASI :: Ptr ModuleInstanceTag -> Ptr CString -> Word32 -> Ptr CString -> Word32 -> Ptr CString -> Word32 -> IO ()
- c_ModuleInstanceWASIGetExitCode :: Ptr ModuleInstanceTag -> IO Word32
- c_ModuleInstanceWASIGetNativeHandler :: Ptr ModuleInstanceTag -> Word32 -> Ptr Word64 -> IO CBool
- c_ModuleInstanceGetModuleName :: Ptr CString_ -> Ptr ModuleInstanceTag -> IO ()
- c_ModuleInstanceFindFunction :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr FunctionInstanceTag)
- c_ModuleInstanceFindTable :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr TableInstanceTag)
- c_ModuleInstanceFindMemory :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr MemoryInstanceTag)
- c_ModuleInstanceFindGlobal :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr GlobalInstanceTag)
- c_ModuleInstanceListFunctionLength :: Ptr ModuleInstanceTag -> IO Word32
- c_ModuleInstanceListFunction :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32
- c_ModuleInstanceListTableLength :: Ptr ModuleInstanceTag -> IO Word32
- c_ModuleInstanceListTable :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32
- c_ModuleInstanceListMemoryLength :: Ptr ModuleInstanceTag -> IO Word32
- c_ModuleInstanceListMemory :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32
- c_ModuleInstanceListGlobalLength :: Ptr ModuleInstanceTag -> IO Word32
- c_ModuleInstanceListGlobal :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32
- c_LimitGetInfo :: Ptr () -> Ptr CBool -> Ptr Word64 -> Ptr Word64 -> Ptr CBool -> Ptr CBool -> IO ()
- c_TagTypeGetFunctionType :: Ptr TagTypeTag -> IO (Ptr FunctionTypeTag)
- c_TagInstanceGetTagType :: Ptr TagInstanceTag -> IO (Ptr TagTypeTag)
- c_ModuleInstanceFindTag :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr TagInstanceTag)
- c_ModuleInstanceListTagLength :: Ptr ModuleInstanceTag -> IO Word32
- c_ModuleInstanceListTag :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32
- c_ModuleInstanceAddFunction :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr FunctionInstanceTag -> IO ()
- c_ModuleInstanceAddTable :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr TableInstanceTag -> IO ()
- c_ModuleInstanceAddMemory :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr MemoryInstanceTag -> IO ()
- c_ModuleInstanceAddGlobal :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr GlobalInstanceTag -> IO ()
FunctionType
c_FunctionTypeCreate :: Ptr CValType_ -> Word32 -> Ptr CValType_ -> Word32 -> IO (Ptr FunctionTypeTag) #
c_FunctionTypeDelete :: FunPtr (Ptr FunctionTypeTag -> IO ()) #
c_FunctionTypeGetParameters :: Ptr FunctionTypeTag -> Ptr CValType_ -> Word32 -> IO Word32 #
c_FunctionTypeGetReturns :: Ptr FunctionTypeTag -> Ptr CValType_ -> Word32 -> IO Word32 #
FunctionInstance
c_FunctionInstanceCreate :: Ptr FunctionTypeTag -> FunPtr RawHostFuncT -> Ptr () -> Word64 -> IO (Ptr FunctionInstanceTag) #
c_FunctionInstanceCreateBinding :: Ptr FunctionTypeTag -> FunPtr RawHostFuncT -> Ptr () -> Word64 -> IO (Ptr FunctionInstanceTag) #
Create a host function instance.
c_FunctionInstanceDelete :: FunPtr (Ptr FunctionInstanceTag -> IO ()) #
Host function callback type
type RawHostFuncT = Ptr () -> Ptr CallingFrameTag -> Ptr () -> Word32 -> Ptr () -> Word32 -> Ptr CResult_ -> IO () #
The raw C type of a WasmEdge host function callback:
WasmEdge_Result callback(void* data, const WasmEdge_CallingFrameContext*,
const WasmEdge_Value* params, uint32_t param_len,
WasmEdge_Value* returns, uint32_t return_len)
We use 'Ptr ()' for the value arrays since WasmEdge_Value is opaque at this level; the public API converts them.
This callback is safe because it calls back into Haskell.
mkHostFuncWrapper :: RawHostFuncT -> IO (FunPtr RawHostFuncT) #
Wrap a Haskell RawHostFuncT into a C function pointer.
The returned FunPtr must be freed with freeHaskellFunPtr when
the function instance is deleted.
TableType
c_TableTypeCreate :: Ptr CValType_ -> CBool -> Word64 -> Word64 -> CBool -> CBool -> IO (Ptr TableTypeTag) #
Create a TableType.
c_TableTypeDelete :: FunPtr (Ptr TableTypeTag -> IO ()) #
c_TableTypeGetRefType :: Ptr TableTypeTag -> Ptr CValType_ -> IO () #
c_TableTypeGetLimit :: Ptr TableTypeTag -> IO (Ptr ()) #
Get the limit of a table type. Returns (hasMax, min, max). We call the individual getter functions.
TableInstance
c_TableInstanceDelete :: FunPtr (Ptr TableInstanceTag -> IO ()) #
c_TableInstanceGetData :: Ptr CResult_ -> Ptr TableInstanceTag -> Ptr CValue_ -> Word32 -> IO () #
c_TableInstanceSetData :: Ptr CResult_ -> Ptr TableInstanceTag -> Ptr CValue_ -> Word32 -> IO () #
c_TableInstanceGrow :: Ptr CResult_ -> Ptr TableInstanceTag -> Word32 -> IO () #
MemoryType
c_MemoryTypeCreate :: CBool -> Word64 -> Word64 -> CBool -> CBool -> IO (Ptr MemoryTypeTag) #
c_MemoryTypeDelete :: FunPtr (Ptr MemoryTypeTag -> IO ()) #
c_MemoryTypeGetLimit :: Ptr MemoryTypeTag -> IO (Ptr ()) #
MemoryInstance
c_MemoryInstanceDelete :: FunPtr (Ptr MemoryInstanceTag -> IO ()) #
c_MemoryInstanceGetData :: Ptr CResult_ -> Ptr MemoryInstanceTag -> Ptr Word32 -> Word32 -> Word32 -> IO () #
c_MemoryInstanceSetData :: Ptr CResult_ -> Ptr MemoryInstanceTag -> Ptr Word32 -> Word32 -> Word32 -> IO () #
c_MemoryInstanceGetPointer :: Ptr MemoryInstanceTag -> Word32 -> Word32 -> IO (Ptr Word8) #
c_MemoryInstanceGetPointerConst :: Ptr MemoryInstanceTag -> Word32 -> Word32 -> IO (Ptr Word8) #
c_MemoryInstanceGrowPage :: Ptr CResult_ -> Ptr MemoryInstanceTag -> Word32 -> IO () #
GlobalType
c_GlobalTypeCreate :: Ptr CValType_ -> Word32 -> IO (Ptr GlobalTypeTag) #
c_GlobalTypeDelete :: FunPtr (Ptr GlobalTypeTag -> IO ()) #
c_GlobalTypeGetValType :: Ptr GlobalTypeTag -> Ptr CValType_ -> IO () #
GlobalInstance
c_GlobalInstanceCreate :: Ptr GlobalTypeTag -> Ptr CValue_ -> IO (Ptr GlobalInstanceTag) #
c_GlobalInstanceDelete :: FunPtr (Ptr GlobalInstanceTag -> IO ()) #
c_GlobalInstanceGetValue :: Ptr CValue_ -> Ptr GlobalInstanceTag -> IO () #
c_GlobalInstanceSetValue :: Ptr CResult_ -> Ptr GlobalInstanceTag -> Ptr CValue_ -> IO () #
CallingFrame
ModuleInstance
c_ModuleInstanceCreate :: Ptr CString_ -> IO (Ptr ModuleInstanceTag) #
c_ModuleInstanceCreateWithData :: Ptr CString_ -> Ptr () -> FunPtr (Ptr () -> IO ()) -> IO (Ptr ModuleInstanceTag) #
Create with host data and a finalizer for the data.
c_ModuleInstanceCreateWASI :: Ptr CString -> Word32 -> Ptr CString -> Word32 -> Ptr CString -> Word32 -> IO (Ptr ModuleInstanceTag) #
c_ModuleInstanceDelete :: FunPtr (Ptr ModuleInstanceTag -> IO ()) #
c_ModuleInstanceInitWASI :: Ptr ModuleInstanceTag -> Ptr CString -> Word32 -> Ptr CString -> Word32 -> Ptr CString -> Word32 -> IO () #
c_ModuleInstanceWASIGetNativeHandler :: Ptr ModuleInstanceTag -> Word32 -> Ptr Word64 -> IO CBool #
c_ModuleInstanceGetModuleName :: Ptr CString_ -> Ptr ModuleInstanceTag -> IO () #
c_ModuleInstanceFindFunction :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr FunctionInstanceTag) #
c_ModuleInstanceListFunction :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32 #
c_ModuleInstanceListTable :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32 #
c_ModuleInstanceListMemory :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32 #
c_ModuleInstanceListGlobal :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32 #
Limit helper
c_LimitGetInfo :: Ptr () -> Ptr CBool -> Ptr Word64 -> Ptr Word64 -> Ptr CBool -> Ptr CBool -> IO () #
Inspect limit info via our C helper
TagType (0.18+)
TagInstance (0.18+)
c_TagInstanceGetTagType :: Ptr TagInstanceTag -> IO (Ptr TagTypeTag) #
ModuleInstance tag operations
c_ModuleInstanceFindTag :: Ptr ModuleInstanceTag -> Ptr CString_ -> IO (Ptr TagInstanceTag) #
c_ModuleInstanceListTag :: Ptr ModuleInstanceTag -> Ptr CString_ -> Word32 -> IO Word32 #
c_ModuleInstanceAddFunction :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr FunctionInstanceTag -> IO () #
Add a FunctionInstance to a ModuleInstance (moves ownership into module).
c_ModuleInstanceAddTable :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr TableInstanceTag -> IO () #
c_ModuleInstanceAddMemory :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr MemoryInstanceTag -> IO () #
c_ModuleInstanceAddGlobal :: Ptr ModuleInstanceTag -> Ptr CString_ -> Ptr GlobalInstanceTag -> IO () #