packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID)
import DearImGui.Raw.Enums.ImGuiItemFlags (ImGuiItemFlags)
import DearImGui.Raw.Enums.ImGuiTreeNodeFlags (ImGuiTreeNodeFlags)
import DearImGui.Raw.Internal (ImGuiTableColumnIdx)
import DearImGui.Raw.Internal.ImRect (ImRect)
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" "ImGuiTreeNodeStackData" #-} ImGuiTreeNodeStackData = ImGuiTreeNodeStackData
  { iD :: ImGuiID
  , treeFlags :: ImGuiTreeNodeFlags
  , itemFlags :: ImGuiItemFlags
  , navRect :: ImRect
  , drawLinesX1 :: Float
  , drawLinesToNodesY2 :: Float
  , drawLinesTableColumn :: ImGuiTableColumnIdx
  }
  deriving (Eq, Show)
instance Storable ImGuiTreeNodeStackData where
  sizeOf _    = #{size ImGuiTreeNodeStackData}
  alignment _ = #{alignment ImGuiTreeNodeStackData}
  peek p = ImGuiTreeNodeStackData <$> #{peek ImGuiTreeNodeStackData, ID} p <*> #{peek ImGuiTreeNodeStackData, TreeFlags} p <*> #{peek ImGuiTreeNodeStackData, ItemFlags} p <*> #{peek ImGuiTreeNodeStackData, NavRect} p <*> #{peek ImGuiTreeNodeStackData, DrawLinesX1} p <*> #{peek ImGuiTreeNodeStackData, DrawLinesToNodesY2} p <*> #{peek ImGuiTreeNodeStackData, DrawLinesTableColumn} p
  poke p v = do
    #{poke ImGuiTreeNodeStackData, ID} p v.iD
    #{poke ImGuiTreeNodeStackData, TreeFlags} p v.treeFlags
    #{poke ImGuiTreeNodeStackData, ItemFlags} p v.itemFlags
    #{poke ImGuiTreeNodeStackData, NavRect} p v.navRect
    #{poke ImGuiTreeNodeStackData, DrawLinesX1} p v.drawLinesX1
    #{poke ImGuiTreeNodeStackData, DrawLinesToNodesY2} p v.drawLinesToNodesY2
    #{poke ImGuiTreeNodeStackData, DrawLinesTableColumn} p v.drawLinesTableColumn

instance HasField "iD" (Ptr ImGuiTreeNodeStackData) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTreeNodeStackData, ID}

instance HasField "treeFlags" (Ptr ImGuiTreeNodeStackData) (Ptr ImGuiTreeNodeFlags) where
  getField = #{ptr ImGuiTreeNodeStackData, TreeFlags}

instance HasField "itemFlags" (Ptr ImGuiTreeNodeStackData) (Ptr ImGuiItemFlags) where
  getField = #{ptr ImGuiTreeNodeStackData, ItemFlags}

instance HasField "navRect" (Ptr ImGuiTreeNodeStackData) (Ptr ImRect) where
  getField = #{ptr ImGuiTreeNodeStackData, NavRect}

instance HasField "drawLinesX1" (Ptr ImGuiTreeNodeStackData) (Ptr Float) where
  getField = #{ptr ImGuiTreeNodeStackData, DrawLinesX1}

instance HasField "drawLinesToNodesY2" (Ptr ImGuiTreeNodeStackData) (Ptr Float) where
  getField = #{ptr ImGuiTreeNodeStackData, DrawLinesToNodesY2}

instance HasField "drawLinesTableColumn" (Ptr ImGuiTreeNodeStackData) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTreeNodeStackData, DrawLinesTableColumn}

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

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

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