wasmedge-hs-0.17.1.0: src/WasmEdge/Internal/FFI/Configure.hs
{-# LANGUAGE ForeignFunctionInterface #-}
{- |
Module : WasmEdge.Internal.FFI.Configure
Description : Raw FFI for WasmEdge configure and statistics contexts
Copyright : (c) 2026 Tushar Adhatrao
License : MIT
Stability : internal
-}
module WasmEdge.Internal.FFI.Configure
( -- * Configure context lifecycle
c_ConfigureCreate
, c_ConfigureDelete
-- * Proposals
, c_ConfigureAddProposal
, c_ConfigureRemoveProposal
, c_ConfigureHasProposal
, c_ConfigureSetWASMStandard
-- * Host registrations
, c_ConfigureAddHostRegistration
, c_ConfigureRemoveHostRegistration
, c_ConfigureHasHostRegistration
-- * Memory limits
, c_ConfigureSetMaxMemoryPage
, c_ConfigureGetMaxMemoryPage
-- * Interpreter options
, c_ConfigureSetForceInterpreter
, c_ConfigureIsForceInterpreter
-- * Run mode (0.18+)
, c_ConfigureSetRunningMode
, c_ConfigureGetRunningMode
-- * Compiler options
, c_ConfigureCompilerSetOptimizationLevel
, c_ConfigureCompilerGetOptimizationLevel
, c_ConfigureCompilerSetOutputFormat
, c_ConfigureCompilerGetOutputFormat
, c_ConfigureCompilerSetDumpIR
, c_ConfigureCompilerIsDumpIR
, c_ConfigureCompilerSetGenericBinary
, c_ConfigureCompilerIsGenericBinary
, c_ConfigureCompilerSetInterruptible
, c_ConfigureCompilerIsInterruptible
-- * Statistics options
, c_ConfigureStatisticsSetInstructionCounting
, c_ConfigureStatisticsIsInstructionCounting
, c_ConfigureStatisticsSetCostMeasuring
, c_ConfigureStatisticsIsCostMeasuring
, c_ConfigureStatisticsSetTimeMeasuring
, c_ConfigureStatisticsIsTimeMeasuring
-- * Statistics context lifecycle
, c_StatisticsCreate
, c_StatisticsDelete
, c_StatisticsGetInstrCount
, c_StatisticsGetInstrPerSecond
, c_StatisticsGetTotalCost
, c_StatisticsSetCostTable
, c_StatisticsSetCostLimit
, c_StatisticsClear
) where
import Data.Word (Word32, Word64)
import Foreign.C
import Foreign.Ptr
import WasmEdge.Internal.Types
-- ---------------------------------------------------------------------------
-- Configure context
-- ---------------------------------------------------------------------------
foreign import ccall unsafe "WasmEdge_ConfigureCreate"
c_ConfigureCreate :: IO (Ptr ConfigureTag)
foreign import ccall unsafe "&WasmEdge_ConfigureDelete"
c_ConfigureDelete :: FunPtr (Ptr ConfigureTag -> IO ())
-- Proposals — enum values mapped to Word32
foreign import ccall unsafe "WasmEdge_ConfigureAddProposal"
c_ConfigureAddProposal :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureRemoveProposal"
c_ConfigureRemoveProposal :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureHasProposal"
c_ConfigureHasProposal :: Ptr ConfigureTag -> Word32 -> IO CBool
foreign import ccall unsafe "WasmEdge_ConfigureSetWASMStandard"
c_ConfigureSetWASMStandard :: Ptr ConfigureTag -> Word32 -> IO ()
-- Host registrations
foreign import ccall unsafe "WasmEdge_ConfigureAddHostRegistration"
c_ConfigureAddHostRegistration :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureRemoveHostRegistration"
c_ConfigureRemoveHostRegistration :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureHasHostRegistration"
c_ConfigureHasHostRegistration :: Ptr ConfigureTag -> Word32 -> IO CBool
-- Memory limits
foreign import ccall unsafe "WasmEdge_ConfigureSetMaxMemoryPage"
c_ConfigureSetMaxMemoryPage :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureGetMaxMemoryPage"
c_ConfigureGetMaxMemoryPage :: Ptr ConfigureTag -> IO Word32
-- Interpreter options
foreign import ccall unsafe "WasmEdge_ConfigureSetForceInterpreter"
c_ConfigureSetForceInterpreter :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureIsForceInterpreter"
c_ConfigureIsForceInterpreter :: Ptr ConfigureTag -> IO CBool
-- Run mode (Interpreter / AOT / LazyJIT)
foreign import ccall unsafe "WasmEdge_ConfigureSetRunMode"
c_ConfigureSetRunningMode :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureGetRunMode"
c_ConfigureGetRunningMode :: Ptr ConfigureTag -> IO Word32
-- Compiler options
foreign import ccall unsafe "WasmEdge_ConfigureCompilerSetOptimizationLevel"
c_ConfigureCompilerSetOptimizationLevel :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureCompilerGetOptimizationLevel"
c_ConfigureCompilerGetOptimizationLevel :: Ptr ConfigureTag -> IO Word32
foreign import ccall unsafe "WasmEdge_ConfigureCompilerSetOutputFormat"
c_ConfigureCompilerSetOutputFormat :: Ptr ConfigureTag -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureCompilerGetOutputFormat"
c_ConfigureCompilerGetOutputFormat :: Ptr ConfigureTag -> IO Word32
foreign import ccall unsafe "WasmEdge_ConfigureCompilerSetDumpIR"
c_ConfigureCompilerSetDumpIR :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureCompilerIsDumpIR"
c_ConfigureCompilerIsDumpIR :: Ptr ConfigureTag -> IO CBool
foreign import ccall unsafe "WasmEdge_ConfigureCompilerSetGenericBinary"
c_ConfigureCompilerSetGenericBinary :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureCompilerIsGenericBinary"
c_ConfigureCompilerIsGenericBinary :: Ptr ConfigureTag -> IO CBool
foreign import ccall unsafe "WasmEdge_ConfigureCompilerSetInterruptible"
c_ConfigureCompilerSetInterruptible :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureCompilerIsInterruptible"
c_ConfigureCompilerIsInterruptible :: Ptr ConfigureTag -> IO CBool
-- Statistics options
foreign import ccall unsafe "WasmEdge_ConfigureStatisticsSetInstructionCounting"
c_ConfigureStatisticsSetInstructionCounting :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureStatisticsIsInstructionCounting"
c_ConfigureStatisticsIsInstructionCounting :: Ptr ConfigureTag -> IO CBool
foreign import ccall unsafe "WasmEdge_ConfigureStatisticsSetCostMeasuring"
c_ConfigureStatisticsSetCostMeasuring :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureStatisticsIsCostMeasuring"
c_ConfigureStatisticsIsCostMeasuring :: Ptr ConfigureTag -> IO CBool
foreign import ccall unsafe "WasmEdge_ConfigureStatisticsSetTimeMeasuring"
c_ConfigureStatisticsSetTimeMeasuring :: Ptr ConfigureTag -> CBool -> IO ()
foreign import ccall unsafe "WasmEdge_ConfigureStatisticsIsTimeMeasuring"
c_ConfigureStatisticsIsTimeMeasuring :: Ptr ConfigureTag -> IO CBool
-- ---------------------------------------------------------------------------
-- Statistics context
-- ---------------------------------------------------------------------------
foreign import ccall unsafe "WasmEdge_StatisticsCreate"
c_StatisticsCreate :: IO (Ptr StatisticsTag)
foreign import ccall unsafe "&WasmEdge_StatisticsDelete"
c_StatisticsDelete :: FunPtr (Ptr StatisticsTag -> IO ())
foreign import ccall unsafe "WasmEdge_StatisticsGetInstrCount"
c_StatisticsGetInstrCount :: Ptr StatisticsTag -> IO Word64
foreign import ccall unsafe "WasmEdge_StatisticsGetInstrPerSecond"
c_StatisticsGetInstrPerSecond :: Ptr StatisticsTag -> IO CDouble
foreign import ccall unsafe "WasmEdge_StatisticsGetTotalCost"
c_StatisticsGetTotalCost :: Ptr StatisticsTag -> IO Word64
foreign import ccall unsafe "WasmEdge_StatisticsSetCostTable"
c_StatisticsSetCostTable :: Ptr StatisticsTag -> Ptr Word64 -> Word32 -> IO ()
foreign import ccall unsafe "WasmEdge_StatisticsSetCostLimit"
c_StatisticsSetCostLimit :: Ptr StatisticsTag -> Word64 -> IO ()
foreign import ccall unsafe "WasmEdge_StatisticsClear"
c_StatisticsClear :: Ptr StatisticsTag -> IO ()