packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID, ImGuiKeyChord)
import DearImGui.Raw.Enums.ImGuiItemFlags (ImGuiItemFlags)
import DearImGui.Raw.Internal.Enums.ImGuiItemStatusFlags (ImGuiItemStatusFlags)
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" "ImGuiLastItemData" #-} ImGuiLastItemData = ImGuiLastItemData
  { iD :: ImGuiID
  , itemFlags :: ImGuiItemFlags
  , statusFlags :: ImGuiItemStatusFlags
  , rect :: ImRect
  , navRect :: ImRect
  , displayRect :: ImRect
  , clipRect :: ImRect
  , shortcut :: ImGuiKeyChord
  }
  deriving (Eq, Show)
instance Storable ImGuiLastItemData where
  sizeOf _    = #{size ImGuiLastItemData}
  alignment _ = #{alignment ImGuiLastItemData}
  peek p = ImGuiLastItemData <$> #{peek ImGuiLastItemData, ID} p <*> #{peek ImGuiLastItemData, ItemFlags} p <*> #{peek ImGuiLastItemData, StatusFlags} p <*> #{peek ImGuiLastItemData, Rect} p <*> #{peek ImGuiLastItemData, NavRect} p <*> #{peek ImGuiLastItemData, DisplayRect} p <*> #{peek ImGuiLastItemData, ClipRect} p <*> #{peek ImGuiLastItemData, Shortcut} p
  poke p v = do
    #{poke ImGuiLastItemData, ID} p v.iD
    #{poke ImGuiLastItemData, ItemFlags} p v.itemFlags
    #{poke ImGuiLastItemData, StatusFlags} p v.statusFlags
    #{poke ImGuiLastItemData, Rect} p v.rect
    #{poke ImGuiLastItemData, NavRect} p v.navRect
    #{poke ImGuiLastItemData, DisplayRect} p v.displayRect
    #{poke ImGuiLastItemData, ClipRect} p v.clipRect
    #{poke ImGuiLastItemData, Shortcut} p v.shortcut

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

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

instance HasField "statusFlags" (Ptr ImGuiLastItemData) (Ptr ImGuiItemStatusFlags) where
  getField = #{ptr ImGuiLastItemData, StatusFlags}

instance HasField "rect" (Ptr ImGuiLastItemData) (Ptr ImRect) where
  getField = #{ptr ImGuiLastItemData, Rect}

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

instance HasField "displayRect" (Ptr ImGuiLastItemData) (Ptr ImRect) where
  getField = #{ptr ImGuiLastItemData, DisplayRect}

instance HasField "clipRect" (Ptr ImGuiLastItemData) (Ptr ImRect) where
  getField = #{ptr ImGuiLastItemData, ClipRect}

instance HasField "shortcut" (Ptr ImGuiLastItemData) (Ptr ImGuiKeyChord) where
  getField = #{ptr ImGuiLastItemData, Shortcut}

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

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

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