packages feed

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

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

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

module DearImGui.Raw.ImGuiTextBuffer
  ( ImGuiTextBuffer (..)
  , append
  , begin
  , c_str
  , clear
  , destroy
  , empty
  , end
  , init
  , reserve
  , resize
  , size
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.ImVector (ImVector)
import Foreign.C.String (CString)
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)

newtype {-# CTYPE "dcimgui_nodefaultargfunctions.h" "ImGuiTextBuffer" #-} ImGuiTextBuffer = ImGuiTextBuffer
  { buf :: ImVector CChar
  }
  deriving (Eq, Show)
instance Storable ImGuiTextBuffer where
  sizeOf _    = #{size ImGuiTextBuffer}
  alignment _ = #{alignment ImGuiTextBuffer}
  peek p = ImGuiTextBuffer <$> #{peek ImGuiTextBuffer, Buf} p
  poke p v = do
    #{poke ImGuiTextBuffer, Buf} p v.buf

instance HasField "buf" (Ptr ImGuiTextBuffer) (Ptr (ImVector CChar)) where
  getField = #{ptr ImGuiTextBuffer, Buf}

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

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

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

-- functions

-- C: void append(ImGuiTextBuffer* self, const char* str, const char* str_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_append"
  append
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> CString -- ^ str
    -> CString -- ^ str_end
    -> IO ()

-- C: const char* begin(const ImGuiTextBuffer* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_begin"
  begin
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> IO CString

-- C: const char* c_str(const ImGuiTextBuffer* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_c_str"
  c_str
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> IO CString

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

-- C: bool empty(const ImGuiTextBuffer* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_empty"
  empty
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> IO CBool

-- C: const char* end(const ImGuiTextBuffer* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_end"
  end
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> IO CString

-- C: void reserve(ImGuiTextBuffer* self, int capacity)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_reserve"
  reserve
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> CInt -- ^ capacity
    -> IO ()

-- C: void resize(ImGuiTextBuffer* self, int size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_resize"
  resize
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> CInt -- ^ size
    -> IO ()

-- C: int size(const ImGuiTextBuffer* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImGuiTextBuffer_size"
  size
    :: (Ptr ImGuiTextBuffer) -- ^ self
    -> IO CInt