packages feed

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

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

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

module DearImGui.Raw.ImFontGlyphRangesBuilder
  ( ImFontGlyphRangesBuilder (..)
  , addChar
  , addRanges
  , addText
  , buildRanges
  , clear
  , destroy
  , getBit
  , init
  , setBit
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImU32, ImWchar)
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" "ImFontGlyphRangesBuilder" #-} ImFontGlyphRangesBuilder = ImFontGlyphRangesBuilder
  { usedChars :: ImVector ImU32
  }
  deriving (Eq, Show)
instance Storable ImFontGlyphRangesBuilder where
  sizeOf _    = #{size ImFontGlyphRangesBuilder}
  alignment _ = #{alignment ImFontGlyphRangesBuilder}
  peek p = ImFontGlyphRangesBuilder <$> #{peek ImFontGlyphRangesBuilder, UsedChars} p
  poke p v = do
    #{poke ImFontGlyphRangesBuilder, UsedChars} p v.usedChars

instance HasField "usedChars" (Ptr ImFontGlyphRangesBuilder) (Ptr (ImVector ImU32)) where
  getField = #{ptr ImFontGlyphRangesBuilder, UsedChars}

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

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

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

-- functions

-- C: void AddChar(ImFontGlyphRangesBuilder* self, ImWchar c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontGlyphRangesBuilder_AddChar"
  addChar
    :: (Ptr ImFontGlyphRangesBuilder) -- ^ self
    -> ImWchar -- ^ c
    -> IO ()

-- C: void AddRanges(ImFontGlyphRangesBuilder* self, const ImWchar* ranges)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontGlyphRangesBuilder_AddRanges"
  addRanges
    :: (Ptr ImFontGlyphRangesBuilder) -- ^ self
    -> (Ptr ImWchar) -- ^ ranges
    -> IO ()

-- C: void AddText(ImFontGlyphRangesBuilder* self, const char* text, const char* text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontGlyphRangesBuilder_AddText"
  addText
    :: (Ptr ImFontGlyphRangesBuilder) -- ^ self
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> IO ()

-- C: void BuildRanges(ImFontGlyphRangesBuilder* self, ImVector_ImWchar* out_ranges)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontGlyphRangesBuilder_BuildRanges"
  buildRanges
    :: (Ptr ImFontGlyphRangesBuilder) -- ^ self
    -> (Ptr (ImVector ImWchar)) -- ^ out_ranges
    -> IO ()

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

-- C: bool GetBit(const ImFontGlyphRangesBuilder* self, size_t n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontGlyphRangesBuilder_GetBit"
  getBit
    :: (Ptr ImFontGlyphRangesBuilder) -- ^ self
    -> CSize -- ^ n
    -> IO CBool

-- C: void SetBit(ImFontGlyphRangesBuilder* self, size_t n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImFontGlyphRangesBuilder_SetBit"
  setBit
    :: (Ptr ImFontGlyphRangesBuilder) -- ^ self
    -> CSize -- ^ n
    -> IO ()