packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID, ImS8)
import DearImGui.Raw.ImGuiTextBuffer (ImGuiTextBuffer)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal.ImGuiStackLevelInfo (ImGuiStackLevelInfo)
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" "ImGuiDebugItemPathQuery" #-} ImGuiDebugItemPathQuery = ImGuiDebugItemPathQuery
  { mainID :: ImGuiID
  , active :: CBool
  , complete :: CBool
  , step :: ImS8
  , results :: ImVector ImGuiStackLevelInfo
  , resultsDescBuf :: ImGuiTextBuffer
  , resultPathBuf :: ImGuiTextBuffer
  }
  deriving (Eq, Show)
instance Storable ImGuiDebugItemPathQuery where
  sizeOf _    = #{size ImGuiDebugItemPathQuery}
  alignment _ = #{alignment ImGuiDebugItemPathQuery}
  peek p = ImGuiDebugItemPathQuery <$> #{peek ImGuiDebugItemPathQuery, MainID} p <*> #{peek ImGuiDebugItemPathQuery, Active} p <*> #{peek ImGuiDebugItemPathQuery, Complete} p <*> #{peek ImGuiDebugItemPathQuery, Step} p <*> #{peek ImGuiDebugItemPathQuery, Results} p <*> #{peek ImGuiDebugItemPathQuery, ResultsDescBuf} p <*> #{peek ImGuiDebugItemPathQuery, ResultPathBuf} p
  poke p v = do
    #{poke ImGuiDebugItemPathQuery, MainID} p v.mainID
    #{poke ImGuiDebugItemPathQuery, Active} p v.active
    #{poke ImGuiDebugItemPathQuery, Complete} p v.complete
    #{poke ImGuiDebugItemPathQuery, Step} p v.step
    #{poke ImGuiDebugItemPathQuery, Results} p v.results
    #{poke ImGuiDebugItemPathQuery, ResultsDescBuf} p v.resultsDescBuf
    #{poke ImGuiDebugItemPathQuery, ResultPathBuf} p v.resultPathBuf

instance HasField "mainID" (Ptr ImGuiDebugItemPathQuery) (Ptr ImGuiID) where
  getField = #{ptr ImGuiDebugItemPathQuery, MainID}

instance HasField "active" (Ptr ImGuiDebugItemPathQuery) (Ptr CBool) where
  getField = #{ptr ImGuiDebugItemPathQuery, Active}

instance HasField "complete" (Ptr ImGuiDebugItemPathQuery) (Ptr CBool) where
  getField = #{ptr ImGuiDebugItemPathQuery, Complete}

instance HasField "step" (Ptr ImGuiDebugItemPathQuery) (Ptr ImS8) where
  getField = #{ptr ImGuiDebugItemPathQuery, Step}

instance HasField "results" (Ptr ImGuiDebugItemPathQuery) (Ptr (ImVector ImGuiStackLevelInfo)) where
  getField = #{ptr ImGuiDebugItemPathQuery, Results}

instance HasField "resultsDescBuf" (Ptr ImGuiDebugItemPathQuery) (Ptr ImGuiTextBuffer) where
  getField = #{ptr ImGuiDebugItemPathQuery, ResultsDescBuf}

instance HasField "resultPathBuf" (Ptr ImGuiDebugItemPathQuery) (Ptr ImGuiTextBuffer) where
  getField = #{ptr ImGuiDebugItemPathQuery, ResultPathBuf}

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

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

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