packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw.ImGuiStorage (ImGuiStorage)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal.ImGuiDockNodeSettings (ImGuiDockNodeSettings)
import DearImGui.Raw.Internal.ImGuiDockRequest (ImGuiDockRequest)
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" "ImGuiDockContext" #-} ImGuiDockContext = ImGuiDockContext
  { nodes :: ImGuiStorage
  , requests :: ImVector ImGuiDockRequest
  , nodesSettings :: ImVector ImGuiDockNodeSettings
  , wantFullRebuild :: CBool
  }
  deriving (Eq, Show)
instance Storable ImGuiDockContext where
  sizeOf _    = #{size ImGuiDockContext}
  alignment _ = #{alignment ImGuiDockContext}
  peek p = ImGuiDockContext <$> #{peek ImGuiDockContext, Nodes} p <*> #{peek ImGuiDockContext, Requests} p <*> #{peek ImGuiDockContext, NodesSettings} p <*> #{peek ImGuiDockContext, WantFullRebuild} p
  poke p v = do
    #{poke ImGuiDockContext, Nodes} p v.nodes
    #{poke ImGuiDockContext, Requests} p v.requests
    #{poke ImGuiDockContext, NodesSettings} p v.nodesSettings
    #{poke ImGuiDockContext, WantFullRebuild} p v.wantFullRebuild

instance HasField "nodes" (Ptr ImGuiDockContext) (Ptr ImGuiStorage) where
  getField = #{ptr ImGuiDockContext, Nodes}

instance HasField "requests" (Ptr ImGuiDockContext) (Ptr (ImVector ImGuiDockRequest)) where
  getField = #{ptr ImGuiDockContext, Requests}

instance HasField "nodesSettings" (Ptr ImGuiDockContext) (Ptr (ImVector ImGuiDockNodeSettings)) where
  getField = #{ptr ImGuiDockContext, NodesSettings}

instance HasField "wantFullRebuild" (Ptr ImGuiDockContext) (Ptr CBool) where
  getField = #{ptr ImGuiDockContext, WantFullRebuild}

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

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

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