{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Binaryen.Relooper where
import Binaryen.Expression
import Binaryen.Index
import Binaryen.Module
import Foreign (Ptr, Storable)
newtype Relooper = Relooper (Ptr Relooper)
deriving (Relooper -> Relooper -> Bool
(Relooper -> Relooper -> Bool)
-> (Relooper -> Relooper -> Bool) -> Eq Relooper
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Relooper -> Relooper -> Bool
$c/= :: Relooper -> Relooper -> Bool
== :: Relooper -> Relooper -> Bool
$c== :: Relooper -> Relooper -> Bool
Eq, Int -> Relooper -> ShowS
[Relooper] -> ShowS
Relooper -> String
(Int -> Relooper -> ShowS)
-> (Relooper -> String) -> ([Relooper] -> ShowS) -> Show Relooper
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Relooper] -> ShowS
$cshowList :: [Relooper] -> ShowS
show :: Relooper -> String
$cshow :: Relooper -> String
showsPrec :: Int -> Relooper -> ShowS
$cshowsPrec :: Int -> Relooper -> ShowS
Show, Ptr b -> Int -> IO Relooper
Ptr b -> Int -> Relooper -> IO ()
Ptr Relooper -> IO Relooper
Ptr Relooper -> Int -> IO Relooper
Ptr Relooper -> Int -> Relooper -> IO ()
Ptr Relooper -> Relooper -> IO ()
Relooper -> Int
(Relooper -> Int)
-> (Relooper -> Int)
-> (Ptr Relooper -> Int -> IO Relooper)
-> (Ptr Relooper -> Int -> Relooper -> IO ())
-> (forall b. Ptr b -> Int -> IO Relooper)
-> (forall b. Ptr b -> Int -> Relooper -> IO ())
-> (Ptr Relooper -> IO Relooper)
-> (Ptr Relooper -> Relooper -> IO ())
-> Storable Relooper
forall b. Ptr b -> Int -> IO Relooper
forall b. Ptr b -> Int -> Relooper -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr Relooper -> Relooper -> IO ()
$cpoke :: Ptr Relooper -> Relooper -> IO ()
peek :: Ptr Relooper -> IO Relooper
$cpeek :: Ptr Relooper -> IO Relooper
pokeByteOff :: Ptr b -> Int -> Relooper -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> Relooper -> IO ()
peekByteOff :: Ptr b -> Int -> IO Relooper
$cpeekByteOff :: forall b. Ptr b -> Int -> IO Relooper
pokeElemOff :: Ptr Relooper -> Int -> Relooper -> IO ()
$cpokeElemOff :: Ptr Relooper -> Int -> Relooper -> IO ()
peekElemOff :: Ptr Relooper -> Int -> IO Relooper
$cpeekElemOff :: Ptr Relooper -> Int -> IO Relooper
alignment :: Relooper -> Int
$calignment :: Relooper -> Int
sizeOf :: Relooper -> Int
$csizeOf :: Relooper -> Int
Storable)
newtype RelooperBlock = RelooperBlock (Ptr RelooperBlock)
deriving (RelooperBlock -> RelooperBlock -> Bool
(RelooperBlock -> RelooperBlock -> Bool)
-> (RelooperBlock -> RelooperBlock -> Bool) -> Eq RelooperBlock
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RelooperBlock -> RelooperBlock -> Bool
$c/= :: RelooperBlock -> RelooperBlock -> Bool
== :: RelooperBlock -> RelooperBlock -> Bool
$c== :: RelooperBlock -> RelooperBlock -> Bool
Eq, Int -> RelooperBlock -> ShowS
[RelooperBlock] -> ShowS
RelooperBlock -> String
(Int -> RelooperBlock -> ShowS)
-> (RelooperBlock -> String)
-> ([RelooperBlock] -> ShowS)
-> Show RelooperBlock
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RelooperBlock] -> ShowS
$cshowList :: [RelooperBlock] -> ShowS
show :: RelooperBlock -> String
$cshow :: RelooperBlock -> String
showsPrec :: Int -> RelooperBlock -> ShowS
$cshowsPrec :: Int -> RelooperBlock -> ShowS
Show)
foreign import ccall unsafe "RelooperCreate"
create ::
Module -> IO Relooper
foreign import ccall unsafe "RelooperAddBlock"
addBlock ::
Relooper -> Expression -> IO RelooperBlock
foreign import ccall unsafe "RelooperAddBranch"
addBranch ::
RelooperBlock ->
RelooperBlock ->
Expression ->
Expression ->
IO ()
foreign import ccall unsafe "RelooperAddBlockWithSwitch"
addBlockWithSwitch ::
Relooper ->
Expression ->
Expression ->
IO RelooperBlock
foreign import ccall unsafe "RelooperAddBranchForSwitch"
addBranchForSwitch ::
RelooperBlock ->
RelooperBlock ->
Ptr Index ->
Index ->
Expression ->
IO ()
foreign import ccall unsafe "RelooperRenderAndDispose"
renderAndDispose ::
Relooper ->
RelooperBlock ->
Index ->
IO Expression