packages feed

wasmedge-hs-0.17.1.0: src/WasmEdge/Internal/FFI/Plugin.hs

{-# LANGUAGE ForeignFunctionInterface #-}

{- |
Module      : WasmEdge.Internal.FFI.Plugin
Description : Raw FFI for WasmEdge plugin context
Copyright   : (c) 2026 Tushar Adhatrao
License     : MIT
Stability   : internal
-}
module WasmEdge.Internal.FFI.Plugin
  ( c_PluginLoadWithDefaultPaths
  , c_PluginLoadFromPath
  , c_PluginListPluginsLength
  , c_PluginListPlugins
  , c_PluginFind
  , c_PluginGetPluginName
  , c_PluginListModuleLength
  , c_PluginListModule
  , c_PluginCreateModule
  , c_PluginInitWASINN
  ) where

import Data.Word (Word32)
import Foreign.C
import Foreign.Ptr

import WasmEdge.Internal.Storable (CString_)
import WasmEdge.Internal.Types

foreign import ccall unsafe "WasmEdge_PluginLoadWithDefaultPaths"
  c_PluginLoadWithDefaultPaths :: IO ()

foreign import ccall unsafe "WasmEdge_PluginLoadFromPath"
  c_PluginLoadFromPath :: CString -> IO ()

foreign import ccall unsafe "WasmEdge_PluginListPluginsLength"
  c_PluginListPluginsLength :: IO Word32

foreign import ccall unsafe "WasmEdge_PluginListPlugins"
  c_PluginListPlugins :: Ptr CString_ -> Word32 -> IO Word32

foreign import ccall unsafe "hs_WasmEdge_PluginFind"
  c_PluginFind :: Ptr CString_ -> IO (Ptr PluginTag)

foreign import ccall unsafe "hs_WasmEdge_PluginGetPluginName"
  c_PluginGetPluginName :: Ptr CString_ -> Ptr PluginTag -> IO ()

foreign import ccall unsafe "WasmEdge_PluginListModuleLength"
  c_PluginListModuleLength :: Ptr PluginTag -> IO Word32

foreign import ccall unsafe "WasmEdge_PluginListModule"
  c_PluginListModule :: Ptr PluginTag -> Ptr CString_ -> Word32 -> IO Word32

foreign import ccall unsafe "hs_WasmEdge_PluginCreateModule"
  c_PluginCreateModule :: Ptr PluginTag -> Ptr CString_ -> IO (Ptr ModuleInstanceTag)

foreign import ccall unsafe "WasmEdge_PluginInitWASINN"
  c_PluginInitWASINN :: Ptr CString -> Word32 -> IO ()