{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Binaryen.SideEffects where
import Binaryen.Expression
import Binaryen.Features
import Data.Word (Word32)
import Foreign (Storable)
newtype SideEffects = SideEffects Word32
deriving (Eq, Show, Storable)
foreign import ccall unsafe "BinaryenSideEffectNone" none :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectBranches" branches :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectCalls" calls :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectReadsLocal" readsLocal :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectWritesLocal" writesLocal :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectReadsGlobal" readsGlobal :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectWritesGlobal" writesGlobal :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectReadsMemory" readsMemory :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectWritesMemory" writesMemory :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectImplicitTrap" implicitTrap :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectIsAtomic" isAtomic :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectThrows" throws :: SideEffects
foreign import ccall unsafe "BinaryenSideEffectAny" any :: SideEffects
foreign import ccall unsafe "BinaryenExpressionGetSideEffects"
getSideEffects ::
Expression -> Features -> IO SideEffects