-- 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.2
-- | 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