packages feed

dear-imgui-raw-1.0.0: src/DearImGui/Raw/ImDrawListSplitter.hsc

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

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

module DearImGui.Raw.ImDrawListSplitter
  ( ImDrawListSplitter (..)
  , clear
  , clearFreeMemory
  , destroy
  , init
  , merge
  , setCurrentChannel
  , split
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.ImDrawChannel (ImDrawChannel)
import {-# SOURCE #-} DearImGui.Raw.ImDrawList (ImDrawList)
import DearImGui.Raw.ImVector (ImVector)
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.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions.h" "ImDrawListSplitter" #-} ImDrawListSplitter = ImDrawListSplitter
  { _Current :: CInt
  , _Count :: CInt
  , _Channels :: ImVector ImDrawChannel
  }
  deriving (Eq, Show)
instance Storable ImDrawListSplitter where
  sizeOf _    = #{size ImDrawListSplitter}
  alignment _ = #{alignment ImDrawListSplitter}
  peek p = ImDrawListSplitter <$> #{peek ImDrawListSplitter, _Current} p <*> #{peek ImDrawListSplitter, _Count} p <*> #{peek ImDrawListSplitter, _Channels} p
  poke p v = do
    #{poke ImDrawListSplitter, _Current} p v._Current
    #{poke ImDrawListSplitter, _Count} p v._Count
    #{poke ImDrawListSplitter, _Channels} p v._Channels

instance HasField "_Current" (Ptr ImDrawListSplitter) (Ptr CInt) where
  getField = #{ptr ImDrawListSplitter, _Current}

instance HasField "_Count" (Ptr ImDrawListSplitter) (Ptr CInt) where
  getField = #{ptr ImDrawListSplitter, _Count}

instance HasField "_Channels" (Ptr ImDrawListSplitter) (Ptr (ImVector ImDrawChannel)) where
  getField = #{ptr ImDrawListSplitter, _Channels}

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

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

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

-- functions

-- C: void Clear(ImDrawListSplitter* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawListSplitter_Clear"
  clear
    :: (Ptr ImDrawListSplitter) -- ^ self
    -> IO ()

-- C: void ClearFreeMemory(ImDrawListSplitter* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawListSplitter_ClearFreeMemory"
  clearFreeMemory
    :: (Ptr ImDrawListSplitter) -- ^ self
    -> IO ()

-- C: void Merge(ImDrawListSplitter* self, ImDrawList* draw_list)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawListSplitter_Merge"
  merge
    :: (Ptr ImDrawListSplitter) -- ^ self
    -> (Ptr ImDrawList) -- ^ draw_list
    -> IO ()

-- C: void SetCurrentChannel(ImDrawListSplitter* self, ImDrawList* draw_list, int channel_idx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawListSplitter_SetCurrentChannel"
  setCurrentChannel
    :: (Ptr ImDrawListSplitter) -- ^ self
    -> (Ptr ImDrawList) -- ^ draw_list
    -> CInt -- ^ channel_idx
    -> IO ()

-- C: void Split(ImDrawListSplitter* self, ImDrawList* draw_list, int count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImDrawListSplitter_Split"
  split
    :: (Ptr ImDrawListSplitter) -- ^ self
    -> (Ptr ImDrawList) -- ^ draw_list
    -> CInt -- ^ count
    -> IO ()