dear-imgui-raw-imnodes-1.0.0: src/DearImGui/Raw/ImNodes/ImNodesIO.hsc
{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE PatternSynonyms #-}
-- This file was generated by dear-bindings-ffi. Do not edit by hand.
module DearImGui.Raw.ImNodes.ImNodesIO
( EmulateThreeButtonMouse (..)
, ImNodesIO (..)
, LinkDetachWithModifierClick (..)
, MultipleSelectModifier (..)
, destroy
, destroyEmulateThreeButtonMouse
, destroyLinkDetachWithModifierClick
, destroyMultipleSelectModifier
, init
, initEmulateThreeButtonMouse
, initLinkDetachWithModifierClick
, initMultipleSelectModifier
, withDefault
, withDefaultEmulateThreeButtonMouse
, withDefaultLinkDetachWithModifierClick
, withDefaultMultipleSelectModifier
) where
import Control.Exception (bracket_)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)
#include "dcimnodes.h"
-- structs (opaque)
data {-# CTYPE "dcimnodes.h" "ImNodesIO" #-} ImNodesIO = ImNodesIO
{ emulateThreeButtonMouse :: EmulateThreeButtonMouse
, linkDetachWithModifierClick :: LinkDetachWithModifierClick
, multipleSelectModifier :: MultipleSelectModifier
, altMouseButton :: CInt
, autoPanningSpeed :: Float
}
deriving (Eq, Show)
instance Storable ImNodesIO where
sizeOf _ = #{size ImNodesIO}
alignment _ = #{alignment ImNodesIO}
peek p = ImNodesIO <$> #{peek ImNodesIO, EmulateThreeButtonMouse} p <*> #{peek ImNodesIO, LinkDetachWithModifierClick} p <*> #{peek ImNodesIO, MultipleSelectModifier} p <*> #{peek ImNodesIO, AltMouseButton} p <*> #{peek ImNodesIO, AutoPanningSpeed} p
poke p v = do
#{poke ImNodesIO, EmulateThreeButtonMouse} p v.emulateThreeButtonMouse
#{poke ImNodesIO, LinkDetachWithModifierClick} p v.linkDetachWithModifierClick
#{poke ImNodesIO, MultipleSelectModifier} p v.multipleSelectModifier
#{poke ImNodesIO, AltMouseButton} p v.altMouseButton
#{poke ImNodesIO, AutoPanningSpeed} p v.autoPanningSpeed
instance HasField "emulateThreeButtonMouse" (Ptr ImNodesIO) (Ptr EmulateThreeButtonMouse) where
getField = #{ptr ImNodesIO, EmulateThreeButtonMouse}
instance HasField "linkDetachWithModifierClick" (Ptr ImNodesIO) (Ptr LinkDetachWithModifierClick) where
getField = #{ptr ImNodesIO, LinkDetachWithModifierClick}
instance HasField "multipleSelectModifier" (Ptr ImNodesIO) (Ptr MultipleSelectModifier) where
getField = #{ptr ImNodesIO, MultipleSelectModifier}
instance HasField "altMouseButton" (Ptr ImNodesIO) (Ptr CInt) where
getField = #{ptr ImNodesIO, AltMouseButton}
instance HasField "autoPanningSpeed" (Ptr ImNodesIO) (Ptr Float) where
getField = #{ptr ImNodesIO, AutoPanningSpeed}
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_Init_wrap"
init
:: Ptr ImNodesIO
-> IO ()
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_Destroy_wrap"
destroy
:: Ptr ImNodesIO
-> IO ()
withDefault :: (Ptr ImNodesIO -> IO a) -> IO a
withDefault k = alloca $ \p -> bracket_ (init p) (destroy p) (k p)
newtype {-# CTYPE "dcimnodes.h" "ImNodesIO_EmulateThreeButtonMouse" #-} EmulateThreeButtonMouse = EmulateThreeButtonMouse
{ modifier :: Ptr CBool
}
deriving (Eq, Show)
instance Storable EmulateThreeButtonMouse where
sizeOf _ = #{size ImNodesIO_EmulateThreeButtonMouse}
alignment _ = #{alignment ImNodesIO_EmulateThreeButtonMouse}
peek p = EmulateThreeButtonMouse <$> #{peek ImNodesIO_EmulateThreeButtonMouse, Modifier} p
poke p v = do
#{poke ImNodesIO_EmulateThreeButtonMouse, Modifier} p v.modifier
instance HasField "modifier" (Ptr EmulateThreeButtonMouse) (Ptr (Ptr CBool)) where
getField = #{ptr ImNodesIO_EmulateThreeButtonMouse, Modifier}
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_EmulateThreeButtonMouse_Init_wrap"
initEmulateThreeButtonMouse
:: Ptr EmulateThreeButtonMouse
-> IO ()
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_EmulateThreeButtonMouse_Destroy_wrap"
destroyEmulateThreeButtonMouse
:: Ptr EmulateThreeButtonMouse
-> IO ()
withDefaultEmulateThreeButtonMouse :: (Ptr EmulateThreeButtonMouse -> IO a) -> IO a
withDefaultEmulateThreeButtonMouse k = alloca $ \p -> bracket_ (initEmulateThreeButtonMouse p) (destroyEmulateThreeButtonMouse p) (k p)
newtype {-# CTYPE "dcimnodes.h" "ImNodesIO_LinkDetachWithModifierClick" #-} LinkDetachWithModifierClick = LinkDetachWithModifierClick
{ modifier :: Ptr CBool
}
deriving (Eq, Show)
instance Storable LinkDetachWithModifierClick where
sizeOf _ = #{size ImNodesIO_LinkDetachWithModifierClick}
alignment _ = #{alignment ImNodesIO_LinkDetachWithModifierClick}
peek p = LinkDetachWithModifierClick <$> #{peek ImNodesIO_LinkDetachWithModifierClick, Modifier} p
poke p v = do
#{poke ImNodesIO_LinkDetachWithModifierClick, Modifier} p v.modifier
instance HasField "modifier" (Ptr LinkDetachWithModifierClick) (Ptr (Ptr CBool)) where
getField = #{ptr ImNodesIO_LinkDetachWithModifierClick, Modifier}
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_LinkDetachWithModifierClick_Init_wrap"
initLinkDetachWithModifierClick
:: Ptr LinkDetachWithModifierClick
-> IO ()
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_LinkDetachWithModifierClick_Destroy_wrap"
destroyLinkDetachWithModifierClick
:: Ptr LinkDetachWithModifierClick
-> IO ()
withDefaultLinkDetachWithModifierClick :: (Ptr LinkDetachWithModifierClick -> IO a) -> IO a
withDefaultLinkDetachWithModifierClick k = alloca $ \p -> bracket_ (initLinkDetachWithModifierClick p) (destroyLinkDetachWithModifierClick p) (k p)
newtype {-# CTYPE "dcimnodes.h" "ImNodesIO_MultipleSelectModifier" #-} MultipleSelectModifier = MultipleSelectModifier
{ modifier :: Ptr CBool
}
deriving (Eq, Show)
instance Storable MultipleSelectModifier where
sizeOf _ = #{size ImNodesIO_MultipleSelectModifier}
alignment _ = #{alignment ImNodesIO_MultipleSelectModifier}
peek p = MultipleSelectModifier <$> #{peek ImNodesIO_MultipleSelectModifier, Modifier} p
poke p v = do
#{poke ImNodesIO_MultipleSelectModifier, Modifier} p v.modifier
instance HasField "modifier" (Ptr MultipleSelectModifier) (Ptr (Ptr CBool)) where
getField = #{ptr ImNodesIO_MultipleSelectModifier, Modifier}
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_MultipleSelectModifier_Init_wrap"
initMultipleSelectModifier
:: Ptr MultipleSelectModifier
-> IO ()
foreign import capi unsafe "DearImGuiWrappers.h ImNodesIO_MultipleSelectModifier_Destroy_wrap"
destroyMultipleSelectModifier
:: Ptr MultipleSelectModifier
-> IO ()
withDefaultMultipleSelectModifier :: (Ptr MultipleSelectModifier -> IO a) -> IO a
withDefaultMultipleSelectModifier k = alloca $ \p -> bracket_ (initMultipleSelectModifier p) (destroyMultipleSelectModifier p) (k p)