packages feed

dear-imgui-raw-internal-1.0.0: src/DearImGui/Raw/Internal/ImGuiWindowStackData.hsc

{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE PatternSynonyms #-}

-- This file was generated by dear-bindings-ffi. Do not edit by hand.

module DearImGui.Raw.Internal.ImGuiWindowStackData
  ( ImGuiWindowStackData (..)
  , destroy
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.Internal.ImGuiErrorRecoveryState (ImGuiErrorRecoveryState)
import DearImGui.Raw.Internal.ImGuiLastItemData (ImGuiLastItemData)
import DearImGui.Raw.Internal.ImGuiWindow (ImGuiWindow)
import DearImGui.Raw.Internal.ImRect (ImRect)
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 "dcimgui_nodefaultargfunctions_internal.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions_internal.h" "ImGuiWindowStackData" #-} ImGuiWindowStackData = ImGuiWindowStackData
  { window :: Ptr ImGuiWindow
  , parentLastItemDataBackup :: ImGuiLastItemData
  , stackSizesInBegin :: ImGuiErrorRecoveryState
  , disabledOverrideReenable :: CBool
  , disabledOverrideReenableAlphaBackup :: Float
  , parentLastComboPreviewRect :: ImRect
  }
  deriving (Eq, Show)
instance Storable ImGuiWindowStackData where
  sizeOf _    = #{size ImGuiWindowStackData}
  alignment _ = #{alignment ImGuiWindowStackData}
  peek p = ImGuiWindowStackData <$> #{peek ImGuiWindowStackData, Window} p <*> #{peek ImGuiWindowStackData, ParentLastItemDataBackup} p <*> #{peek ImGuiWindowStackData, StackSizesInBegin} p <*> #{peek ImGuiWindowStackData, DisabledOverrideReenable} p <*> #{peek ImGuiWindowStackData, DisabledOverrideReenableAlphaBackup} p <*> #{peek ImGuiWindowStackData, ParentLastComboPreviewRect} p
  poke p v = do
    #{poke ImGuiWindowStackData, Window} p v.window
    #{poke ImGuiWindowStackData, ParentLastItemDataBackup} p v.parentLastItemDataBackup
    #{poke ImGuiWindowStackData, StackSizesInBegin} p v.stackSizesInBegin
    #{poke ImGuiWindowStackData, DisabledOverrideReenable} p v.disabledOverrideReenable
    #{poke ImGuiWindowStackData, DisabledOverrideReenableAlphaBackup} p v.disabledOverrideReenableAlphaBackup
    #{poke ImGuiWindowStackData, ParentLastComboPreviewRect} p v.parentLastComboPreviewRect

instance HasField "window" (Ptr ImGuiWindowStackData) (Ptr (Ptr ImGuiWindow)) where
  getField = #{ptr ImGuiWindowStackData, Window}

instance HasField "parentLastItemDataBackup" (Ptr ImGuiWindowStackData) (Ptr ImGuiLastItemData) where
  getField = #{ptr ImGuiWindowStackData, ParentLastItemDataBackup}

instance HasField "stackSizesInBegin" (Ptr ImGuiWindowStackData) (Ptr ImGuiErrorRecoveryState) where
  getField = #{ptr ImGuiWindowStackData, StackSizesInBegin}

instance HasField "disabledOverrideReenable" (Ptr ImGuiWindowStackData) (Ptr CBool) where
  getField = #{ptr ImGuiWindowStackData, DisabledOverrideReenable}

instance HasField "disabledOverrideReenableAlphaBackup" (Ptr ImGuiWindowStackData) (Ptr Float) where
  getField = #{ptr ImGuiWindowStackData, DisabledOverrideReenableAlphaBackup}

instance HasField "parentLastComboPreviewRect" (Ptr ImGuiWindowStackData) (Ptr ImRect) where
  getField = #{ptr ImGuiWindowStackData, ParentLastComboPreviewRect}

foreign import capi unsafe "DearImGuiWrappers.h ImGuiWindowStackData_Init_wrap"
  init
    :: Ptr ImGuiWindowStackData
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGuiWindowStackData_Destroy_wrap"
  destroy
    :: Ptr ImGuiWindowStackData
    -> IO ()

withDefault :: (Ptr ImGuiWindowStackData -> IO a) -> IO a
withDefault k = alloca $ \p -> bracket_ (init p) (destroy p) (k p)