packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID)
import DearImGui.Raw.ImDrawListSplitter (ImDrawListSplitter)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal (ImGuiTableColumn)
import DearImGui.Raw.Internal.ImGuiTableHeaderData (ImGuiTableHeaderData)
import DearImGui.Raw.Internal.ImGuiTableReconcileColumnData (ImGuiTableReconcileColumnData)
import DearImGui.Raw.Internal.ImRect (ImRect)
import DearImGui.Raw.Internal.ImSpan (ImSpan)
import DearImGui.Raw.Internal.ImVec1 (ImVec1)
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" "ImGuiTableTempData" #-} ImGuiTableTempData = ImGuiTableTempData
  { windowID :: ImGuiID
  , tableIndex :: CInt
  , lastTimeActive :: Float
  , angledHeadersExtraWidth :: Float
  , angledHeadersRequests :: ImVector ImGuiTableHeaderData
  , reconcileColumnsRequests :: ImVector ImGuiTableReconcileColumnData
  , oldColumnsRawData :: Ptr ()
  , oldColumnsData :: ImSpan ImGuiTableColumn
  , userOuterSize :: ImVec2
  , drawSplitter :: ImDrawListSplitter
  , hostBackupWorkRect :: ImRect
  , hostBackupParentWorkRect :: ImRect
  , hostBackupPrevLineSize :: ImVec2
  , hostBackupCurrLineSize :: ImVec2
  , hostBackupCursorMaxPos :: ImVec2
  , hostBackupColumnsOffset :: ImVec1
  , hostBackupItemWidth :: Float
  , hostBackupItemWidthStackSize :: CInt
  }
  deriving (Eq, Show)
instance Storable ImGuiTableTempData where
  sizeOf _    = #{size ImGuiTableTempData}
  alignment _ = #{alignment ImGuiTableTempData}
  peek p = ImGuiTableTempData <$> #{peek ImGuiTableTempData, WindowID} p <*> #{peek ImGuiTableTempData, TableIndex} p <*> #{peek ImGuiTableTempData, LastTimeActive} p <*> #{peek ImGuiTableTempData, AngledHeadersExtraWidth} p <*> #{peek ImGuiTableTempData, AngledHeadersRequests} p <*> #{peek ImGuiTableTempData, ReconcileColumnsRequests} p <*> #{peek ImGuiTableTempData, OldColumnsRawData} p <*> #{peek ImGuiTableTempData, OldColumnsData} p <*> #{peek ImGuiTableTempData, UserOuterSize} p <*> #{peek ImGuiTableTempData, DrawSplitter} p <*> #{peek ImGuiTableTempData, HostBackupWorkRect} p <*> #{peek ImGuiTableTempData, HostBackupParentWorkRect} p <*> #{peek ImGuiTableTempData, HostBackupPrevLineSize} p <*> #{peek ImGuiTableTempData, HostBackupCurrLineSize} p <*> #{peek ImGuiTableTempData, HostBackupCursorMaxPos} p <*> #{peek ImGuiTableTempData, HostBackupColumnsOffset} p <*> #{peek ImGuiTableTempData, HostBackupItemWidth} p <*> #{peek ImGuiTableTempData, HostBackupItemWidthStackSize} p
  poke p v = do
    #{poke ImGuiTableTempData, WindowID} p v.windowID
    #{poke ImGuiTableTempData, TableIndex} p v.tableIndex
    #{poke ImGuiTableTempData, LastTimeActive} p v.lastTimeActive
    #{poke ImGuiTableTempData, AngledHeadersExtraWidth} p v.angledHeadersExtraWidth
    #{poke ImGuiTableTempData, AngledHeadersRequests} p v.angledHeadersRequests
    #{poke ImGuiTableTempData, ReconcileColumnsRequests} p v.reconcileColumnsRequests
    #{poke ImGuiTableTempData, OldColumnsRawData} p v.oldColumnsRawData
    #{poke ImGuiTableTempData, OldColumnsData} p v.oldColumnsData
    #{poke ImGuiTableTempData, UserOuterSize} p v.userOuterSize
    #{poke ImGuiTableTempData, DrawSplitter} p v.drawSplitter
    #{poke ImGuiTableTempData, HostBackupWorkRect} p v.hostBackupWorkRect
    #{poke ImGuiTableTempData, HostBackupParentWorkRect} p v.hostBackupParentWorkRect
    #{poke ImGuiTableTempData, HostBackupPrevLineSize} p v.hostBackupPrevLineSize
    #{poke ImGuiTableTempData, HostBackupCurrLineSize} p v.hostBackupCurrLineSize
    #{poke ImGuiTableTempData, HostBackupCursorMaxPos} p v.hostBackupCursorMaxPos
    #{poke ImGuiTableTempData, HostBackupColumnsOffset} p v.hostBackupColumnsOffset
    #{poke ImGuiTableTempData, HostBackupItemWidth} p v.hostBackupItemWidth
    #{poke ImGuiTableTempData, HostBackupItemWidthStackSize} p v.hostBackupItemWidthStackSize

instance HasField "windowID" (Ptr ImGuiTableTempData) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTableTempData, WindowID}

instance HasField "tableIndex" (Ptr ImGuiTableTempData) (Ptr CInt) where
  getField = #{ptr ImGuiTableTempData, TableIndex}

instance HasField "lastTimeActive" (Ptr ImGuiTableTempData) (Ptr Float) where
  getField = #{ptr ImGuiTableTempData, LastTimeActive}

instance HasField "angledHeadersExtraWidth" (Ptr ImGuiTableTempData) (Ptr Float) where
  getField = #{ptr ImGuiTableTempData, AngledHeadersExtraWidth}

instance HasField "angledHeadersRequests" (Ptr ImGuiTableTempData) (Ptr (ImVector ImGuiTableHeaderData)) where
  getField = #{ptr ImGuiTableTempData, AngledHeadersRequests}

instance HasField "reconcileColumnsRequests" (Ptr ImGuiTableTempData) (Ptr (ImVector ImGuiTableReconcileColumnData)) where
  getField = #{ptr ImGuiTableTempData, ReconcileColumnsRequests}

instance HasField "oldColumnsRawData" (Ptr ImGuiTableTempData) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiTableTempData, OldColumnsRawData}

instance HasField "oldColumnsData" (Ptr ImGuiTableTempData) (Ptr (ImSpan ImGuiTableColumn)) where
  getField = #{ptr ImGuiTableTempData, OldColumnsData}

instance HasField "userOuterSize" (Ptr ImGuiTableTempData) (Ptr ImVec2) where
  getField = #{ptr ImGuiTableTempData, UserOuterSize}

instance HasField "drawSplitter" (Ptr ImGuiTableTempData) (Ptr ImDrawListSplitter) where
  getField = #{ptr ImGuiTableTempData, DrawSplitter}

instance HasField "hostBackupWorkRect" (Ptr ImGuiTableTempData) (Ptr ImRect) where
  getField = #{ptr ImGuiTableTempData, HostBackupWorkRect}

instance HasField "hostBackupParentWorkRect" (Ptr ImGuiTableTempData) (Ptr ImRect) where
  getField = #{ptr ImGuiTableTempData, HostBackupParentWorkRect}

instance HasField "hostBackupPrevLineSize" (Ptr ImGuiTableTempData) (Ptr ImVec2) where
  getField = #{ptr ImGuiTableTempData, HostBackupPrevLineSize}

instance HasField "hostBackupCurrLineSize" (Ptr ImGuiTableTempData) (Ptr ImVec2) where
  getField = #{ptr ImGuiTableTempData, HostBackupCurrLineSize}

instance HasField "hostBackupCursorMaxPos" (Ptr ImGuiTableTempData) (Ptr ImVec2) where
  getField = #{ptr ImGuiTableTempData, HostBackupCursorMaxPos}

instance HasField "hostBackupColumnsOffset" (Ptr ImGuiTableTempData) (Ptr ImVec1) where
  getField = #{ptr ImGuiTableTempData, HostBackupColumnsOffset}

instance HasField "hostBackupItemWidth" (Ptr ImGuiTableTempData) (Ptr Float) where
  getField = #{ptr ImGuiTableTempData, HostBackupItemWidth}

instance HasField "hostBackupItemWidthStackSize" (Ptr ImGuiTableTempData) (Ptr CInt) where
  getField = #{ptr ImGuiTableTempData, HostBackupItemWidthStackSize}

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

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

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