packages feed

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

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

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

module DearImGui.Raw.Internal
  ( FILE
  , ImBitArrayPtr
  , ImFileHandle
  , ImGuiDemoMarkerCallback
  , ImGuiErrorCallback
  , ImGuiKeyRoutingIndex
  , ImGuiTable
  , ImGuiTableColumn
  , ImGuiTableColumnIdx
  , ImGuiTableDrawChannelIdx
  , ImPoolIdx
  , ImStableVector_ImFontBaked_32 (..)
  , ImStb_STB_TexteditState
  , Stbrp_context_opaque
  , Stbrp_node
  , Stbrp_node_im
  , cImAbs
  , cImAbsDouble
  , cImAbsFloat
  , cImAlphaBlendColors
  , cImBezierCubicCalc
  , cImBezierCubicClosestPoint
  , cImBezierCubicClosestPointCasteljau
  , cImBezierQuadraticCalc
  , cImBitArrayClearAllBits
  , cImBitArrayClearBit
  , cImBitArrayGetStorageSizeInBytes
  , cImBitArraySetBit
  , cImBitArraySetBitRange
  , cImBitArrayTestBit
  , cImCeilFast
  , cImCharIsBlankA
  , cImCharIsBlankW
  , cImCharIsXdigitA
  , cImClamp
  , cImClampFloat
  , cImClampImVec2
  , cImCountSetBits
  , cImDot
  , cImExponentialMovingAverage
  , cImFileClose
  , cImFileGetSize
  , cImFileLoadToMemory
  , cImFileOpen
  , cImFileRead
  , cImFileWrite
  , cImFloor
  , cImFloorImVec2
  , cImFontAtlasAddDrawListSharedData
  , cImFontAtlasBakedAdd
  , cImFontAtlasBakedAddFontGlyph
  , cImFontAtlasBakedAddFontGlyphAdvancedX
  , cImFontAtlasBakedDiscard
  , cImFontAtlasBakedDiscardFontGlyph
  , cImFontAtlasBakedGetClosestMatch
  , cImFontAtlasBakedGetId
  , cImFontAtlasBakedGetOrAdd
  , cImFontAtlasBakedSetFontGlyphBitmap
  , cImFontAtlasBuildClear
  , cImFontAtlasBuildDestroy
  , cImFontAtlasBuildDiscardBakes
  , cImFontAtlasBuildGetOversampleFactors
  , cImFontAtlasBuildInit
  , cImFontAtlasBuildLegacyPreloadAllGlyphRanges
  , cImFontAtlasBuildMain
  , cImFontAtlasBuildNotifySetFont
  , cImFontAtlasBuildRenderBitmapFromString
  , cImFontAtlasBuildSetupFontLoader
  , cImFontAtlasBuildSetupFontSpecialGlyphs
  , cImFontAtlasBuildUpdatePointers
  , cImFontAtlasDebugLogTextureRequests
  , cImFontAtlasFontDestroyOutput
  , cImFontAtlasFontDestroySourceData
  , cImFontAtlasFontDiscardBakes
  , cImFontAtlasFontInitOutput
  , cImFontAtlasFontRebuildOutput
  , cImFontAtlasFontSourceAddToFont
  , cImFontAtlasFontSourceInit
  , cImFontAtlasGetMouseCursorTexData
  , cImFontAtlasPackAddRect
  , cImFontAtlasPackDiscardRect
  , cImFontAtlasPackGetRect
  , cImFontAtlasPackGetRectSafe
  , cImFontAtlasPackInit
  , cImFontAtlasRectId_GetGeneration
  , cImFontAtlasRectId_GetIndex
  , cImFontAtlasRectId_Make
  , cImFontAtlasRemoveDrawListSharedData
  , cImFontAtlasTextureAdd
  , cImFontAtlasTextureBlockConvert
  , cImFontAtlasTextureBlockCopy
  , cImFontAtlasTextureBlockFill
  , cImFontAtlasTextureBlockQueueUpload
  , cImFontAtlasTextureCompact
  , cImFontAtlasTextureGetSizeEstimate
  , cImFontAtlasTextureGrow
  , cImFontAtlasTextureMakeSpace
  , cImFontAtlasTextureRepack
  , cImFontAtlasUpdateDrawListsSharedData
  , cImFontAtlasUpdateDrawListsTextures
  , cImFontAtlasUpdateNewFrame
  , cImFontCalcTextSizeEx
  , cImFontCalcWordWrapPositionEx
  , cImFormatStringToTempBufferUnformatted
  , cImFormatStringUnformatted
  , cImHashData
  , cImHashSkipUncontributingPrefix
  , cImHashStr
  , cImInvLength
  , cImIsFloatAboveGuaranteedIntegerPrecision
  , cImIsPowerOfTwo
  , cImIsPowerOfTwoImU64
  , cImIsTruncated
  , cImIsTruncated4
  , cImLengthSqr
  , cImLengthSqrImVec4
  , cImLerp
  , cImLerpImVec2
  , cImLerpImVec4
  , cImLineClosestPoint
  , cImLinearRemapClamp
  , cImLinearSweep
  , cImLog
  , cImLogDouble
  , cImLowerBound
  , cImMax
  , cImMaxFloat
  , cImMaxImVec2
  , cImMemdup
  , cImMin
  , cImMinFloat
  , cImMinImVec2
  , cImModPositive
  , cImMul
  , cImParseFormatFindEnd
  , cImParseFormatFindStart
  , cImParseFormatPrecision
  , cImParseFormatSanitizeForPrinting
  , cImParseFormatSanitizeForScanning
  , cImParseFormatTrimDecorations
  , cImPow
  , cImPowDouble
  , cImRotate
  , cImRoundPositive64
  , cImRoundSigned64
  , cImRsqrt
  , cImRsqrtDouble
  , cImRsqrtPrecise
  , cImSaturate
  , cImSign
  , cImSignDouble
  , cImStrSkipBlank
  , cImStrTrimBlanks
  , cImStrbol
  , cImStrchrRange
  , cImStrdup
  , cImStrdupcpy
  , cImStreolRange
  , cImStricmp
  , cImStristr
  , cImStrlenW
  , cImStrncpy
  , cImStrnicmp
  , cImTextCalcWordWrapNextLineStart
  , cImTextCharFromUtf8
  , cImTextCharToUtf8
  , cImTextClassifierClear
  , cImTextClassifierSetCharClass
  , cImTextClassifierSetCharClassFromStr
  , cImTextCountCharsFromUtf8
  , cImTextCountLines
  , cImTextCountUtf8BytesFromChar
  , cImTextCountUtf8BytesFromStr
  , cImTextFindPreviousUtf8Codepoint
  , cImTextFindValidUtf8CodepointEnd
  , cImTextInitClassifiers
  , cImTextStrFromUtf8
  , cImTextStrToUtf8
  , cImTextureDataGetFormatBytesPerPixel
  , cImTextureDataGetFormatName
  , cImTextureDataGetStatusName
  , cImTextureDataQueueUpload
  , cImTextureDataUpdateNewFrame
  , cImToUpper
  , cImTriangleArea
  , cImTriangleBarycentricCoords
  , cImTriangleClosestPoint
  , cImTriangleContainsPoint
  , cImTriangleIsClockwise
  , cImTrunc
  , cImTrunc64
  , cImTruncImVec2
  , cImUpperPowerOfTwo
  , c_cImBezierCubicCalc
  , c_cImBezierCubicClosestPoint
  , c_cImBezierCubicClosestPointCasteljau
  , c_cImBezierQuadraticCalc
  , c_cImClampImVec2
  , c_cImDot
  , c_cImFloorImVec2
  , c_cImFontAtlasTextureGetSizeEstimate
  , c_cImFontAtlasUpdateDrawListsTextures
  , c_cImFontCalcTextSizeEx
  , c_cImInvLength
  , c_cImLengthSqr
  , c_cImLengthSqrImVec4
  , c_cImLerp
  , c_cImLerpImVec2
  , c_cImLerpImVec4
  , c_cImLineClosestPoint
  , c_cImMaxImVec2
  , c_cImMinImVec2
  , c_cImMul
  , c_cImRotate
  , c_cImTriangleArea
  , c_cImTriangleBarycentricCoords
  , c_cImTriangleClosestPoint
  , c_cImTriangleContainsPoint
  , c_cImTriangleIsClockwise
  , c_cImTruncImVec2
  , data_Length
  , destroyImGuiTable
  , destroyImGuiTableColumn
  , destroyImStableVector_ImFontBaked_32
  , destroyStbrp_context_opaque
  , imStableVector_ImFontBaked_32_clear
  , imStableVector_ImFontBaked_32_reserve
  , imStableVector_ImFontBaked_32_resize
  , initImGuiTable
  , initImGuiTableColumn
  , initImStableVector_ImFontBaked_32
  , initStbrp_context_opaque
  , pattern DOCKING_HOST_DRAW_CHANNEL_BG
  , pattern DOCKING_HOST_DRAW_CHANNEL_FG
  , pattern IMGUI_FONT_SIZE_MAX
  , pattern IMGUI_FONT_SIZE_THRESHOLD_FOR_LOADADVANCEXONLYMODE
  , pattern IMGUI_TABLE_MAX_COLUMNS
  , pattern IMGUI_WINDOW_HARD_MIN_SIZE
  , pattern IMSTB_TEXTEDIT_GETWIDTH_NEWLINE
  , pattern IMSTB_TEXTEDIT_UNDOCHARCOUNT
  , pattern IMSTB_TEXTEDIT_UNDOSTATECOUNT
  , pattern IM_DRAWLIST_ARCFAST_TABLE_SIZE
  , pattern IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX
  , pattern IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN
  , pattern IM_DRAWLIST_TEX_CORNERS_ROUNDING_MAX
  , pattern IM_DRAWLIST_TEX_CORNERS_THICKNESS_MAX
  , pattern IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH
  , pattern IM_DRAWLIST_TEX_LINES_SAMPLE_COUNT
  , pattern IM_DRAWLIST_TEX_LINES_WIDTH_MAX
  , pattern IM_PI
  , pattern IM_TABSIZE
  , pattern ImFontAtlasRectId_GenerationMask_
  , pattern ImFontAtlasRectId_GenerationShift_
  , pattern ImFontAtlasRectId_IndexMask_
  , pattern ImGuiKey_LegacyNativeKey_BEGIN
  , pattern ImGuiKey_LegacyNativeKey_END
  , rowBgColorLength
  , withDefaultImGuiTable
  , withDefaultImGuiTableColumn
  , withDefaultImStableVector_ImFontBaked_32
  , withDefaultStbrp_context_opaque
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImDrawTextFlags, ImGuiID, ImS16, ImS8, ImU16, ImU32, ImU64, ImU8, ImWchar)
import DearImGui.Raw.Enums.ImGuiMouseCursor (ImGuiMouseCursor)
import DearImGui.Raw.Enums.ImGuiTableColumnFlags (ImGuiTableColumnFlags)
import DearImGui.Raw.Enums.ImGuiTableFlags (ImGuiTableFlags)
import DearImGui.Raw.Enums.ImTextureFormat (ImTextureFormat)
import DearImGui.Raw.Enums.ImTextureStatus (ImTextureStatus)
import DearImGui.Raw.ImDrawListSplitter (ImDrawListSplitter)
import DearImGui.Raw.ImFont (ImFont)
import DearImGui.Raw.ImFontAtlas (ImFontAtlas)
import DearImGui.Raw.ImFontAtlasRect (Id)
import DearImGui.Raw.ImFontBaked (ImFontBaked)
import DearImGui.Raw.ImFontConfig (ImFontConfig)
import DearImGui.Raw.ImFontGlyph (ImFontGlyph)
import DearImGui.Raw.ImGuiStoragePair (ImGuiStoragePair)
import DearImGui.Raw.ImGuiTableColumnSortSpecs (ImGuiTableColumnSortSpecs)
import DearImGui.Raw.ImGuiTableSortSpecs (ImGuiTableSortSpecs)
import DearImGui.Raw.ImGuiTextBuffer (ImGuiTextBuffer)
import DearImGui.Raw.ImTextureData (ImTextureData)
import DearImGui.Raw.ImTextureRect (ImTextureRect)
import DearImGui.Raw.ImTextureRef (ImTextureRef)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVec4 (ImVec4)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal.Enums.ImWcharClass (ImWcharClass)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImDrawListSharedData (ImDrawListSharedData)
import DearImGui.Raw.Internal.ImFontAtlasRectEntry (ImFontAtlasRectEntry)
import DearImGui.Raw.Internal.ImFontLoader (ImFontLoader)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImGuiContext (ImGuiContext)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImGuiTableCellData (ImGuiTableCellData)
import DearImGui.Raw.Internal.ImGuiTableInstanceData (ImGuiTableInstanceData)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImGuiTableTempData (ImGuiTableTempData)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImGuiWindow (ImGuiWindow)
import DearImGui.Raw.Internal.ImRect (ImRect)
import DearImGui.Raw.Internal.ImSpan (ImSpan)
import DearImGui.Raw.Internal.ImVec2i (ImVec2i)
import Foreign.C.String (CString)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Utils (with)
import Foreign.Ptr (FunPtr, Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))

#include "dcimgui_nodefaultargfunctions_internal.h"

-- typedefs

-- | Name for use in structs
type ImBitArrayPtr = Ptr ImU32

type ImFileHandle = Ptr FILE

type ImGuiDemoMarkerCallback = FunPtr (CString -> CInt -> CString -> IO ())

-- | The error callback is currently not public, as it is expected that only advanced users will rely on it.
-- Function signature for g.ErrorCallback
type ImGuiErrorCallback = FunPtr ((Ptr ImGuiContext) -> (Ptr ()) -> CString -> IO ())

type ImGuiKeyRoutingIndex = ImS16

-- | Helper: ImPool<>
-- Basic keyed storage for contiguous instances, slow/amortized insertion, O(1) indexable, O(Log N) queries by ID over a dense/hot buffer,
-- Honor constructor/destructor. Add/remove invalidate all pointers. Indexes have the same lifetime as the associated object.
type ImPoolIdx = CInt

type Stbrp_node_im = Stbrp_node

type ImGuiTableDrawChannelIdx = ImU16

-- | Table column indexing
type ImGuiTableColumnIdx = ImS16

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions_internal.h" "ImStableVector_ImFontBaked_32" #-} ImStableVector_ImFontBaked_32 = ImStableVector_ImFontBaked_32
  { size :: CInt
  , capacity :: CInt
  , blocks :: ImVector (Ptr ImFontBaked)
  }
  deriving (Eq, Show)
instance Storable ImStableVector_ImFontBaked_32 where
  sizeOf _    = #{size ImStableVector_ImFontBaked_32}
  alignment _ = #{alignment ImStableVector_ImFontBaked_32}
  peek p = ImStableVector_ImFontBaked_32 <$> #{peek ImStableVector_ImFontBaked_32, Size} p <*> #{peek ImStableVector_ImFontBaked_32, Capacity} p <*> #{peek ImStableVector_ImFontBaked_32, Blocks} p
  poke p v = do
    #{poke ImStableVector_ImFontBaked_32, Size} p v.size
    #{poke ImStableVector_ImFontBaked_32, Capacity} p v.capacity
    #{poke ImStableVector_ImFontBaked_32, Blocks} p v.blocks

instance HasField "size" (Ptr ImStableVector_ImFontBaked_32) (Ptr CInt) where
  getField = #{ptr ImStableVector_ImFontBaked_32, Size}

instance HasField "capacity" (Ptr ImStableVector_ImFontBaked_32) (Ptr CInt) where
  getField = #{ptr ImStableVector_ImFontBaked_32, Capacity}

instance HasField "blocks" (Ptr ImStableVector_ImFontBaked_32) (Ptr (ImVector (Ptr ImFontBaked))) where
  getField = #{ptr ImStableVector_ImFontBaked_32, Blocks}

foreign import capi unsafe "DearImGuiWrappers.h ImStableVector_ImFontBaked_32_Init_wrap"
  initImStableVector_ImFontBaked_32
    :: Ptr ImStableVector_ImFontBaked_32
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImStableVector_ImFontBaked_32_Destroy_wrap"
  destroyImStableVector_ImFontBaked_32
    :: Ptr ImStableVector_ImFontBaked_32
    -> IO ()

withDefaultImStableVector_ImFontBaked_32 :: (Ptr ImStableVector_ImFontBaked_32 -> IO a) -> IO a
withDefaultImStableVector_ImFontBaked_32 k = alloca $ \p -> bracket_ (initImStableVector_ImFontBaked_32 p) (destroyImStableVector_ImFontBaked_32 p) (k p)

data ImStb_STB_TexteditState

data Stbrp_context_opaque
instance Storable Stbrp_context_opaque where
  sizeOf _    = #{size stbrp_context_opaque}
  alignment _ = #{alignment stbrp_context_opaque}
  peek _ = error "Stbrp_context_opaque: opaque struct, peek not supported in v0"
  poke _ _ = error "Stbrp_context_opaque: opaque struct, poke not supported in v0"

instance HasField "data_" (Ptr Stbrp_context_opaque) (Ptr CChar) where
  getField = #{ptr stbrp_context_opaque, data}

data_Length :: Int
data_Length = #{const 80}

foreign import capi unsafe "DearImGuiWrappers.h stbrp_context_opaque_Init_wrap"
  initStbrp_context_opaque
    :: Ptr Stbrp_context_opaque
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h stbrp_context_opaque_Destroy_wrap"
  destroyStbrp_context_opaque
    :: Ptr Stbrp_context_opaque
    -> IO ()

withDefaultStbrp_context_opaque :: (Ptr Stbrp_context_opaque -> IO a) -> IO a
withDefaultStbrp_context_opaque k = alloca $ \p -> bracket_ (initStbrp_context_opaque p) (destroyStbrp_context_opaque p) (k p)

data Stbrp_node

data FILE

data ImGuiTable
instance Storable ImGuiTable where
  sizeOf _    = #{size ImGuiTable}
  alignment _ = #{alignment ImGuiTable}
  peek _ = error "ImGuiTable: opaque struct, peek not supported in v0"
  poke _ _ = error "ImGuiTable: opaque struct, poke not supported in v0"

instance HasField "iD" (Ptr ImGuiTable) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTable, ID}

instance HasField "flags" (Ptr ImGuiTable) (Ptr ImGuiTableFlags) where
  getField = #{ptr ImGuiTable, Flags}

instance HasField "rawData" (Ptr ImGuiTable) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiTable, RawData}

instance HasField "tempData" (Ptr ImGuiTable) (Ptr (Ptr ImGuiTableTempData)) where
  getField = #{ptr ImGuiTable, TempData}

instance HasField "columns" (Ptr ImGuiTable) (Ptr (ImSpan ImGuiTableColumn)) where
  getField = #{ptr ImGuiTable, Columns}

instance HasField "displayOrderToIndex" (Ptr ImGuiTable) (Ptr (ImSpan ImGuiTableColumnIdx)) where
  getField = #{ptr ImGuiTable, DisplayOrderToIndex}

instance HasField "rowCellData" (Ptr ImGuiTable) (Ptr (ImSpan ImGuiTableCellData)) where
  getField = #{ptr ImGuiTable, RowCellData}

instance HasField "enabledMaskByDisplayOrder" (Ptr ImGuiTable) (Ptr ImBitArrayPtr) where
  getField = #{ptr ImGuiTable, EnabledMaskByDisplayOrder}

instance HasField "enabledMaskByIndex" (Ptr ImGuiTable) (Ptr ImBitArrayPtr) where
  getField = #{ptr ImGuiTable, EnabledMaskByIndex}

instance HasField "visibleMaskByIndex" (Ptr ImGuiTable) (Ptr ImBitArrayPtr) where
  getField = #{ptr ImGuiTable, VisibleMaskByIndex}

instance HasField "settingsLoadedFlags" (Ptr ImGuiTable) (Ptr ImGuiTableFlags) where
  getField = #{ptr ImGuiTable, SettingsLoadedFlags}

instance HasField "settingsOffset" (Ptr ImGuiTable) (Ptr CInt) where
  getField = #{ptr ImGuiTable, SettingsOffset}

instance HasField "lastFrameActive" (Ptr ImGuiTable) (Ptr CInt) where
  getField = #{ptr ImGuiTable, LastFrameActive}

instance HasField "columnsCount" (Ptr ImGuiTable) (Ptr CInt) where
  getField = #{ptr ImGuiTable, ColumnsCount}

instance HasField "currentRow" (Ptr ImGuiTable) (Ptr CInt) where
  getField = #{ptr ImGuiTable, CurrentRow}

instance HasField "currentColumn" (Ptr ImGuiTable) (Ptr CInt) where
  getField = #{ptr ImGuiTable, CurrentColumn}

instance HasField "instanceCurrent" (Ptr ImGuiTable) (Ptr ImS16) where
  getField = #{ptr ImGuiTable, InstanceCurrent}

instance HasField "instanceInteracted" (Ptr ImGuiTable) (Ptr ImS16) where
  getField = #{ptr ImGuiTable, InstanceInteracted}

instance HasField "rowPosY1" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RowPosY1}

instance HasField "rowPosY2" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RowPosY2}

instance HasField "rowMinHeight" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RowMinHeight}

instance HasField "rowCellPaddingY" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RowCellPaddingY}

instance HasField "rowTextBaseline" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RowTextBaseline}

instance HasField "rowIndentOffsetX" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RowIndentOffsetX}

instance HasField "rowBgColorCounter" (Ptr ImGuiTable) (Ptr CInt) where
  getField = #{ptr ImGuiTable, RowBgColorCounter}

instance HasField "rowBgColor" (Ptr ImGuiTable) (Ptr ImU32) where
  getField = #{ptr ImGuiTable, RowBgColor}

rowBgColorLength :: Int
rowBgColorLength = #{const 2}

instance HasField "borderColorStrong" (Ptr ImGuiTable) (Ptr ImU32) where
  getField = #{ptr ImGuiTable, BorderColorStrong}

instance HasField "borderColorLight" (Ptr ImGuiTable) (Ptr ImU32) where
  getField = #{ptr ImGuiTable, BorderColorLight}

instance HasField "borderX1" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, BorderX1}

instance HasField "borderX2" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, BorderX2}

instance HasField "hostIndentX" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, HostIndentX}

instance HasField "minColumnWidth" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, MinColumnWidth}

instance HasField "outerPaddingX" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, OuterPaddingX}

instance HasField "cellPaddingX" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, CellPaddingX}

instance HasField "cellSpacingX1" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, CellSpacingX1}

instance HasField "cellSpacingX2" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, CellSpacingX2}

instance HasField "innerWidth" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, InnerWidth}

instance HasField "columnsGivenWidth" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, ColumnsGivenWidth}

instance HasField "columnsAutoFitWidth" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, ColumnsAutoFitWidth}

instance HasField "columnsStretchSumWeights" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, ColumnsStretchSumWeights}

instance HasField "resizedColumnNextWidth" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, ResizedColumnNextWidth}

instance HasField "resizeLockMinContentsX2" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, ResizeLockMinContentsX2}

instance HasField "refScale" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, RefScale}

instance HasField "angledHeadersHeight" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, AngledHeadersHeight}

instance HasField "angledHeadersSlope" (Ptr ImGuiTable) (Ptr Float) where
  getField = #{ptr ImGuiTable, AngledHeadersSlope}

instance HasField "outerRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, OuterRect}

instance HasField "innerRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, InnerRect}

instance HasField "workRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, WorkRect}

instance HasField "innerClipRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, InnerClipRect}

instance HasField "bgClipRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, BgClipRect}

instance HasField "bg0ClipRectForDrawCmd" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, Bg0ClipRectForDrawCmd}

instance HasField "bg2ClipRectForDrawCmd" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, Bg2ClipRectForDrawCmd}

instance HasField "hostClipRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, HostClipRect}

instance HasField "hostBackupInnerClipRect" (Ptr ImGuiTable) (Ptr ImRect) where
  getField = #{ptr ImGuiTable, HostBackupInnerClipRect}

instance HasField "outerWindow" (Ptr ImGuiTable) (Ptr (Ptr ImGuiWindow)) where
  getField = #{ptr ImGuiTable, OuterWindow}

instance HasField "innerWindow" (Ptr ImGuiTable) (Ptr (Ptr ImGuiWindow)) where
  getField = #{ptr ImGuiTable, InnerWindow}

instance HasField "columnsNames" (Ptr ImGuiTable) (Ptr ImGuiTextBuffer) where
  getField = #{ptr ImGuiTable, ColumnsNames}

instance HasField "drawSplitter" (Ptr ImGuiTable) (Ptr (Ptr ImDrawListSplitter)) where
  getField = #{ptr ImGuiTable, DrawSplitter}

instance HasField "instanceDataFirst" (Ptr ImGuiTable) (Ptr ImGuiTableInstanceData) where
  getField = #{ptr ImGuiTable, InstanceDataFirst}

instance HasField "instanceDataExtra" (Ptr ImGuiTable) (Ptr (ImVector ImGuiTableInstanceData)) where
  getField = #{ptr ImGuiTable, InstanceDataExtra}

instance HasField "sortSpecs" (Ptr ImGuiTable) (Ptr ImGuiTableSortSpecs) where
  getField = #{ptr ImGuiTable, SortSpecs}

instance HasField "sortSpecsMulti" (Ptr ImGuiTable) (Ptr (ImVector ImGuiTableColumnSortSpecs)) where
  getField = #{ptr ImGuiTable, SortSpecsMulti}

instance HasField "sortSpecsSingle" (Ptr ImGuiTable) (Ptr ImGuiTableColumnSortSpecs) where
  getField = #{ptr ImGuiTable, SortSpecsSingle}

instance HasField "sortSpecsCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, SortSpecsCount}

instance HasField "columnsEnabledCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, ColumnsEnabledCount}

instance HasField "columnsEnabledFixedCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, ColumnsEnabledFixedCount}

instance HasField "declColumnsCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, DeclColumnsCount}

instance HasField "angledHeadersCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, AngledHeadersCount}

instance HasField "hoveredColumnBody" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, HoveredColumnBody}

instance HasField "hoveredColumnBorder" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, HoveredColumnBorder}

instance HasField "highlightColumnHeader" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, HighlightColumnHeader}

instance HasField "autoFitSingleColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, AutoFitSingleColumn}

instance HasField "resizedColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, ResizedColumn}

instance HasField "lastResizedColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, LastResizedColumn}

instance HasField "heldHeaderColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, HeldHeaderColumn}

instance HasField "lastHeldHeaderColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, LastHeldHeaderColumn}

instance HasField "reorderColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, ReorderColumn}

instance HasField "reorderColumnDstOrder" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, ReorderColumnDstOrder}

instance HasField "leftMostEnabledColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, LeftMostEnabledColumn}

instance HasField "rightMostEnabledColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, RightMostEnabledColumn}

instance HasField "leftMostStretchedColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, LeftMostStretchedColumn}

instance HasField "rightMostStretchedColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, RightMostStretchedColumn}

instance HasField "contextPopupColumn" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, ContextPopupColumn}

instance HasField "freezeRowsRequest" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, FreezeRowsRequest}

instance HasField "freezeRowsCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, FreezeRowsCount}

instance HasField "freezeColumnsRequest" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, FreezeColumnsRequest}

instance HasField "freezeColumnsCount" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, FreezeColumnsCount}

instance HasField "rowCellDataCurrent" (Ptr ImGuiTable) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTable, RowCellDataCurrent}

instance HasField "dummyDrawChannel" (Ptr ImGuiTable) (Ptr ImGuiTableDrawChannelIdx) where
  getField = #{ptr ImGuiTable, DummyDrawChannel}

instance HasField "bg2DrawChannelCurrent" (Ptr ImGuiTable) (Ptr ImGuiTableDrawChannelIdx) where
  getField = #{ptr ImGuiTable, Bg2DrawChannelCurrent}

instance HasField "bg2DrawChannelUnfrozen" (Ptr ImGuiTable) (Ptr ImGuiTableDrawChannelIdx) where
  getField = #{ptr ImGuiTable, Bg2DrawChannelUnfrozen}

instance HasField "navLayer" (Ptr ImGuiTable) (Ptr ImS8) where
  getField = #{ptr ImGuiTable, NavLayer}

instance HasField "isLayoutLocked" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsLayoutLocked}

instance HasField "isInsideRow" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsInsideRow}

instance HasField "isNewTable" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsNewTable}

instance HasField "isInitializing" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsInitializing}

instance HasField "isReconcileMode" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsReconcileMode}

instance HasField "isSortSpecsDirty" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsSortSpecsDirty}

instance HasField "isUsingHeaders" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsUsingHeaders}

instance HasField "isContextPopupOpen" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsContextPopupOpen}

instance HasField "disableDefaultContextMenu" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, DisableDefaultContextMenu}

instance HasField "isSettingsRequestLoad" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsSettingsRequestLoad}

instance HasField "isSettingsDirty" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsSettingsDirty}

instance HasField "isDefaultDisplayOrder" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsDefaultDisplayOrder}

instance HasField "isDefaultVisibility" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsDefaultVisibility}

instance HasField "isResetAllRequest" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsResetAllRequest}

instance HasField "isResetDisplayOrderRequest" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsResetDisplayOrderRequest}

instance HasField "isResetVisibilityRequest" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsResetVisibilityRequest}

instance HasField "isUnfrozenRows" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsUnfrozenRows}

instance HasField "isDefaultSizingPolicy" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsDefaultSizingPolicy}

instance HasField "isActiveIdAliveBeforeTable" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsActiveIdAliveBeforeTable}

instance HasField "isActiveIdInTable" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, IsActiveIdInTable}

instance HasField "hasScrollbarYCurr" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, HasScrollbarYCurr}

instance HasField "hasScrollbarYPrev" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, HasScrollbarYPrev}

instance HasField "memoryCompacted" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, MemoryCompacted}

instance HasField "hostSkipItems" (Ptr ImGuiTable) (Ptr CBool) where
  getField = #{ptr ImGuiTable, HostSkipItems}

foreign import capi unsafe "DearImGuiWrappers.h ImGuiTable_Init_wrap"
  initImGuiTable
    :: Ptr ImGuiTable
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGuiTable_Destroy_wrap"
  destroyImGuiTable
    :: Ptr ImGuiTable
    -> IO ()

withDefaultImGuiTable :: (Ptr ImGuiTable -> IO a) -> IO a
withDefaultImGuiTable k = alloca $ \p -> bracket_ (initImGuiTable p) (destroyImGuiTable p) (k p)

data ImGuiTableColumn
instance Storable ImGuiTableColumn where
  sizeOf _    = #{size ImGuiTableColumn}
  alignment _ = #{alignment ImGuiTableColumn}
  peek _ = error "ImGuiTableColumn: opaque struct, peek not supported in v0"
  poke _ _ = error "ImGuiTableColumn: opaque struct, poke not supported in v0"

instance HasField "flags" (Ptr ImGuiTableColumn) (Ptr ImGuiTableColumnFlags) where
  getField = #{ptr ImGuiTableColumn, Flags}

instance HasField "widthGiven" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, WidthGiven}

instance HasField "minX" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, MinX}

instance HasField "maxX" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, MaxX}

instance HasField "widthRequest" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, WidthRequest}

instance HasField "widthAuto" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, WidthAuto}

instance HasField "widthMax" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, WidthMax}

instance HasField "stretchWeight" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, StretchWeight}

instance HasField "initStretchWeightOrWidth" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, InitStretchWeightOrWidth}

instance HasField "clipRect" (Ptr ImGuiTableColumn) (Ptr ImRect) where
  getField = #{ptr ImGuiTableColumn, ClipRect}

instance HasField "iD" (Ptr ImGuiTableColumn) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTableColumn, ID}

instance HasField "userData" (Ptr ImGuiTableColumn) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTableColumn, UserData}

instance HasField "workMinX" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, WorkMinX}

instance HasField "workMaxX" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, WorkMaxX}

instance HasField "itemWidth" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, ItemWidth}

instance HasField "contentMaxXFrozen" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, ContentMaxXFrozen}

instance HasField "contentMaxXUnfrozen" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, ContentMaxXUnfrozen}

instance HasField "contentMaxXHeadersUsed" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, ContentMaxXHeadersUsed}

instance HasField "contentMaxXHeadersIdeal" (Ptr ImGuiTableColumn) (Ptr Float) where
  getField = #{ptr ImGuiTableColumn, ContentMaxXHeadersIdeal}

instance HasField "nameOffset" (Ptr ImGuiTableColumn) (Ptr ImS16) where
  getField = #{ptr ImGuiTableColumn, NameOffset}

instance HasField "displayOrder" (Ptr ImGuiTableColumn) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTableColumn, DisplayOrder}

instance HasField "indexWithinEnabledSet" (Ptr ImGuiTableColumn) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTableColumn, IndexWithinEnabledSet}

instance HasField "prevEnabledColumn" (Ptr ImGuiTableColumn) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTableColumn, PrevEnabledColumn}

instance HasField "nextEnabledColumn" (Ptr ImGuiTableColumn) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTableColumn, NextEnabledColumn}

instance HasField "sortOrder" (Ptr ImGuiTableColumn) (Ptr ImGuiTableColumnIdx) where
  getField = #{ptr ImGuiTableColumn, SortOrder}

instance HasField "drawChannelCurrent" (Ptr ImGuiTableColumn) (Ptr ImGuiTableDrawChannelIdx) where
  getField = #{ptr ImGuiTableColumn, DrawChannelCurrent}

instance HasField "drawChannelFrozen" (Ptr ImGuiTableColumn) (Ptr ImGuiTableDrawChannelIdx) where
  getField = #{ptr ImGuiTableColumn, DrawChannelFrozen}

instance HasField "drawChannelUnfrozen" (Ptr ImGuiTableColumn) (Ptr ImGuiTableDrawChannelIdx) where
  getField = #{ptr ImGuiTableColumn, DrawChannelUnfrozen}

instance HasField "isEnabled" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsEnabled}

instance HasField "isUserEnabled" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsUserEnabled}

instance HasField "isUserEnabledNextFrame" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsUserEnabledNextFrame}

instance HasField "isVisibleX" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsVisibleX}

instance HasField "isVisibleY" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsVisibleY}

instance HasField "isRequestOutput" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsRequestOutput}

instance HasField "isSkipItems" (Ptr ImGuiTableColumn) (Ptr CBool) where
  getField = #{ptr ImGuiTableColumn, IsSkipItems}

instance HasField "navLayerCurrent" (Ptr ImGuiTableColumn) (Ptr ImS8) where
  getField = #{ptr ImGuiTableColumn, NavLayerCurrent}

instance HasField "sortDirectionsAvailList" (Ptr ImGuiTableColumn) (Ptr ImU8) where
  getField = #{ptr ImGuiTableColumn, SortDirectionsAvailList}

foreign import capi unsafe "DearImGuiWrappers.h ImGuiTableColumn_Init_wrap"
  initImGuiTableColumn
    :: Ptr ImGuiTableColumn
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGuiTableColumn_Destroy_wrap"
  destroyImGuiTableColumn
    :: Ptr ImGuiTableColumn
    -> IO ()

withDefaultImGuiTableColumn :: (Ptr ImGuiTableColumn -> IO a) -> IO a
withDefaultImGuiTableColumn k = alloca $ \p -> bracket_ (initImGuiTableColumn p) (destroyImGuiTableColumn p) (k p)

-- defines

pattern DOCKING_HOST_DRAW_CHANNEL_BG :: (Eq a, Num a) => a
pattern DOCKING_HOST_DRAW_CHANNEL_BG = #{const DOCKING_HOST_DRAW_CHANNEL_BG}

pattern DOCKING_HOST_DRAW_CHANNEL_FG :: (Eq a, Num a) => a
pattern DOCKING_HOST_DRAW_CHANNEL_FG = #{const DOCKING_HOST_DRAW_CHANNEL_FG}

pattern IMGUI_FONT_SIZE_MAX :: (Eq a, Fractional a) => a
pattern IMGUI_FONT_SIZE_MAX = 512.0

pattern IMGUI_FONT_SIZE_THRESHOLD_FOR_LOADADVANCEXONLYMODE :: (Eq a, Fractional a) => a
pattern IMGUI_FONT_SIZE_THRESHOLD_FOR_LOADADVANCEXONLYMODE = 128.0

pattern IMGUI_TABLE_MAX_COLUMNS :: (Eq a, Num a) => a
pattern IMGUI_TABLE_MAX_COLUMNS = #{const IMGUI_TABLE_MAX_COLUMNS}

pattern IMGUI_WINDOW_HARD_MIN_SIZE :: (Eq a, Fractional a) => a
pattern IMGUI_WINDOW_HARD_MIN_SIZE = 4.0

pattern IMSTB_TEXTEDIT_GETWIDTH_NEWLINE :: (Eq a, Fractional a) => a
pattern IMSTB_TEXTEDIT_GETWIDTH_NEWLINE = -1.0

pattern IMSTB_TEXTEDIT_UNDOCHARCOUNT :: (Eq a, Num a) => a
pattern IMSTB_TEXTEDIT_UNDOCHARCOUNT = #{const IMSTB_TEXTEDIT_UNDOCHARCOUNT}

pattern IMSTB_TEXTEDIT_UNDOSTATECOUNT :: (Eq a, Num a) => a
pattern IMSTB_TEXTEDIT_UNDOSTATECOUNT = #{const IMSTB_TEXTEDIT_UNDOSTATECOUNT}

pattern IM_DRAWLIST_ARCFAST_TABLE_SIZE :: (Eq a, Num a) => a
pattern IM_DRAWLIST_ARCFAST_TABLE_SIZE = #{const IM_DRAWLIST_ARCFAST_TABLE_SIZE}

pattern IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX :: (Eq a, Num a) => a
pattern IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX = #{const IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX}

pattern IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN :: (Eq a, Num a) => a
pattern IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN = #{const IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN}

pattern IM_DRAWLIST_TEX_CORNERS_ROUNDING_MAX :: (Eq a, Num a) => a
pattern IM_DRAWLIST_TEX_CORNERS_ROUNDING_MAX = #{const IM_DRAWLIST_TEX_CORNERS_ROUNDING_MAX}

pattern IM_DRAWLIST_TEX_CORNERS_THICKNESS_MAX :: (Eq a, Num a) => a
pattern IM_DRAWLIST_TEX_CORNERS_THICKNESS_MAX = #{const IM_DRAWLIST_TEX_CORNERS_THICKNESS_MAX}

pattern IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH :: (Eq a, Num a) => a
pattern IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH = #{const IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH}

pattern IM_DRAWLIST_TEX_LINES_SAMPLE_COUNT :: (Eq a, Num a) => a
pattern IM_DRAWLIST_TEX_LINES_SAMPLE_COUNT = #{const IM_DRAWLIST_TEX_LINES_SAMPLE_COUNT}

pattern IM_DRAWLIST_TEX_LINES_WIDTH_MAX :: (Eq a, Num a) => a
pattern IM_DRAWLIST_TEX_LINES_WIDTH_MAX = #{const IM_DRAWLIST_TEX_LINES_WIDTH_MAX}

pattern IM_PI :: (Eq a, Fractional a) => a
pattern IM_PI = 3.14159265358979323846

pattern IM_TABSIZE :: (Eq a, Num a) => a
pattern IM_TABSIZE = #{const IM_TABSIZE}

pattern ImFontAtlasRectId_GenerationMask_ :: (Eq a, Num a) => a
pattern ImFontAtlasRectId_GenerationMask_ = #{const ImFontAtlasRectId_GenerationMask_}

pattern ImFontAtlasRectId_GenerationShift_ :: (Eq a, Num a) => a
pattern ImFontAtlasRectId_GenerationShift_ = #{const ImFontAtlasRectId_GenerationShift_}

pattern ImFontAtlasRectId_IndexMask_ :: (Eq a, Num a) => a
pattern ImFontAtlasRectId_IndexMask_ = #{const ImFontAtlasRectId_IndexMask_}

pattern ImGuiKey_LegacyNativeKey_BEGIN :: (Eq a, Num a) => a
pattern ImGuiKey_LegacyNativeKey_BEGIN = #{const ImGuiKey_LegacyNativeKey_BEGIN}

pattern ImGuiKey_LegacyNativeKey_END :: (Eq a, Num a) => a
pattern ImGuiKey_LegacyNativeKey_END = #{const ImGuiKey_LegacyNativeKey_END}

-- functions

-- C: void clear(ImStableVector_ImFontBaked_32* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImStableVector_ImFontBaked_32_clear"
  imStableVector_ImFontBaked_32_clear
    :: (Ptr ImStableVector_ImFontBaked_32) -- ^ self
    -> IO ()

-- C: void reserve(ImStableVector_ImFontBaked_32* self, int new_cap)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImStableVector_ImFontBaked_32_reserve"
  imStableVector_ImFontBaked_32_reserve
    :: (Ptr ImStableVector_ImFontBaked_32) -- ^ self
    -> CInt -- ^ new_cap
    -> IO ()

-- C: void resize(ImStableVector_ImFontBaked_32* self, int new_size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImStableVector_ImFontBaked_32_resize"
  imStableVector_ImFontBaked_32_resize
    :: (Ptr ImStableVector_ImFontBaked_32) -- ^ self
    -> CInt -- ^ new_size
    -> IO ()

-- C: int ImAbs(int x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImAbs"
  cImAbs
    :: CInt -- ^ x
    -> IO CInt

-- C: double ImAbs(double x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImAbsDouble"
  cImAbsDouble
    :: Double -- ^ x
    -> IO Double

-- C: float ImAbs(float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImAbsFloat"
  cImAbsFloat
    :: Float -- ^ x
    -> IO Float

-- C: ImU32 ImAlphaBlendColors(ImU32 col_a, ImU32 col_b)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImAlphaBlendColors"
  cImAlphaBlendColors
    :: ImU32 -- ^ col_a
    -> ImU32 -- ^ col_b
    -> IO ImU32

foreign import capi unsafe "DearImGuiWrappers.h cImBezierCubicCalc_wrap"
  c_cImBezierCubicCalc
    :: (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> Float -- ^ t
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImBezierCubicCalc
  :: ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> Float -- ^ t
  -> IO ImVec2
cImBezierCubicCalc p1 p2 p3 p4 t =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> alloca $ \outPtr -> c_cImBezierCubicCalc p1Ptr p2Ptr p3Ptr p4Ptr t outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImBezierCubicClosestPoint_wrap"
  c_cImBezierCubicClosestPoint
    :: (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> (Ptr ImVec2) -- ^ p
    -> CInt -- ^ num_segments
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImBezierCubicClosestPoint
  :: ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> ImVec2 -- ^ p
  -> CInt -- ^ num_segments
  -> IO ImVec2
cImBezierCubicClosestPoint p1 p2 p3 p4 p num_segments =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> with p $ \pPtr -> alloca $ \outPtr -> c_cImBezierCubicClosestPoint p1Ptr p2Ptr p3Ptr p4Ptr pPtr num_segments outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImBezierCubicClosestPointCasteljau_wrap"
  c_cImBezierCubicClosestPointCasteljau
    :: (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> (Ptr ImVec2) -- ^ p4
    -> (Ptr ImVec2) -- ^ p
    -> Float -- ^ max_error
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImBezierCubicClosestPointCasteljau
  :: ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> ImVec2 -- ^ p4
  -> ImVec2 -- ^ p
  -> Float -- ^ max_error
  -> IO ImVec2
cImBezierCubicClosestPointCasteljau p1 p2 p3 p4 p max_error =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> with p4 $ \p4Ptr -> with p $ \pPtr -> alloca $ \outPtr -> c_cImBezierCubicClosestPointCasteljau p1Ptr p2Ptr p3Ptr p4Ptr pPtr max_error outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImBezierQuadraticCalc_wrap"
  c_cImBezierQuadraticCalc
    :: (Ptr ImVec2) -- ^ p1
    -> (Ptr ImVec2) -- ^ p2
    -> (Ptr ImVec2) -- ^ p3
    -> Float -- ^ t
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImBezierQuadraticCalc
  :: ImVec2 -- ^ p1
  -> ImVec2 -- ^ p2
  -> ImVec2 -- ^ p3
  -> Float -- ^ t
  -> IO ImVec2
cImBezierQuadraticCalc p1 p2 p3 t =
  with p1 $ \p1Ptr -> with p2 $ \p2Ptr -> with p3 $ \p3Ptr -> alloca $ \outPtr -> c_cImBezierQuadraticCalc p1Ptr p2Ptr p3Ptr t outPtr >> peek outPtr

-- C: void ImBitArrayClearAllBits(ImU32* arr, int bitcount)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImBitArrayClearAllBits"
  cImBitArrayClearAllBits
    :: (Ptr ImU32) -- ^ arr
    -> CInt -- ^ bitcount
    -> IO ()

-- C: void ImBitArrayClearBit(ImU32* arr, int n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImBitArrayClearBit"
  cImBitArrayClearBit
    :: (Ptr ImU32) -- ^ arr
    -> CInt -- ^ n
    -> IO ()

-- C: size_t ImBitArrayGetStorageSizeInBytes(int bitcount)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImBitArrayGetStorageSizeInBytes"
  cImBitArrayGetStorageSizeInBytes
    :: CInt -- ^ bitcount
    -> IO CSize

-- C: void ImBitArraySetBit(ImU32* arr, int n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImBitArraySetBit"
  cImBitArraySetBit
    :: (Ptr ImU32) -- ^ arr
    -> CInt -- ^ n
    -> IO ()

-- C: void ImBitArraySetBitRange(ImU32* arr, int n, int n2)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImBitArraySetBitRange"
  cImBitArraySetBitRange
    :: (Ptr ImU32) -- ^ arr
    -> CInt -- ^ n
    -> CInt -- ^ n2
    -> IO ()

-- C: bool ImBitArrayTestBit(const ImU32* arr, int n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImBitArrayTestBit"
  cImBitArrayTestBit
    :: (Ptr ImU32) -- ^ arr
    -> CInt -- ^ n
    -> IO CBool

-- C: float ImCeilFast(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImCeilFast"
  cImCeilFast
    :: Float -- ^ f
    -> IO Float

-- C: bool ImCharIsBlankA(char c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImCharIsBlankA"
  cImCharIsBlankA
    :: CChar -- ^ c
    -> IO CBool

-- C: bool ImCharIsBlankW(unsigned int c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImCharIsBlankW"
  cImCharIsBlankW
    :: CUInt -- ^ c
    -> IO CBool

-- C: bool ImCharIsXdigitA(char c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImCharIsXdigitA"
  cImCharIsXdigitA
    :: CChar -- ^ c
    -> IO CBool

-- C: int ImClamp(int v, int mn, int mx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImClamp"
  cImClamp
    :: CInt -- ^ v
    -> CInt -- ^ mn
    -> CInt -- ^ mx
    -> IO CInt

-- C: float ImClamp(float v, float mn, float mx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImClampFloat"
  cImClampFloat
    :: Float -- ^ v
    -> Float -- ^ mn
    -> Float -- ^ mx
    -> IO Float

foreign import capi unsafe "DearImGuiWrappers.h cImClampImVec2_wrap"
  c_cImClampImVec2
    :: (Ptr ImVec2) -- ^ v
    -> (Ptr ImVec2) -- ^ mn
    -> (Ptr ImVec2) -- ^ mx
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImClampImVec2
  :: ImVec2 -- ^ v
  -> ImVec2 -- ^ mn
  -> ImVec2 -- ^ mx
  -> IO ImVec2
cImClampImVec2 v mn mx =
  with v $ \vPtr -> with mn $ \mnPtr -> with mx $ \mxPtr -> alloca $ \outPtr -> c_cImClampImVec2 vPtr mnPtr mxPtr outPtr >> peek outPtr

-- C: unsigned int ImCountSetBits(unsigned int v)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImCountSetBits"
  cImCountSetBits
    :: CUInt -- ^ v
    -> IO CUInt

foreign import capi unsafe "DearImGuiWrappers.h cImDot_wrap"
  c_cImDot
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> IO Float

cImDot
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> IO Float
cImDot a b =
  with a $ \aPtr -> with b $ \bPtr -> c_cImDot aPtr bPtr

-- C: float ImExponentialMovingAverage(float avg, float sample, int n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImExponentialMovingAverage"
  cImExponentialMovingAverage
    :: Float -- ^ avg
    -> Float -- ^ sample
    -> CInt -- ^ n
    -> IO Float

-- C: bool ImFileClose(ImFileHandle file)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFileClose"
  cImFileClose
    :: ImFileHandle -- ^ file
    -> IO CBool

-- C: ImU64 ImFileGetSize(ImFileHandle file)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFileGetSize"
  cImFileGetSize
    :: ImFileHandle -- ^ file
    -> IO ImU64

-- C: void* ImFileLoadToMemory(const char* filename, const char* mode, size_t* out_file_size, int padding_bytes)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFileLoadToMemory"
  cImFileLoadToMemory
    :: CString -- ^ filename
    -> CString -- ^ mode
    -> (Ptr CSize) -- ^ out_file_size
    -> CInt -- ^ padding_bytes
    -> IO (Ptr ())

-- C: ImFileHandle ImFileOpen(const char* filename, const char* mode)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFileOpen"
  cImFileOpen
    :: CString -- ^ filename
    -> CString -- ^ mode
    -> IO ImFileHandle

-- C: ImU64 ImFileRead(void* data, ImU64 size, ImU64 count, ImFileHandle file)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFileRead"
  cImFileRead
    :: (Ptr ()) -- ^ data
    -> ImU64 -- ^ size
    -> ImU64 -- ^ count
    -> ImFileHandle -- ^ file
    -> IO ImU64

-- C: ImU64 ImFileWrite(const void* data, ImU64 size, ImU64 count, ImFileHandle file)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFileWrite"
  cImFileWrite
    :: (Ptr ()) -- ^ data
    -> ImU64 -- ^ size
    -> ImU64 -- ^ count
    -> ImFileHandle -- ^ file
    -> IO ImU64

-- C: float ImFloor(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFloor"
  cImFloor
    :: Float -- ^ f
    -> IO Float

foreign import capi unsafe "DearImGuiWrappers.h cImFloorImVec2_wrap"
  c_cImFloorImVec2
    :: (Ptr ImVec2) -- ^ v
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImFloorImVec2
  :: ImVec2 -- ^ v
  -> IO ImVec2
cImFloorImVec2 v =
  with v $ \vPtr -> alloca $ \outPtr -> c_cImFloorImVec2 vPtr outPtr >> peek outPtr

-- C: void ImFontAtlasAddDrawListSharedData(ImFontAtlas* atlas, ImDrawListSharedData* data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasAddDrawListSharedData"
  cImFontAtlasAddDrawListSharedData
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImDrawListSharedData) -- ^ data
    -> IO ()

-- C: ImFontBaked* ImFontAtlasBakedAdd(ImFontAtlas* atlas, ImFont* font, float font_size, float font_rasterizer_density, ImGuiID baked_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedAdd"
  cImFontAtlasBakedAdd
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> Float -- ^ font_size
    -> Float -- ^ font_rasterizer_density
    -> ImGuiID -- ^ baked_id
    -> IO (Ptr ImFontBaked)

-- C: ImFontGlyph* ImFontAtlasBakedAddFontGlyph(ImFontAtlas* atlas, ImFontBaked* baked, ImFontConfig* src, const ImFontGlyph* in_glyph)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedAddFontGlyph"
  cImFontAtlasBakedAddFontGlyph
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFontBaked) -- ^ baked
    -> (Ptr ImFontConfig) -- ^ src
    -> (Ptr ImFontGlyph) -- ^ in_glyph
    -> IO (Ptr ImFontGlyph)

-- C: void ImFontAtlasBakedAddFontGlyphAdvancedX(ImFontAtlas* atlas, ImFontBaked* baked, ImFontConfig* src, ImWchar codepoint, float advance_x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedAddFontGlyphAdvancedX"
  cImFontAtlasBakedAddFontGlyphAdvancedX
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFontBaked) -- ^ baked
    -> (Ptr ImFontConfig) -- ^ src
    -> ImWchar -- ^ codepoint
    -> Float -- ^ advance_x
    -> IO ()

-- C: void ImFontAtlasBakedDiscard(ImFontAtlas* atlas, ImFont* font, ImFontBaked* baked)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedDiscard"
  cImFontAtlasBakedDiscard
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> (Ptr ImFontBaked) -- ^ baked
    -> IO ()

-- C: void ImFontAtlasBakedDiscardFontGlyph(ImFontAtlas* atlas, ImFont* font, ImFontBaked* baked, ImFontGlyph* glyph)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedDiscardFontGlyph"
  cImFontAtlasBakedDiscardFontGlyph
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> (Ptr ImFontBaked) -- ^ baked
    -> (Ptr ImFontGlyph) -- ^ glyph
    -> IO ()

-- C: ImFontBaked* ImFontAtlasBakedGetClosestMatch(ImFontAtlas* atlas, ImFont* font, float font_size, float font_rasterizer_density)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedGetClosestMatch"
  cImFontAtlasBakedGetClosestMatch
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> Float -- ^ font_size
    -> Float -- ^ font_rasterizer_density
    -> IO (Ptr ImFontBaked)

-- C: ImGuiID ImFontAtlasBakedGetId(ImGuiID font_id, float baked_size, float rasterizer_density)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedGetId"
  cImFontAtlasBakedGetId
    :: ImGuiID -- ^ font_id
    -> Float -- ^ baked_size
    -> Float -- ^ rasterizer_density
    -> IO ImGuiID

-- C: ImFontBaked* ImFontAtlasBakedGetOrAdd(ImFontAtlas* atlas, ImFont* font, float font_size, float font_rasterizer_density)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedGetOrAdd"
  cImFontAtlasBakedGetOrAdd
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> Float -- ^ font_size
    -> Float -- ^ font_rasterizer_density
    -> IO (Ptr ImFontBaked)

-- C: void ImFontAtlasBakedSetFontGlyphBitmap(ImFontAtlas* atlas, ImFontBaked* baked, ImFontConfig* src, ImFontGlyph* glyph, ImTextureRect* r, const unsigned char* src_pixels, ImTextureFormat src_fmt, int src_pitch)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBakedSetFontGlyphBitmap"
  cImFontAtlasBakedSetFontGlyphBitmap
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFontBaked) -- ^ baked
    -> (Ptr ImFontConfig) -- ^ src
    -> (Ptr ImFontGlyph) -- ^ glyph
    -> (Ptr ImTextureRect) -- ^ r
    -> (Ptr CUChar) -- ^ src_pixels
    -> ImTextureFormat -- ^ src_fmt
    -> CInt -- ^ src_pitch
    -> IO ()

-- C: void ImFontAtlasBuildClear(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildClear"
  cImFontAtlasBuildClear
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasBuildDestroy(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildDestroy"
  cImFontAtlasBuildDestroy
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasBuildDiscardBakes(ImFontAtlas* atlas, int unused_frames)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildDiscardBakes"
  cImFontAtlasBuildDiscardBakes
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ unused_frames
    -> IO ()

-- C: void ImFontAtlasBuildGetOversampleFactors(ImFontConfig* src, ImFontBaked* baked, int* out_oversample_h, int* out_oversample_v)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildGetOversampleFactors"
  cImFontAtlasBuildGetOversampleFactors
    :: (Ptr ImFontConfig) -- ^ src
    -> (Ptr ImFontBaked) -- ^ baked
    -> (Ptr CInt) -- ^ out_oversample_h
    -> (Ptr CInt) -- ^ out_oversample_v
    -> IO ()

-- C: void ImFontAtlasBuildInit(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildInit"
  cImFontAtlasBuildInit
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasBuildLegacyPreloadAllGlyphRanges(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildLegacyPreloadAllGlyphRanges"
  cImFontAtlasBuildLegacyPreloadAllGlyphRanges
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasBuildMain(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildMain"
  cImFontAtlasBuildMain
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasBuildNotifySetFont(ImFontAtlas* atlas, ImFont* old_font, ImFont* new_font)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildNotifySetFont"
  cImFontAtlasBuildNotifySetFont
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ old_font
    -> (Ptr ImFont) -- ^ new_font
    -> IO ()

-- C: void ImFontAtlasBuildRenderBitmapFromString(ImFontAtlas* atlas, int x, int y, int w, int h, const char* in_str, char in_marker_char)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildRenderBitmapFromString"
  cImFontAtlasBuildRenderBitmapFromString
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ x
    -> CInt -- ^ y
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> CString -- ^ in_str
    -> CChar -- ^ in_marker_char
    -> IO ()

-- C: void ImFontAtlasBuildSetupFontLoader(ImFontAtlas* atlas, const ImFontLoader* font_loader)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildSetupFontLoader"
  cImFontAtlasBuildSetupFontLoader
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFontLoader) -- ^ font_loader
    -> IO ()

-- C: void ImFontAtlasBuildSetupFontSpecialGlyphs(ImFontAtlas* atlas, ImFont* font, ImFontConfig* src)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildSetupFontSpecialGlyphs"
  cImFontAtlasBuildSetupFontSpecialGlyphs
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> (Ptr ImFontConfig) -- ^ src
    -> IO ()

-- C: void ImFontAtlasBuildUpdatePointers(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasBuildUpdatePointers"
  cImFontAtlasBuildUpdatePointers
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasDebugLogTextureRequests(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasDebugLogTextureRequests"
  cImFontAtlasDebugLogTextureRequests
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasFontDestroyOutput(ImFontAtlas* atlas, ImFont* font)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontDestroyOutput"
  cImFontAtlasFontDestroyOutput
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> IO ()

-- C: void ImFontAtlasFontDestroySourceData(ImFontAtlas* atlas, ImFontConfig* src)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontDestroySourceData"
  cImFontAtlasFontDestroySourceData
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFontConfig) -- ^ src
    -> IO ()

-- C: void ImFontAtlasFontDiscardBakes(ImFontAtlas* atlas, ImFont* font, int unused_frames)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontDiscardBakes"
  cImFontAtlasFontDiscardBakes
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> CInt -- ^ unused_frames
    -> IO ()

-- C: bool ImFontAtlasFontInitOutput(ImFontAtlas* atlas, ImFont* font)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontInitOutput"
  cImFontAtlasFontInitOutput
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> IO CBool

-- C: void ImFontAtlasFontRebuildOutput(ImFontAtlas* atlas, ImFont* font)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontRebuildOutput"
  cImFontAtlasFontRebuildOutput
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> IO ()

-- C: void ImFontAtlasFontSourceAddToFont(ImFontAtlas* atlas, ImFont* font, ImFontConfig* src)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontSourceAddToFont"
  cImFontAtlasFontSourceAddToFont
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFont) -- ^ font
    -> (Ptr ImFontConfig) -- ^ src
    -> IO ()

-- C: bool ImFontAtlasFontSourceInit(ImFontAtlas* atlas, ImFontConfig* src)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasFontSourceInit"
  cImFontAtlasFontSourceInit
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImFontConfig) -- ^ src
    -> IO CBool

-- C: bool ImFontAtlasGetMouseCursorTexData(ImFontAtlas* atlas, ImGuiMouseCursor cursor_type, ImVec2* out_offset, ImVec2* out_size, ImVec2[2] out_uv_border, ImVec2[2] out_uv_fill)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasGetMouseCursorTexData"
  cImFontAtlasGetMouseCursorTexData
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> ImGuiMouseCursor -- ^ cursor_type
    -> (Ptr ImVec2) -- ^ out_offset
    -> (Ptr ImVec2) -- ^ out_size
    -> (Ptr ImVec2) -- ^ out_uv_border
    -> (Ptr ImVec2) -- ^ out_uv_fill
    -> IO CBool

-- C: ImFontAtlasRectId ImFontAtlasPackAddRect(ImFontAtlas* atlas, int w, int h, ImFontAtlasRectEntry* overwrite_entry)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasPackAddRect"
  cImFontAtlasPackAddRect
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> (Ptr ImFontAtlasRectEntry) -- ^ overwrite_entry
    -> IO Id

-- C: void ImFontAtlasPackDiscardRect(ImFontAtlas* atlas, ImFontAtlasRectId id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasPackDiscardRect"
  cImFontAtlasPackDiscardRect
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> Id -- ^ id
    -> IO ()

-- C: ImTextureRect* ImFontAtlasPackGetRect(ImFontAtlas* atlas, ImFontAtlasRectId id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasPackGetRect"
  cImFontAtlasPackGetRect
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> Id -- ^ id
    -> IO (Ptr ImTextureRect)

-- C: ImTextureRect* ImFontAtlasPackGetRectSafe(ImFontAtlas* atlas, ImFontAtlasRectId id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasPackGetRectSafe"
  cImFontAtlasPackGetRectSafe
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> Id -- ^ id
    -> IO (Ptr ImTextureRect)

-- C: void ImFontAtlasPackInit(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasPackInit"
  cImFontAtlasPackInit
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: unsigned int ImFontAtlasRectId_GetGeneration(ImFontAtlasRectId id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasRectId_GetGeneration"
  cImFontAtlasRectId_GetGeneration
    :: Id -- ^ id
    -> IO CUInt

-- C: int ImFontAtlasRectId_GetIndex(ImFontAtlasRectId id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasRectId_GetIndex"
  cImFontAtlasRectId_GetIndex
    :: Id -- ^ id
    -> IO CInt

-- C: ImFontAtlasRectId ImFontAtlasRectId_Make(int index_idx, int gen_idx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasRectId_Make"
  cImFontAtlasRectId_Make
    :: CInt -- ^ index_idx
    -> CInt -- ^ gen_idx
    -> IO Id

-- C: void ImFontAtlasRemoveDrawListSharedData(ImFontAtlas* atlas, ImDrawListSharedData* data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasRemoveDrawListSharedData"
  cImFontAtlasRemoveDrawListSharedData
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImDrawListSharedData) -- ^ data
    -> IO ()

-- C: ImTextureData* ImFontAtlasTextureAdd(ImFontAtlas* atlas, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureAdd"
  cImFontAtlasTextureAdd
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO (Ptr ImTextureData)

-- C: void ImFontAtlasTextureBlockConvert(const unsigned char* src_pixels, ImTextureFormat src_fmt, int src_pitch, unsigned char* dst_pixels, ImTextureFormat dst_fmt, int dst_pitch, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureBlockConvert"
  cImFontAtlasTextureBlockConvert
    :: (Ptr CUChar) -- ^ src_pixels
    -> ImTextureFormat -- ^ src_fmt
    -> CInt -- ^ src_pitch
    -> (Ptr CUChar) -- ^ dst_pixels
    -> ImTextureFormat -- ^ dst_fmt
    -> CInt -- ^ dst_pitch
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO ()

-- C: void ImFontAtlasTextureBlockCopy(ImTextureData* src_tex, int src_x, int src_y, ImTextureData* dst_tex, int dst_x, int dst_y, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureBlockCopy"
  cImFontAtlasTextureBlockCopy
    :: (Ptr ImTextureData) -- ^ src_tex
    -> CInt -- ^ src_x
    -> CInt -- ^ src_y
    -> (Ptr ImTextureData) -- ^ dst_tex
    -> CInt -- ^ dst_x
    -> CInt -- ^ dst_y
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO ()

-- C: void ImFontAtlasTextureBlockFill(ImTextureData* dst_tex, int dst_x, int dst_y, int w, int h, ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureBlockFill"
  cImFontAtlasTextureBlockFill
    :: (Ptr ImTextureData) -- ^ dst_tex
    -> CInt -- ^ dst_x
    -> CInt -- ^ dst_y
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> ImU32 -- ^ col
    -> IO ()

-- C: void ImFontAtlasTextureBlockQueueUpload(ImFontAtlas* atlas, ImTextureData* tex, int x, int y, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureBlockQueueUpload"
  cImFontAtlasTextureBlockQueueUpload
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImTextureData) -- ^ tex
    -> CInt -- ^ x
    -> CInt -- ^ y
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO ()

-- C: void ImFontAtlasTextureCompact(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureCompact"
  cImFontAtlasTextureCompact
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h cImFontAtlasTextureGetSizeEstimate_wrap"
  c_cImFontAtlasTextureGetSizeEstimate
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImVec2i) -- ^ out
    -> IO ()

cImFontAtlasTextureGetSizeEstimate
  :: (Ptr ImFontAtlas) -- ^ atlas
  -> IO ImVec2i
cImFontAtlasTextureGetSizeEstimate atlas =
  alloca $ \outPtr -> c_cImFontAtlasTextureGetSizeEstimate atlas outPtr >> peek outPtr

-- C: void ImFontAtlasTextureGrow(ImFontAtlas* atlas, int old_w, int old_h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureGrow"
  cImFontAtlasTextureGrow
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ old_w
    -> CInt -- ^ old_h
    -> IO ()

-- C: void ImFontAtlasTextureMakeSpace(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureMakeSpace"
  cImFontAtlasTextureMakeSpace
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImFontAtlasTextureRepack(ImFontAtlas* atlas, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasTextureRepack"
  cImFontAtlasTextureRepack
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO ()

-- C: void ImFontAtlasUpdateDrawListsSharedData(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasUpdateDrawListsSharedData"
  cImFontAtlasUpdateDrawListsSharedData
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h cImFontAtlasUpdateDrawListsTextures_wrap"
  c_cImFontAtlasUpdateDrawListsTextures
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> (Ptr ImTextureRef) -- ^ old_tex
    -> (Ptr ImTextureRef) -- ^ new_tex
    -> IO ()

cImFontAtlasUpdateDrawListsTextures
  :: (Ptr ImFontAtlas) -- ^ atlas
  -> ImTextureRef -- ^ old_tex
  -> ImTextureRef -- ^ new_tex
  -> IO ()
cImFontAtlasUpdateDrawListsTextures atlas old_tex new_tex =
  with old_tex $ \old_texPtr -> with new_tex $ \new_texPtr -> c_cImFontAtlasUpdateDrawListsTextures atlas old_texPtr new_texPtr

-- C: void ImFontAtlasUpdateNewFrame(ImFontAtlas* atlas, int frame_count, bool renderer_has_textures)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontAtlasUpdateNewFrame"
  cImFontAtlasUpdateNewFrame
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> CInt -- ^ frame_count
    -> CBool -- ^ renderer_has_textures
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h cImFontCalcTextSizeEx_wrap"
  c_cImFontCalcTextSizeEx
    :: (Ptr ImFont) -- ^ font
    -> Float -- ^ size
    -> Float -- ^ max_width
    -> Float -- ^ wrap_width
    -> CString -- ^ text_begin
    -> CString -- ^ text_end_display
    -> CString -- ^ text_end
    -> (Ptr CString) -- ^ out_remaining
    -> (Ptr ImVec2) -- ^ out_offset
    -> ImDrawTextFlags -- ^ flags
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImFontCalcTextSizeEx
  :: (Ptr ImFont) -- ^ font
  -> Float -- ^ size
  -> Float -- ^ max_width
  -> Float -- ^ wrap_width
  -> CString -- ^ text_begin
  -> CString -- ^ text_end_display
  -> CString -- ^ text_end
  -> (Ptr CString) -- ^ out_remaining
  -> (Ptr ImVec2) -- ^ out_offset
  -> ImDrawTextFlags -- ^ flags
  -> IO ImVec2
cImFontCalcTextSizeEx font size max_width wrap_width text_begin text_end_display text_end out_remaining out_offset flags =
  alloca $ \outPtr -> c_cImFontCalcTextSizeEx font size max_width wrap_width text_begin text_end_display text_end out_remaining out_offset flags outPtr >> peek outPtr

-- C: const char* ImFontCalcWordWrapPositionEx(ImFont* font, float size, const char* text, const char* text_end, float wrap_width, ImDrawTextFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFontCalcWordWrapPositionEx"
  cImFontCalcWordWrapPositionEx
    :: (Ptr ImFont) -- ^ font
    -> Float -- ^ size
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> Float -- ^ wrap_width
    -> ImDrawTextFlags -- ^ flags
    -> IO CString

-- C: void ImFormatStringToTempBuffer(const char** out_buf, const char** out_buf_end, const char* text)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFormatStringToTempBufferUnformatted"
  cImFormatStringToTempBufferUnformatted
    :: (Ptr CString) -- ^ out_buf
    -> (Ptr CString) -- ^ out_buf_end
    -> CString -- ^ text
    -> IO ()

-- C: int ImFormatString(char* buf, size_t buf_size, const char* text)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImFormatStringUnformatted"
  cImFormatStringUnformatted
    :: (Ptr CChar) -- ^ buf
    -> CSize -- ^ buf_size
    -> CString -- ^ text
    -> IO CInt

-- C: ImGuiID ImHashData(const void* data, size_t data_size, ImGuiID seed)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImHashData"
  cImHashData
    :: (Ptr ()) -- ^ data
    -> CSize -- ^ data_size
    -> ImGuiID -- ^ seed
    -> IO ImGuiID

-- C: const char* ImHashSkipUncontributingPrefix(const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImHashSkipUncontributingPrefix"
  cImHashSkipUncontributingPrefix
    :: CString -- ^ label
    -> IO CString

-- C: ImGuiID ImHashStr(const char* data, size_t data_size, ImGuiID seed)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImHashStr"
  cImHashStr
    :: CString -- ^ data
    -> CSize -- ^ data_size
    -> ImGuiID -- ^ seed
    -> IO ImGuiID

foreign import capi unsafe "DearImGuiWrappers.h cImInvLength_wrap"
  c_cImInvLength
    :: (Ptr ImVec2) -- ^ lhs
    -> Float -- ^ fail_value
    -> IO Float

cImInvLength
  :: ImVec2 -- ^ lhs
  -> Float -- ^ fail_value
  -> IO Float
cImInvLength lhs fail_value =
  with lhs $ \lhsPtr -> c_cImInvLength lhsPtr fail_value

-- C: bool ImIsFloatAboveGuaranteedIntegerPrecision(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImIsFloatAboveGuaranteedIntegerPrecision"
  cImIsFloatAboveGuaranteedIntegerPrecision
    :: Float -- ^ f
    -> IO CBool

-- C: bool ImIsPowerOfTwo(int v)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImIsPowerOfTwo"
  cImIsPowerOfTwo
    :: CInt -- ^ v
    -> IO CBool

-- C: bool ImIsPowerOfTwo(ImU64 v)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImIsPowerOfTwoImU64"
  cImIsPowerOfTwoImU64
    :: ImU64 -- ^ v
    -> IO CBool

-- C: bool ImIsTruncated(float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImIsTruncated"
  cImIsTruncated
    :: Float -- ^ x
    -> IO CBool

-- C: bool ImIsTruncated4(float x, float y, float z, float w)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImIsTruncated4"
  cImIsTruncated4
    :: Float -- ^ x
    -> Float -- ^ y
    -> Float -- ^ z
    -> Float -- ^ w
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h cImLengthSqr_wrap"
  c_cImLengthSqr
    :: (Ptr ImVec2) -- ^ lhs
    -> IO Float

cImLengthSqr
  :: ImVec2 -- ^ lhs
  -> IO Float
cImLengthSqr lhs =
  with lhs $ \lhsPtr -> c_cImLengthSqr lhsPtr

foreign import capi unsafe "DearImGuiWrappers.h cImLengthSqrImVec4_wrap"
  c_cImLengthSqrImVec4
    :: (Ptr ImVec4) -- ^ lhs
    -> IO Float

cImLengthSqrImVec4
  :: ImVec4 -- ^ lhs
  -> IO Float
cImLengthSqrImVec4 lhs =
  with lhs $ \lhsPtr -> c_cImLengthSqrImVec4 lhsPtr

foreign import capi unsafe "DearImGuiWrappers.h cImLerp_wrap"
  c_cImLerp
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> Float -- ^ t
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImLerp
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> Float -- ^ t
  -> IO ImVec2
cImLerp a b t =
  with a $ \aPtr -> with b $ \bPtr -> alloca $ \outPtr -> c_cImLerp aPtr bPtr t outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImLerpImVec2_wrap"
  c_cImLerpImVec2
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ t
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImLerpImVec2
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ t
  -> IO ImVec2
cImLerpImVec2 a b t =
  with a $ \aPtr -> with b $ \bPtr -> with t $ \tPtr -> alloca $ \outPtr -> c_cImLerpImVec2 aPtr bPtr tPtr outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImLerpImVec4_wrap"
  c_cImLerpImVec4
    :: (Ptr ImVec4) -- ^ a
    -> (Ptr ImVec4) -- ^ b
    -> Float -- ^ t
    -> (Ptr ImVec4) -- ^ out
    -> IO ()

cImLerpImVec4
  :: ImVec4 -- ^ a
  -> ImVec4 -- ^ b
  -> Float -- ^ t
  -> IO ImVec4
cImLerpImVec4 a b t =
  with a $ \aPtr -> with b $ \bPtr -> alloca $ \outPtr -> c_cImLerpImVec4 aPtr bPtr t outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImLineClosestPoint_wrap"
  c_cImLineClosestPoint
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ p
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImLineClosestPoint
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ p
  -> IO ImVec2
cImLineClosestPoint a b p =
  with a $ \aPtr -> with b $ \bPtr -> with p $ \pPtr -> alloca $ \outPtr -> c_cImLineClosestPoint aPtr bPtr pPtr outPtr >> peek outPtr

-- C: float ImLinearRemapClamp(float s0, float s1, float d0, float d1, float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImLinearRemapClamp"
  cImLinearRemapClamp
    :: Float -- ^ s0
    -> Float -- ^ s1
    -> Float -- ^ d0
    -> Float -- ^ d1
    -> Float -- ^ x
    -> IO Float

-- C: float ImLinearSweep(float current, float target, float speed)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImLinearSweep"
  cImLinearSweep
    :: Float -- ^ current
    -> Float -- ^ target
    -> Float -- ^ speed
    -> IO Float

-- C: float ImLog(float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImLog"
  cImLog
    :: Float -- ^ x
    -> IO Float

-- C: double ImLog(double x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImLogDouble"
  cImLogDouble
    :: Double -- ^ x
    -> IO Double

-- C: ImGuiStoragePair* ImLowerBound(ImGuiStoragePair* in_begin, ImGuiStoragePair* in_end, ImGuiID key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImLowerBound"
  cImLowerBound
    :: (Ptr ImGuiStoragePair) -- ^ in_begin
    -> (Ptr ImGuiStoragePair) -- ^ in_end
    -> ImGuiID -- ^ key
    -> IO (Ptr ImGuiStoragePair)

-- C: int ImMax(int lhs, int rhs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImMax"
  cImMax
    :: CInt -- ^ lhs
    -> CInt -- ^ rhs
    -> IO CInt

-- C: float ImMax(float lhs, float rhs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImMaxFloat"
  cImMaxFloat
    :: Float -- ^ lhs
    -> Float -- ^ rhs
    -> IO Float

foreign import capi unsafe "DearImGuiWrappers.h cImMaxImVec2_wrap"
  c_cImMaxImVec2
    :: (Ptr ImVec2) -- ^ lhs
    -> (Ptr ImVec2) -- ^ rhs
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImMaxImVec2
  :: ImVec2 -- ^ lhs
  -> ImVec2 -- ^ rhs
  -> IO ImVec2
cImMaxImVec2 lhs rhs =
  with lhs $ \lhsPtr -> with rhs $ \rhsPtr -> alloca $ \outPtr -> c_cImMaxImVec2 lhsPtr rhsPtr outPtr >> peek outPtr

-- C: void* ImMemdup(const void* src, size_t size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImMemdup"
  cImMemdup
    :: (Ptr ()) -- ^ src
    -> CSize -- ^ size
    -> IO (Ptr ())

-- C: int ImMin(int lhs, int rhs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImMin"
  cImMin
    :: CInt -- ^ lhs
    -> CInt -- ^ rhs
    -> IO CInt

-- C: float ImMin(float lhs, float rhs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImMinFloat"
  cImMinFloat
    :: Float -- ^ lhs
    -> Float -- ^ rhs
    -> IO Float

foreign import capi unsafe "DearImGuiWrappers.h cImMinImVec2_wrap"
  c_cImMinImVec2
    :: (Ptr ImVec2) -- ^ lhs
    -> (Ptr ImVec2) -- ^ rhs
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImMinImVec2
  :: ImVec2 -- ^ lhs
  -> ImVec2 -- ^ rhs
  -> IO ImVec2
cImMinImVec2 lhs rhs =
  with lhs $ \lhsPtr -> with rhs $ \rhsPtr -> alloca $ \outPtr -> c_cImMinImVec2 lhsPtr rhsPtr outPtr >> peek outPtr

-- C: int ImModPositive(int a, int b)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImModPositive"
  cImModPositive
    :: CInt -- ^ a
    -> CInt -- ^ b
    -> IO CInt

foreign import capi unsafe "DearImGuiWrappers.h cImMul_wrap"
  c_cImMul
    :: (Ptr ImVec2) -- ^ lhs
    -> (Ptr ImVec2) -- ^ rhs
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImMul
  :: ImVec2 -- ^ lhs
  -> ImVec2 -- ^ rhs
  -> IO ImVec2
cImMul lhs rhs =
  with lhs $ \lhsPtr -> with rhs $ \rhsPtr -> alloca $ \outPtr -> c_cImMul lhsPtr rhsPtr outPtr >> peek outPtr

-- C: const char* ImParseFormatFindEnd(const char* format)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImParseFormatFindEnd"
  cImParseFormatFindEnd
    :: CString -- ^ format
    -> IO CString

-- C: const char* ImParseFormatFindStart(const char* format)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImParseFormatFindStart"
  cImParseFormatFindStart
    :: CString -- ^ format
    -> IO CString

-- C: int ImParseFormatPrecision(const char* format, int default_value)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImParseFormatPrecision"
  cImParseFormatPrecision
    :: CString -- ^ format
    -> CInt -- ^ default_value
    -> IO CInt

-- C: void ImParseFormatSanitizeForPrinting(const char* fmt_in, char* fmt_out, size_t fmt_out_size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImParseFormatSanitizeForPrinting"
  cImParseFormatSanitizeForPrinting
    :: CString -- ^ fmt_in
    -> (Ptr CChar) -- ^ fmt_out
    -> CSize -- ^ fmt_out_size
    -> IO ()

-- C: const char* ImParseFormatSanitizeForScanning(const char* fmt_in, char* fmt_out, size_t fmt_out_size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImParseFormatSanitizeForScanning"
  cImParseFormatSanitizeForScanning
    :: CString -- ^ fmt_in
    -> (Ptr CChar) -- ^ fmt_out
    -> CSize -- ^ fmt_out_size
    -> IO CString

-- C: const char* ImParseFormatTrimDecorations(const char* format, char* buf, size_t buf_size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImParseFormatTrimDecorations"
  cImParseFormatTrimDecorations
    :: CString -- ^ format
    -> (Ptr CChar) -- ^ buf
    -> CSize -- ^ buf_size
    -> IO CString

-- C: float ImPow(float x, float y)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImPow"
  cImPow
    :: Float -- ^ x
    -> Float -- ^ y
    -> IO Float

-- C: double ImPow(double x, double y)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImPowDouble"
  cImPowDouble
    :: Double -- ^ x
    -> Double -- ^ y
    -> IO Double

foreign import capi unsafe "DearImGuiWrappers.h cImRotate_wrap"
  c_cImRotate
    :: (Ptr ImVec2) -- ^ v
    -> Float -- ^ cos_a
    -> Float -- ^ sin_a
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImRotate
  :: ImVec2 -- ^ v
  -> Float -- ^ cos_a
  -> Float -- ^ sin_a
  -> IO ImVec2
cImRotate v cos_a sin_a =
  with v $ \vPtr -> alloca $ \outPtr -> c_cImRotate vPtr cos_a sin_a outPtr >> peek outPtr

-- C: float ImRoundPositive64(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImRoundPositive64"
  cImRoundPositive64
    :: Float -- ^ f
    -> IO Float

-- C: float ImRoundSigned64(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImRoundSigned64"
  cImRoundSigned64
    :: Float -- ^ f
    -> IO Float

-- C: float ImRsqrt(float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImRsqrt"
  cImRsqrt
    :: Float -- ^ x
    -> IO Float

-- C: double ImRsqrt(double x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImRsqrtDouble"
  cImRsqrtDouble
    :: Double -- ^ x
    -> IO Double

-- C: float ImRsqrtPrecise(float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImRsqrtPrecise"
  cImRsqrtPrecise
    :: Float -- ^ x
    -> IO Float

-- C: float ImSaturate(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImSaturate"
  cImSaturate
    :: Float -- ^ f
    -> IO Float

-- C: float ImSign(float x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImSign"
  cImSign
    :: Float -- ^ x
    -> IO Float

-- C: double ImSign(double x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImSignDouble"
  cImSignDouble
    :: Double -- ^ x
    -> IO Double

-- C: const char* ImStrSkipBlank(const char* str)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrSkipBlank"
  cImStrSkipBlank
    :: CString -- ^ str
    -> IO CString

-- C: void ImStrTrimBlanks(char* str)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrTrimBlanks"
  cImStrTrimBlanks
    :: (Ptr CChar) -- ^ str
    -> IO ()

-- C: const char* ImStrbol(const char* buf_mid_line, const char* buf_begin)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrbol"
  cImStrbol
    :: CString -- ^ buf_mid_line
    -> CString -- ^ buf_begin
    -> IO CString

-- C: const char* ImStrchrRange(const char* str_begin, const char* str_end, char c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrchrRange"
  cImStrchrRange
    :: CString -- ^ str_begin
    -> CString -- ^ str_end
    -> CChar -- ^ c
    -> IO CString

-- C: char* ImStrdup(const char* str)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrdup"
  cImStrdup
    :: CString -- ^ str
    -> IO (Ptr CChar)

-- C: char* ImStrdupcpy(char* dst, size_t* p_dst_size, const char* str)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrdupcpy"
  cImStrdupcpy
    :: (Ptr CChar) -- ^ dst
    -> (Ptr CSize) -- ^ p_dst_size
    -> CString -- ^ str
    -> IO (Ptr CChar)

-- C: const char* ImStreolRange(const char* str, const char* str_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStreolRange"
  cImStreolRange
    :: CString -- ^ str
    -> CString -- ^ str_end
    -> IO CString

-- C: int ImStricmp(const char* str1, const char* str2)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStricmp"
  cImStricmp
    :: CString -- ^ str1
    -> CString -- ^ str2
    -> IO CInt

-- C: const char* ImStristr(const char* haystack, const char* haystack_end, const char* needle, const char* needle_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStristr"
  cImStristr
    :: CString -- ^ haystack
    -> CString -- ^ haystack_end
    -> CString -- ^ needle
    -> CString -- ^ needle_end
    -> IO CString

-- C: int ImStrlenW(const ImWchar* str)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrlenW"
  cImStrlenW
    :: (Ptr ImWchar) -- ^ str
    -> IO CInt

-- C: void ImStrncpy(char* dst, const char* src, size_t count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrncpy"
  cImStrncpy
    :: (Ptr CChar) -- ^ dst
    -> CString -- ^ src
    -> CSize -- ^ count
    -> IO ()

-- C: int ImStrnicmp(const char* str1, const char* str2, size_t count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImStrnicmp"
  cImStrnicmp
    :: CString -- ^ str1
    -> CString -- ^ str2
    -> CSize -- ^ count
    -> IO CInt

-- C: const char* ImTextCalcWordWrapNextLineStart(const char* text, const char* text_end, ImDrawTextFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCalcWordWrapNextLineStart"
  cImTextCalcWordWrapNextLineStart
    :: CString -- ^ text
    -> CString -- ^ text_end
    -> ImDrawTextFlags -- ^ flags
    -> IO CString

-- C: int ImTextCharFromUtf8(unsigned int* out_char, const char* in_text, const char* in_text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCharFromUtf8"
  cImTextCharFromUtf8
    :: (Ptr CUInt) -- ^ out_char
    -> CString -- ^ in_text
    -> CString -- ^ in_text_end
    -> IO CInt

-- C: int ImTextCharToUtf8(char[5] out_buf, unsigned int c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCharToUtf8"
  cImTextCharToUtf8
    :: (Ptr CChar) -- ^ out_buf
    -> CUInt -- ^ c
    -> IO CInt

-- C: void ImTextClassifierClear(ImU32* bits, unsigned int codepoint_min, unsigned int codepoint_end, ImWcharClass char_class)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextClassifierClear"
  cImTextClassifierClear
    :: (Ptr ImU32) -- ^ bits
    -> CUInt -- ^ codepoint_min
    -> CUInt -- ^ codepoint_end
    -> ImWcharClass -- ^ char_class
    -> IO ()

-- C: void ImTextClassifierSetCharClass(ImU32* bits, unsigned int codepoint_min, unsigned int codepoint_end, ImWcharClass char_class, unsigned int c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextClassifierSetCharClass"
  cImTextClassifierSetCharClass
    :: (Ptr ImU32) -- ^ bits
    -> CUInt -- ^ codepoint_min
    -> CUInt -- ^ codepoint_end
    -> ImWcharClass -- ^ char_class
    -> CUInt -- ^ c
    -> IO ()

-- C: void ImTextClassifierSetCharClassFromStr(ImU32* bits, unsigned int codepoint_min, unsigned int codepoint_end, ImWcharClass char_class, const char* s)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextClassifierSetCharClassFromStr"
  cImTextClassifierSetCharClassFromStr
    :: (Ptr ImU32) -- ^ bits
    -> CUInt -- ^ codepoint_min
    -> CUInt -- ^ codepoint_end
    -> ImWcharClass -- ^ char_class
    -> CString -- ^ s
    -> IO ()

-- C: int ImTextCountCharsFromUtf8(const char* in_text, const char* in_text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCountCharsFromUtf8"
  cImTextCountCharsFromUtf8
    :: CString -- ^ in_text
    -> CString -- ^ in_text_end
    -> IO CInt

-- C: int ImTextCountLines(const char* in_text, const char* in_text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCountLines"
  cImTextCountLines
    :: CString -- ^ in_text
    -> CString -- ^ in_text_end
    -> IO CInt

-- C: int ImTextCountUtf8BytesFromChar(const char* in_text, const char* in_text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCountUtf8BytesFromChar"
  cImTextCountUtf8BytesFromChar
    :: CString -- ^ in_text
    -> CString -- ^ in_text_end
    -> IO CInt

-- C: int ImTextCountUtf8BytesFromStr(const ImWchar* in_text, const ImWchar* in_text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextCountUtf8BytesFromStr"
  cImTextCountUtf8BytesFromStr
    :: (Ptr ImWchar) -- ^ in_text
    -> (Ptr ImWchar) -- ^ in_text_end
    -> IO CInt

-- C: const char* ImTextFindPreviousUtf8Codepoint(const char* in_text_start, const char* in_p)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextFindPreviousUtf8Codepoint"
  cImTextFindPreviousUtf8Codepoint
    :: CString -- ^ in_text_start
    -> CString -- ^ in_p
    -> IO CString

-- C: const char* ImTextFindValidUtf8CodepointEnd(const char* in_text_start, const char* in_text_end, const char* in_p)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextFindValidUtf8CodepointEnd"
  cImTextFindValidUtf8CodepointEnd
    :: CString -- ^ in_text_start
    -> CString -- ^ in_text_end
    -> CString -- ^ in_p
    -> IO CString

-- C: void ImTextInitClassifiers()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextInitClassifiers"
  cImTextInitClassifiers :: IO ()

-- C: int ImTextStrFromUtf8(ImWchar* out_buf, int out_buf_size, const char* in_text, const char* in_text_end, const char** in_remaining)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextStrFromUtf8"
  cImTextStrFromUtf8
    :: (Ptr ImWchar) -- ^ out_buf
    -> CInt -- ^ out_buf_size
    -> CString -- ^ in_text
    -> CString -- ^ in_text_end
    -> (Ptr CString) -- ^ in_remaining
    -> IO CInt

-- C: int ImTextStrToUtf8(char* out_buf, int out_buf_size, const ImWchar* in_text, const ImWchar* in_text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextStrToUtf8"
  cImTextStrToUtf8
    :: (Ptr CChar) -- ^ out_buf
    -> CInt -- ^ out_buf_size
    -> (Ptr ImWchar) -- ^ in_text
    -> (Ptr ImWchar) -- ^ in_text_end
    -> IO CInt

-- C: int ImTextureDataGetFormatBytesPerPixel(ImTextureFormat format)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextureDataGetFormatBytesPerPixel"
  cImTextureDataGetFormatBytesPerPixel
    :: ImTextureFormat -- ^ format
    -> IO CInt

-- C: const char* ImTextureDataGetFormatName(ImTextureFormat format)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextureDataGetFormatName"
  cImTextureDataGetFormatName
    :: ImTextureFormat -- ^ format
    -> IO CString

-- C: const char* ImTextureDataGetStatusName(ImTextureStatus status)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextureDataGetStatusName"
  cImTextureDataGetStatusName
    :: ImTextureStatus -- ^ status
    -> IO CString

-- C: void ImTextureDataQueueUpload(ImTextureData* tex, int x, int y, int w, int h)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextureDataQueueUpload"
  cImTextureDataQueueUpload
    :: (Ptr ImTextureData) -- ^ tex
    -> CInt -- ^ x
    -> CInt -- ^ y
    -> CInt -- ^ w
    -> CInt -- ^ h
    -> IO ()

-- C: bool ImTextureDataUpdateNewFrame(ImTextureData* tex)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTextureDataUpdateNewFrame"
  cImTextureDataUpdateNewFrame
    :: (Ptr ImTextureData) -- ^ tex
    -> IO CBool

-- C: char ImToUpper(char c)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImToUpper"
  cImToUpper
    :: CChar -- ^ c
    -> IO CChar

foreign import capi unsafe "DearImGuiWrappers.h cImTriangleArea_wrap"
  c_cImTriangleArea
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ c
    -> IO Float

cImTriangleArea
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ c
  -> IO Float
cImTriangleArea a b c =
  with a $ \aPtr -> with b $ \bPtr -> with c $ \cPtr -> c_cImTriangleArea aPtr bPtr cPtr

foreign import capi unsafe "DearImGuiWrappers.h cImTriangleBarycentricCoords_wrap"
  c_cImTriangleBarycentricCoords
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ c
    -> (Ptr ImVec2) -- ^ p
    -> (Ptr Float) -- ^ out_u
    -> (Ptr Float) -- ^ out_v
    -> (Ptr Float) -- ^ out_w
    -> IO ()

cImTriangleBarycentricCoords
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ c
  -> ImVec2 -- ^ p
  -> (Ptr Float) -- ^ out_u
  -> (Ptr Float) -- ^ out_v
  -> (Ptr Float) -- ^ out_w
  -> IO ()
cImTriangleBarycentricCoords a b c p out_u out_v out_w =
  with a $ \aPtr -> with b $ \bPtr -> with c $ \cPtr -> with p $ \pPtr -> c_cImTriangleBarycentricCoords aPtr bPtr cPtr pPtr out_u out_v out_w

foreign import capi unsafe "DearImGuiWrappers.h cImTriangleClosestPoint_wrap"
  c_cImTriangleClosestPoint
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ c
    -> (Ptr ImVec2) -- ^ p
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImTriangleClosestPoint
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ c
  -> ImVec2 -- ^ p
  -> IO ImVec2
cImTriangleClosestPoint a b c p =
  with a $ \aPtr -> with b $ \bPtr -> with c $ \cPtr -> with p $ \pPtr -> alloca $ \outPtr -> c_cImTriangleClosestPoint aPtr bPtr cPtr pPtr outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h cImTriangleContainsPoint_wrap"
  c_cImTriangleContainsPoint
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ c
    -> (Ptr ImVec2) -- ^ p
    -> IO CBool

cImTriangleContainsPoint
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ c
  -> ImVec2 -- ^ p
  -> IO CBool
cImTriangleContainsPoint a b c p =
  with a $ \aPtr -> with b $ \bPtr -> with c $ \cPtr -> with p $ \pPtr -> c_cImTriangleContainsPoint aPtr bPtr cPtr pPtr

foreign import capi unsafe "DearImGuiWrappers.h cImTriangleIsClockwise_wrap"
  c_cImTriangleIsClockwise
    :: (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ c
    -> IO CBool

cImTriangleIsClockwise
  :: ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ c
  -> IO CBool
cImTriangleIsClockwise a b c =
  with a $ \aPtr -> with b $ \bPtr -> with c $ \cPtr -> c_cImTriangleIsClockwise aPtr bPtr cPtr

-- C: float ImTrunc(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTrunc"
  cImTrunc
    :: Float -- ^ f
    -> IO Float

-- C: float ImTrunc64(float f)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImTrunc64"
  cImTrunc64
    :: Float -- ^ f
    -> IO Float

foreign import capi unsafe "DearImGuiWrappers.h cImTruncImVec2_wrap"
  c_cImTruncImVec2
    :: (Ptr ImVec2) -- ^ v
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

cImTruncImVec2
  :: ImVec2 -- ^ v
  -> IO ImVec2
cImTruncImVec2 v =
  with v $ \vPtr -> alloca $ \outPtr -> c_cImTruncImVec2 vPtr outPtr >> peek outPtr

-- C: int ImUpperPowerOfTwo(int v)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h cImUpperPowerOfTwo"
  cImUpperPowerOfTwo
    :: CInt -- ^ v
    -> IO CInt