-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Extism bindings -- -- Bindings to Extism, the universal plugin system @package extism @version 1.2.0.1 -- | Extism.Encoding handles how values are encoded to be copied in and out -- of Wasm linear memory module Extism.Encoding -- | Helper function to convert a ByteString to a String fromByteString :: ByteString -> String -- | Helper function to convert a String to a ByteString toByteString :: String -> ByteString -- | Extism error newtype Error ExtismError :: String -> Error -- | Result type type Result a = Either Error a class ToBytes a toBytes :: ToBytes a => a -> ByteString class FromBytes a fromBytes :: FromBytes a => ByteString -> Result a class (ToBytes a, FromBytes a) => Encoding a newtype JSON x JSON :: x -> JSON x instance GHC.Classes.Eq Extism.Encoding.Error instance Extism.Encoding.FromBytes Data.ByteString.Internal.Type.ByteString instance Extism.Encoding.FromBytes GHC.Types.Double instance Extism.Encoding.FromBytes GHC.Types.Float instance Extism.Encoding.FromBytes GHC.Int.Int32 instance Extism.Encoding.FromBytes GHC.Int.Int64 instance Data.Data.Data a => Extism.Encoding.FromBytes (Extism.Encoding.JSON a) instance Extism.Encoding.FromBytes [GHC.Types.Char] instance Extism.Encoding.FromBytes () instance Extism.Encoding.FromBytes GHC.Word.Word32 instance Extism.Encoding.FromBytes GHC.Word.Word64 instance GHC.Show.Show Extism.Encoding.Error instance Extism.Encoding.ToBytes Data.ByteString.Internal.Type.ByteString instance Extism.Encoding.ToBytes GHC.Types.Double instance Extism.Encoding.ToBytes GHC.Types.Float instance Extism.Encoding.ToBytes GHC.Int.Int32 instance Extism.Encoding.ToBytes GHC.Int.Int64 instance Data.Data.Data a => Extism.Encoding.ToBytes (Extism.Encoding.JSON a) instance Extism.Encoding.ToBytes [GHC.Types.Char] instance Extism.Encoding.ToBytes () instance Extism.Encoding.ToBytes GHC.Word.Word32 instance Extism.Encoding.ToBytes GHC.Word.Word64 -- | A Haskell Extism host -- -- Requires a libextism installation, see -- https://extism.org/docs/install module Extism data Manifest -- | Host function, see hostFunction data Function Function :: ForeignPtr ExtismFunction -> StablePtr () -> Function -- | Plugins can be used to call WASM function newtype Plugin Plugin :: ForeignPtr ExtismPlugin -> Plugin -- | Cancellation handle for Plugins newtype CancelHandle CancelHandle :: Ptr ExtismCancelHandle -> CancelHandle -- | Log level data LogLevel LogError :: LogLevel LogWarn :: LogLevel LogInfo :: LogLevel LogDebug :: LogLevel LogTrace :: LogLevel -- | Extism error newtype Error ExtismError :: String -> Error -- | Result type type Result a = Either Error a -- | Get the Extism version string extismVersion :: () -> IO String -- | Create a Plugin from a WASM module, useWasi determines -- if WASI should | be linked newPlugin :: PluginInput a => a -> [Function] -> Bool -> IO (Result Plugin) -- | Check if a Plugin is valid isValid :: Plugin -> IO Bool -- | Set configuration values for a plugin setConfig :: Plugin -> [(String, Maybe String)] -> IO Bool -- | Set the log file and level, this is a global configuration setLogFile :: String -> LogLevel -> IO Bool -- | Check if a function exists in the given plugin functionExists :: Plugin -> String -> IO Bool call :: (ToBytes a, FromBytes b) => Plugin -> String -> a -> IO (Result b) -- | Create a new CancelHandle that can be used to cancel a running -- plugin | from another thread. cancelHandle :: Plugin -> IO CancelHandle -- | Cancel a running plugin using a CancelHandle cancel :: CancelHandle -> IO Bool pluginID :: Plugin -> IO UUID unwrap :: Either Error b -> b class ToBytes a toBytes :: ToBytes a => a -> ByteString class (ToBytes a, FromBytes a) => Encoding a class FromBytes a fromBytes :: FromBytes a => ByteString -> Result a newtype JSON x JSON :: x -> JSON x instance GHC.Classes.Eq Extism.CancelHandle instance GHC.Classes.Eq Extism.Function instance GHC.Classes.Eq Extism.LogLevel instance GHC.Classes.Eq Extism.Plugin instance Extism.PluginInput Data.ByteString.Internal.Type.ByteString instance Extism.PluginInput Extism.Manifest.Manifest instance GHC.Show.Show Extism.CancelHandle instance GHC.Show.Show Extism.LogLevel instance GHC.Show.Show Extism.Plugin module Extism.HostFunction -- | Access the plugin that is currently executing from inside a host -- function data CurrentPlugin CurrentPlugin :: Ptr ExtismCurrentPlugin -> [Val] -> Ptr Val -> Int -> CurrentPlugin -- | Low-level Wasm types data ValType I32 :: ValType I64 :: ValType F32 :: ValType F64 :: ValType V128 :: ValType FuncRef :: ValType ExternRef :: ValType -- | Low-level Wasm values data Val ValI32 :: Int32 -> Val ValI64 :: Int64 -> Val ValF32 :: Float -> Val ValF64 :: Double -> Val -- | A memory handle represents an allocated block of Extism memory data MemoryHandle -- | Allocate a new handle of the given size memoryAlloc :: CurrentPlugin -> Word64 -> IO MemoryHandle -- | Get the length of a handle, returns 0 if the handle is invalid memoryLength :: CurrentPlugin -> MemoryHandle -> IO Word64 -- | Free allocated memory memoryFree :: CurrentPlugin -> MemoryHandle -> IO () -- | Access a pointer to the entire memory region memory :: CurrentPlugin -> IO (Ptr Word8) -- | Access the pointer for the given MemoryHandle memoryOffset :: CurrentPlugin -> MemoryHandle -> IO (Ptr Word8) -- | Access the data associated with a handle as a ByteString memoryBytes :: CurrentPlugin -> MemoryHandle -> IO ByteString -- | Access the data associated with a handle as a String memoryString :: CurrentPlugin -> MemoryHandle -> IO String -- | Access the data associated with a handle and convert it into a Haskell -- type memoryGet :: FromBytes a => CurrentPlugin -> MemoryHandle -> IO (Result a) -- | Allocate memory and copy an existing ByteString into it allocBytes :: CurrentPlugin -> ByteString -> IO MemoryHandle -- | Allocate memory and copy an existing String into it allocString :: CurrentPlugin -> String -> IO MemoryHandle alloc :: ToBytes a => CurrentPlugin -> a -> IO MemoryHandle -- | Create a new I32 Val toI32 :: Integral a => a -> Val -- | Create a new I64 Val toI64 :: Integral a => a -> Val -- | Create a new F32 Val toF32 :: Float -> Val -- | Create a new F64 Val toF64 :: Double -> Val -- | Get I32 Val fromI32 :: Integral a => Val -> Maybe a -- | Get I64 Val fromI64 :: Integral a => Val -> Maybe a -- | Get F32 Val fromF32 :: Val -> Maybe Float -- | Get F64 Val fromF64 :: Val -> Maybe Double -- | 'hostFunction "function_name" inputTypes outputTypes callback -- userData' creates a new | Function in the default namespace -- that can be called from a Plugin hostFunction :: String -> [ValType] -> [ValType] -> (CurrentPlugin -> a -> IO ()) -> a -> IO Function -- | hostFunction "namespace" "function_name" inputTypes outputTypes -- callback userData' creates a new | Function in the provided -- namespace that can be called from a Plugin hostFunction' :: String -> String -> [ValType] -> [ValType] -> (CurrentPlugin -> a -> IO ()) -> a -> IO Function input :: FromBytes a => CurrentPlugin -> Int -> IO (Result a) output :: ToBytes a => CurrentPlugin -> Int -> a -> IO () getParams :: CurrentPlugin -> [Val] setResults :: CurrentPlugin -> [Val] -> IO () ptr :: ValType instance GHC.Enum.Enum Extism.HostFunction.MemoryHandle instance GHC.Classes.Eq Extism.HostFunction.MemoryHandle instance GHC.Real.Integral Extism.HostFunction.MemoryHandle instance GHC.Num.Num Extism.HostFunction.MemoryHandle instance GHC.Classes.Ord Extism.HostFunction.MemoryHandle instance GHC.Real.Real Extism.HostFunction.MemoryHandle instance GHC.Show.Show Extism.HostFunction.MemoryHandle