packages feed

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

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

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

module DearImGui.Raw.Internal.ImGui
  ( activateItemByID
  , addContextHook
  , addDrawListToDrawDataEx
  , addSettingsHandler
  , arrowButtonEx
  , beginBoxSelect
  , beginChildEx
  , beginColumns
  , beginComboPopup
  , beginComboPreview
  , beginDisabledOverrideReenable
  , beginDockableDragDropSource
  , beginDockableDragDropTarget
  , beginDocked
  , beginDragDropTargetCustom
  , beginDragDropTargetViewport
  , beginErrorTooltip
  , beginMenuWithIcon
  , beginPopupEx
  , beginPopupMenuEx
  , beginTabBarEx
  , beginTableWithID
  , beginTooltipEx
  , beginTooltipHidden
  , beginViewportSideBar
  , bringWindowToDisplayBack
  , bringWindowToDisplayBehind
  , bringWindowToDisplayFront
  , bringWindowToFocusFront
  , buttonBehavior
  , buttonWithFlags
  , c_arrowButtonEx
  , c_beginBoxSelect
  , c_beginChildEx
  , c_beginComboPopup
  , c_beginDragDropTargetCustom
  , c_beginTabBarEx
  , c_beginTableWithID
  , c_buttonBehavior
  , c_buttonWithFlags
  , c_calcClipRectVisibleItemsY
  , c_calcItemSize
  , c_calcRoundingFlagsForRectInRect
  , c_calcWindowNextAutoFitSize
  , c_calcWrapWidthForPos
  , c_closeButton
  , c_collapseButton
  , c_debugRenderViewportThumbnail
  , c_dockBuilderSetNodePos
  , c_dockBuilderSetNodeSize
  , c_endBoxSelect
  , c_findBestWindowPosForPopup
  , c_findBestWindowPosForPopupEx
  , c_findHoveredViewportFromPlatformWindowStack
  , c_findHoveredWindowEx
  , c_getKeyMagnitude2d
  , c_getPopupAllowedExtentRect
  , c_getWindowScrollbarRect
  , c_imageButtonWithFlags
  , c_inputTextWithHintAndSize
  , c_isClippedEx
  , c_itemAdd
  , c_itemHoverable
  , c_itemSize
  , c_itemSizeImRect
  , c_plotEx
  , c_renderArrow
  , c_renderArrowDockMenu
  , c_renderArrowPointingAt
  , c_renderBullet
  , c_renderCheckMark
  , c_renderColorComponentMarker
  , c_renderColorRectWithAlphaCheckerboard
  , c_renderDragDropTargetRectEx
  , c_renderDragDropTargetRectForItem
  , c_renderDragDropTargetRectForViewport
  , c_renderFrame
  , c_renderFrameBorder
  , c_renderMouseCursor
  , c_renderNavCursor
  , c_renderRectFilledInRangeH
  , c_renderRectFilledWithHole
  , c_renderText
  , c_renderTextClipped
  , c_renderTextClippedWithDrawList
  , c_renderTextEllipsis
  , c_renderTextWrapped
  , c_scrollToBringRectIntoView
  , c_scrollToRect
  , c_scrollToRectEx
  , c_scrollbarEx
  , c_setLastItemData
  , c_setNavID
  , c_setWindowClipRectBeforeSetChannel
  , c_setWindowHitTestHole
  , c_setWindowPosImGuiWindowPtr
  , c_setWindowSizeImGuiWindowPtr
  , c_shadeVertsLinearColorGradientKeepAlpha
  , c_shadeVertsLinearUV
  , c_shadeVertsTransformPos
  , c_sliderBehavior
  , c_splitterBehavior
  , c_tabBarGetTabPos
  , c_tabBarQueueReorderFromMousePos
  , c_tabItemBackground
  , c_tabItemCalcSize
  , c_tabItemCalcSizeStr
  , c_tabItemLabelAndCloseButton
  , c_tableGetCellBgRect
  , c_teleportMousePos
  , c_tempInputScalar
  , c_tempInputText
  , c_translateWindowsInViewport
  , c_treeNodeDrawLineToChildNode
  , c_updateHoveredWindowAndCaptureFlags
  , c_windowPosAbsToRel
  , c_windowPosRelToAbs
  , c_windowRectAbsToRel
  , c_windowRectRelToAbs
  , calcClipRectVisibleItemsY
  , calcItemSize
  , calcRoundingFlagsForRectInRect
  , calcTypematicRepeatAmount
  , calcWindowNextAutoFitSize
  , calcWrapWidthForPos
  , callContextHooks
  , checkboxFlagsImS64Ptr
  , checkboxFlagsImU64Ptr
  , cleanupIniSettings
  , clearActiveID
  , clearDragDrop
  , clearIniSettings
  , clearWindowSettings
  , closeButton
  , closePopupToLevel
  , closePopupsExceptModals
  , closePopupsOverWindow
  , collapseButton
  , colorEditOptionsPopup
  , colorPickerOptionsPopup
  , colorTooltip
  , convertSingleModFlagToKey
  , createNewWindowSettings
  , dataTypeApplyFromText
  , dataTypeApplyOp
  , dataTypeClamp
  , dataTypeCompare
  , dataTypeFormatString
  , dataTypeGetInfo
  , dataTypeIsZero
  , debugAllocHook
  , debugBreakButton
  , debugBreakButtonTooltip
  , debugBreakClearData
  , debugDrawCursorPos
  , debugDrawItemRect
  , debugDrawLineExtents
  , debugHookIdInfo
  , debugLocateItem
  , debugLocateItemOnHover
  , debugLocateItemResolveWithLastItem
  , debugNodeColumns
  , debugNodeDockNode
  , debugNodeDrawCmdShowMeshAndBoundingBox
  , debugNodeDrawList
  , debugNodeFont
  , debugNodeFontGlyph
  , debugNodeFontGlyphsForSrcMask
  , debugNodeInputTextState
  , debugNodeMultiSelectState
  , debugNodePlatformMonitor
  , debugNodeStorage
  , debugNodeTabBar
  , debugNodeTable
  , debugNodeTableSettings
  , debugNodeTexture
  , debugNodeTypingSelectState
  , debugNodeViewport
  , debugNodeWindow
  , debugNodeWindowSettings
  , debugNodeWindowsList
  , debugNodeWindowsListByBeginStackParent
  , debugRenderKeyboardPreview
  , debugRenderViewportThumbnail
  , debugTextUnformattedWithLocateItem
  , debugTextureIDToU64
  , demoMarker
  , destroyPlatformWindow
  , dockBuilderAddNode
  , dockBuilderCopyDockSpace
  , dockBuilderCopyNode
  , dockBuilderCopyWindowSettings
  , dockBuilderDockWindow
  , dockBuilderFinish
  , dockBuilderGetCentralNode
  , dockBuilderGetNode
  , dockBuilderRemoveNode
  , dockBuilderRemoveNodeChildNodes
  , dockBuilderRemoveNodeDockedWindows
  , dockBuilderSetNodePos
  , dockBuilderSetNodeSize
  , dockBuilderSplitNode
  , dockContextCalcDropPosForDocking
  , dockContextClearNodes
  , dockContextEndFrame
  , dockContextFindNodeByID
  , dockContextGenNodeID
  , dockContextInitialize
  , dockContextNewFrameUpdateDocking
  , dockContextNewFrameUpdateUndocking
  , dockContextProcessUndockNode
  , dockContextProcessUndockWindow
  , dockContextQueueDock
  , dockContextQueueUndockNode
  , dockContextQueueUndockWindow
  , dockContextRebuildNodes
  , dockContextShutdown
  , dockNodeBeginAmendTabBar
  , dockNodeEndAmendTabBar
  , dockNodeGetDepth
  , dockNodeGetRootNode
  , dockNodeGetWindowMenuButtonId
  , dockNodeIsInHierarchyOf
  , dockNodeWindowMenuHandler_Default
  , dragBehavior
  , endBoxSelect
  , endColumns
  , endComboPreview
  , endDisabledOverrideReenable
  , endErrorTooltip
  , errorCheckEndFrameFinalizeErrorTooltip
  , errorCheckUsingSetCursorPosToExtendParentBoundaries
  , errorLog
  , errorRecoveryStoreState
  , errorRecoveryTryToRecoverState
  , errorRecoveryTryToRecoverWindowState
  , extendHitBoxWhenNearViewportEdge
  , findBestWindowPosForPopup
  , findBestWindowPosForPopupEx
  , findBlockingModal
  , findBottomMostVisibleWindowWithinBeginStack
  , findFrontMostVisibleChildWindow
  , findHoveredViewportFromPlatformWindowStack
  , findHoveredWindowEx
  , findOrCreateColumns
  , findRenderedTextEnd
  , findSettingsHandler
  , findWindowByID
  , findWindowByName
  , findWindowDisplayIndex
  , findWindowSettingsByID
  , findWindowSettingsByWindow
  , fixupKeyChord
  , focusItem
  , focusTopMostWindowUnderOne
  , focusWindow
  , gcAwakeTransientWindowBuffers
  , gcCompactTransientMiscBuffers
  , gcCompactTransientWindowBuffers
  , getActiveID
  , getBoxSelectState
  , getColumnNormFromOffset
  , getColumnOffsetFromNorm
  , getColumnsID
  , getCurrentFocusScope
  , getCurrentTabBar
  , getCurrentTable
  , getCurrentWindow
  , getCurrentWindowRead
  , getDefaultFont
  , getFocusID
  , getForegroundDrawListImGuiWindowPtr
  , getHoveredID
  , getIDWithSeed
  , getIDWithSeedStr
  , getIOImGuiContextPtr
  , getInputTextState
  , getItemStatusFlags
  , getKeyChordName
  , getKeyData
  , getKeyDataImGuiContextPtr
  , getKeyMagnitude2d
  , getKeyOwner
  , getKeyOwnerData
  , getMouseButtonFromPopupFlags
  , getMultiSelectState
  , getNavTweakPressedAmount
  , getPixelDensity
  , getPlatformIOImGuiContextPtr
  , getPopupAllowedExtentRect
  , getRoundedFontSize
  , getScale
  , getShortcutRoutingData
  , getStyleVarInfo
  , getTopMostAndVisiblePopupModal
  , getTopMostPopupModal
  , getTypematicRepeatRate
  , getTypingSelectRequest
  , getViewportPlatformMonitor
  , getWindowAlwaysWantOwnTabBar
  , getWindowDockNode
  , getWindowResizeBorderID
  , getWindowResizeCornerID
  , getWindowScrollbarID
  , getWindowScrollbarRect
  , imageButtonWithFlags
  , initialize
  , inputTextDeactivateHook
  , inputTextWithHintAndSize
  , isActiveIdUsingNavDir
  , isAliasKey
  , isClippedEx
  , isDragDropActive
  , isDragDropPayloadBeingAccepted
  , isGamepadKey
  , isInNavFocusRoute
  , isItemActiveAsInputText
  , isKeyChordPressedImGuiInputFlags
  , isKeyDownID
  , isKeyPressedImGuiInputFlags
  , isKeyReleasedID
  , isKeyboardKey
  , isLRModKey
  , isLegacyKey
  , isMouseClickedImGuiInputFlags
  , isMouseDoubleClickedID
  , isMouseDownID
  , isMouseDragPastThreshold
  , isMouseKey
  , isMouseReleasedID
  , isNamedKey
  , isNamedKeyOrMod
  , isPopupOpenID
  , isPopupOpenRequestForItem
  , isPopupOpenRequestForWindow
  , isWindowAbove
  , isWindowChildOf
  , isWindowContentHoverable
  , isWindowInBeginStack
  , isWindowNavFocusable
  , isWindowWithinBeginStackOf
  , itemAdd
  , itemHoverable
  , itemSize
  , itemSizeImRect
  , keepAliveID
  , localizeGetMsg
  , localizeRegisterEntries
  , logBegin
  , logRenderedText
  , logSetNextTextDecoration
  , logToBuffer
  , markIniSettingsDirty
  , markIniSettingsDirtyImGuiWindowPtr
  , markItemEdited
  , menuItemWithIcon
  , mouseButtonToKey
  , multiSelectAddSetAll
  , multiSelectAddSetRange
  , multiSelectItemFooter
  , multiSelectItemHeader
  , navClearPreferredPosForAxis
  , navHighlightActivated
  , navInitRequestApplyResult
  , navInitWindow
  , navMoveRequestApplyResult
  , navMoveRequestButNoResultYet
  , navMoveRequestCancel
  , navMoveRequestForward
  , navMoveRequestResolveWithLastItem
  , navMoveRequestResolveWithPastTreeNode
  , navMoveRequestSubmit
  , navMoveRequestTryWrapping
  , navUpdateCurrentWindowIsScrollPushableX
  , openPopupEx
  , plotEx
  , popColumnsBackground
  , popFocusScope
  , popPasswordFont
  , pushColumnClipRect
  , pushColumnsBackground
  , pushFocusScope
  , pushMultiItemsWidths
  , pushOverrideID
  , pushPasswordFont
  , registerFontAtlas
  , registerUserTexture
  , removeContextHook
  , removeSettingsHandler
  , renderArrow
  , renderArrowDockMenu
  , renderArrowPointingAt
  , renderBullet
  , renderCheckMark
  , renderColorComponentMarker
  , renderColorRectWithAlphaCheckerboard
  , renderDragDropTargetRectEx
  , renderDragDropTargetRectForItem
  , renderDragDropTargetRectForViewport
  , renderFrame
  , renderFrameBorder
  , renderMouseCursor
  , renderNavCursor
  , renderRectFilledInRangeH
  , renderRectFilledWithHole
  , renderText
  , renderTextClipped
  , renderTextClippedWithDrawList
  , renderTextEllipsis
  , renderTextWrapped
  , scaleWindowsInViewport
  , scrollToBringRectIntoView
  , scrollToItem
  , scrollToRect
  , scrollToRectEx
  , scrollbar
  , scrollbarEx
  , separatorEx
  , separatorTextEx
  , setActiveID
  , setActiveIdUsingAllKeyboardKeys
  , setContextName
  , setCurrentFont
  , setCurrentViewport
  , setFocusID
  , setHoveredID
  , setItemKeyOwnerImGuiInputFlags
  , setKeyOwner
  , setKeyOwnersForKeyChord
  , setLastItemData
  , setNavCursorVisibleAfterMove
  , setNavFocusScope
  , setNavID
  , setNavWindow
  , setNextItemColorMarker
  , setNextItemRefVal
  , setNextWindowChildFlags
  , setNextWindowFlags
  , setNextWindowRefreshPolicy
  , setPixelDensity
  , setScrollFromPosXImGuiWindowPtr
  , setScrollFromPosYImGuiWindowPtr
  , setScrollXImGuiWindowPtr
  , setScrollYImGuiWindowPtr
  , setShortcutRouting
  , setWindowClipRectBeforeSetChannel
  , setWindowCollapsedImGuiWindowPtr
  , setWindowDock
  , setWindowHiddenAndSkipItemsForCurrentFrame
  , setWindowHitTestHole
  , setWindowParentWindowForFocusRoute
  , setWindowPosImGuiWindowPtr
  , setWindowSizeImGuiWindowPtr
  , setWindowViewport
  , shadeVertsLinearColorGradientKeepAlpha
  , shadeVertsLinearUV
  , shadeVertsTransformPos
  , shortcutID
  , showFontAtlas
  , shrinkWidths
  , shutdown
  , sliderBehavior
  , splitterBehavior
  , startMouseMovingWindow
  , startMouseMovingWindowOrNode
  , stopMouseMovingWindow
  , tabBarAddTab
  , tabBarCloseTab
  , tabBarFindByID
  , tabBarFindMostRecentlySelectedTabForActiveWindow
  , tabBarFindTabByID
  , tabBarFindTabByOrder
  , tabBarGetCurrentTab
  , tabBarGetTabName
  , tabBarGetTabOrder
  , tabBarGetTabPos
  , tabBarProcessReorder
  , tabBarQueueFocus
  , tabBarQueueFocusStr
  , tabBarQueueReorder
  , tabBarQueueReorderFromMousePos
  , tabBarRemove
  , tabBarRemoveTab
  , tabItemBackground
  , tabItemCalcSize
  , tabItemCalcSizeStr
  , tabItemEx
  , tabItemLabelAndCloseButton
  , tabItemSpacing
  , tableAngledHeadersRowEx
  , tableApplyExternalUnclipRect
  , tableApplyQueuedRequests
  , tableBeginCell
  , tableBeginContextMenuPopup
  , tableBeginInitMemory
  , tableBeginRow
  , tableCalcMaxColumnWidth
  , tableDrawBorders
  , tableDrawDefaultContextMenu
  , tableEndCell
  , tableEndRow
  , tableFindByID
  , tableFixColumnSortDirection
  , tableFixDisplayOrder
  , tableGcCompactSettings
  , tableGcCompactTransientBuffers
  , tableGcCompactTransientBuffersImGuiTableTempDataPtr
  , tableGetBoundSettings
  , tableGetCellBgRect
  , tableGetColumnNameImGuiTablePtr
  , tableGetColumnNextSortDirection
  , tableGetColumnResizeID
  , tableGetColumnWidthAuto
  , tableGetHeaderAngledMaxLabelWidth
  , tableGetHeaderRowHeight
  , tableGetHoveredRow
  , tableGetInstanceData
  , tableGetInstanceID
  , tableInitColumnDefaults
  , tableLoadSettings
  , tableLoadSettingsForColumn
  , tableLoadSettingsForColumns
  , tableMergeDrawChannels
  , tableOpenContextMenu
  , tablePopBackgroundChannel
  , tablePopColumnChannel
  , tablePushBackgroundChannel
  , tablePushColumnChannel
  , tableQueueSetColumnDisplayOrder
  , tableReconcileColumns
  , tableRemove
  , tableResetSettings
  , tableSaveSettings
  , tableSetColumnDisplayOrder
  , tableSetColumnSortDirection
  , tableSetColumnWidth
  , tableSetColumnWidthAutoAll
  , tableSetColumnWidthAutoSingle
  , tableSettingsAddSettingsHandler
  , tableSettingsCreate
  , tableSettingsFindByID
  , tableSetupDrawChannels
  , tableSortSpecsBuild
  , tableSortSpecsSanitize
  , tableUpdateBorders
  , tableUpdateColumnsWeightFromWidth
  , tableUpdateLayout
  , teleportMousePos
  , tempInputIsActive
  , tempInputScalar
  , tempInputText
  , testKeyOwner
  , testShortcutRouting
  , textAlignedUnformatted
  , textEx
  , translateWindowsInViewport
  , treeNodeBehavior
  , treeNodeDrawLineToChildNode
  , treeNodeDrawLineToTreePop
  , treeNodeSetOpen
  , treeNodeUpdateNextOpen
  , treePushOverrideID
  , typingSelectFindBestLeadingMatch
  , typingSelectFindMatch
  , typingSelectFindNextSingleCharMatch
  , unregisterFontAtlas
  , unregisterUserTexture
  , updateCurrentFontSize
  , updateHoveredWindowAndCaptureFlags
  , updateInputEvents
  , updateMouseMovingWindowEndFrame
  , updateMouseMovingWindowNewFrame
  , updateWindowParentAndRootLinks
  , updateWindowSkipRefresh
  , windowPosAbsToRel
  , windowPosRelToAbs
  , windowRectAbsToRel
  , windowRectRelToAbs
  ) where

import DearImGui.Raw (ImGuiID, ImGuiInputTextCallback, ImGuiKeyChord, ImGuiSelectionUserData, ImS64, ImTextureID, ImU32, ImU64)
import DearImGui.Raw.Enums.ImDrawFlags (ImDrawFlags)
import DearImGui.Raw.Enums.ImGuiButtonFlags (ImGuiButtonFlags)
import DearImGui.Raw.Enums.ImGuiChildFlags (ImGuiChildFlags)
import DearImGui.Raw.Enums.ImGuiColorEditFlags (ImGuiColorEditFlags)
import DearImGui.Raw.Enums.ImGuiComboFlags (ImGuiComboFlags)
import DearImGui.Raw.Enums.ImGuiCond (ImGuiCond)
import DearImGui.Raw.Enums.ImGuiDataType (ImGuiDataType)
import DearImGui.Raw.Enums.ImGuiDir (ImGuiDir)
import DearImGui.Raw.Enums.ImGuiDockNodeFlags (ImGuiDockNodeFlags)
import DearImGui.Raw.Enums.ImGuiHoveredFlags (ImGuiHoveredFlags)
import DearImGui.Raw.Enums.ImGuiInputFlags (ImGuiInputFlags)
import DearImGui.Raw.Enums.ImGuiInputTextFlags (ImGuiInputTextFlags)
import DearImGui.Raw.Enums.ImGuiItemFlags (ImGuiItemFlags)
import DearImGui.Raw.Enums.ImGuiKey (ImGuiKey)
import DearImGui.Raw.Enums.ImGuiMouseButton (ImGuiMouseButton)
import DearImGui.Raw.Enums.ImGuiMouseCursor (ImGuiMouseCursor)
import DearImGui.Raw.Enums.ImGuiMultiSelectFlags (ImGuiMultiSelectFlags)
import DearImGui.Raw.Enums.ImGuiPopupFlags (ImGuiPopupFlags)
import DearImGui.Raw.Enums.ImGuiSliderFlags (ImGuiSliderFlags)
import DearImGui.Raw.Enums.ImGuiSortDirection (ImGuiSortDirection)
import DearImGui.Raw.Enums.ImGuiStyleVar (ImGuiStyleVar)
import DearImGui.Raw.Enums.ImGuiTabBarFlags (ImGuiTabBarFlags)
import DearImGui.Raw.Enums.ImGuiTabItemFlags (ImGuiTabItemFlags)
import DearImGui.Raw.Enums.ImGuiTableColumnFlags (ImGuiTableColumnFlags)
import DearImGui.Raw.Enums.ImGuiTableFlags (ImGuiTableFlags)
import DearImGui.Raw.Enums.ImGuiTreeNodeFlags (ImGuiTreeNodeFlags)
import DearImGui.Raw.Enums.ImGuiWindowFlags (ImGuiWindowFlags)
import DearImGui.Raw.ImDrawCmd (ImDrawCmd)
import DearImGui.Raw.ImDrawData (ImDrawData)
import DearImGui.Raw.ImDrawList (ImDrawList)
import DearImGui.Raw.ImFont (ImFont)
import DearImGui.Raw.ImFontAtlas (ImFontAtlas)
import DearImGui.Raw.ImFontAtlasRect (ImFontAtlasRect)
import DearImGui.Raw.ImFontBaked (ImFontBaked)
import DearImGui.Raw.ImFontGlyph (ImFontGlyph)
import DearImGui.Raw.ImGuiIO (ImGuiIO)
import DearImGui.Raw.ImGuiKeyData (ImGuiKeyData)
import DearImGui.Raw.ImGuiPlatformIO (ImGuiPlatformIO)
import DearImGui.Raw.ImGuiPlatformMonitor (ImGuiPlatformMonitor)
import DearImGui.Raw.ImGuiStorage (ImGuiStorage)
import DearImGui.Raw.ImGuiViewport (ImGuiViewport)
import DearImGui.Raw.ImTextureData (ImTextureData)
import DearImGui.Raw.ImTextureRef (ImTextureRef)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVec4 (ImVec4)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal (ImGuiTable, ImGuiTableColumn)
import DearImGui.Raw.Internal.Enums.ImGuiAxis (ImGuiAxis)
import DearImGui.Raw.Internal.Enums.ImGuiContextHookType (ImGuiContextHookType)
import DearImGui.Raw.Internal.Enums.ImGuiFocusRequestFlags (ImGuiFocusRequestFlags)
import DearImGui.Raw.Internal.Enums.ImGuiItemStatusFlags (ImGuiItemStatusFlags)
import DearImGui.Raw.Internal.Enums.ImGuiLocKey (ImGuiLocKey)
import DearImGui.Raw.Internal.Enums.ImGuiLogFlags (ImGuiLogFlags)
import DearImGui.Raw.Internal.Enums.ImGuiNavLayer (ImGuiNavLayer)
import DearImGui.Raw.Internal.Enums.ImGuiNavMoveFlags (ImGuiNavMoveFlags)
import DearImGui.Raw.Internal.Enums.ImGuiNavRenderCursorFlags (ImGuiNavRenderCursorFlags)
import DearImGui.Raw.Internal.Enums.ImGuiOldColumnFlags (ImGuiOldColumnFlags)
import DearImGui.Raw.Internal.Enums.ImGuiPlotType (ImGuiPlotType)
import DearImGui.Raw.Internal.Enums.ImGuiPopupPositionPolicy (ImGuiPopupPositionPolicy)
import DearImGui.Raw.Internal.Enums.ImGuiScrollFlags (ImGuiScrollFlags)
import DearImGui.Raw.Internal.Enums.ImGuiSeparatorFlags (ImGuiSeparatorFlags)
import DearImGui.Raw.Internal.Enums.ImGuiTextFlags (ImGuiTextFlags)
import DearImGui.Raw.Internal.Enums.ImGuiTooltipFlags (ImGuiTooltipFlags)
import DearImGui.Raw.Internal.Enums.ImGuiTypingSelectFlags (ImGuiTypingSelectFlags)
import DearImGui.Raw.Internal.Enums.ImGuiWindowRefreshFlags (ImGuiWindowRefreshFlags)
import DearImGui.Raw.Internal.ImGuiBoxSelectState (ImGuiBoxSelectState)
import DearImGui.Raw.Internal.ImGuiContext (ImGuiContext)
import DearImGui.Raw.Internal.ImGuiContextHook (ImGuiContextHook)
import DearImGui.Raw.Internal.ImGuiDataTypeInfo (ImGuiDataTypeInfo)
import DearImGui.Raw.Internal.ImGuiDebugAllocInfo (ImGuiDebugAllocInfo)
import DearImGui.Raw.Internal.ImGuiDockNode (ImGuiDockNode)
import DearImGui.Raw.Internal.ImGuiErrorRecoveryState (ImGuiErrorRecoveryState)
import DearImGui.Raw.Internal.ImGuiInputTextState (ImGuiInputTextState)
import DearImGui.Raw.Internal.ImGuiKeyOwnerData (ImGuiKeyOwnerData)
import DearImGui.Raw.Internal.ImGuiKeyRoutingData (ImGuiKeyRoutingData)
import DearImGui.Raw.Internal.ImGuiLocEntry (ImGuiLocEntry)
import DearImGui.Raw.Internal.ImGuiMultiSelectState (ImGuiMultiSelectState)
import DearImGui.Raw.Internal.ImGuiMultiSelectTempData (ImGuiMultiSelectTempData)
import DearImGui.Raw.Internal.ImGuiNavItemData (ImGuiNavItemData)
import DearImGui.Raw.Internal.ImGuiOldColumns (ImGuiOldColumns)
import DearImGui.Raw.Internal.ImGuiSettingsCleanupArgs (ImGuiSettingsCleanupArgs)
import DearImGui.Raw.Internal.ImGuiSettingsHandler (ImGuiSettingsHandler)
import DearImGui.Raw.Internal.ImGuiShrinkWidthItem (ImGuiShrinkWidthItem)
import DearImGui.Raw.Internal.ImGuiStyleVarInfo (ImGuiStyleVarInfo)
import DearImGui.Raw.Internal.ImGuiTabBar (ImGuiTabBar)
import DearImGui.Raw.Internal.ImGuiTabItem (ImGuiTabItem)
import DearImGui.Raw.Internal.ImGuiTableColumnSettings (ImGuiTableColumnSettings)
import DearImGui.Raw.Internal.ImGuiTableHeaderData (ImGuiTableHeaderData)
import DearImGui.Raw.Internal.ImGuiTableInstanceData (ImGuiTableInstanceData)
import DearImGui.Raw.Internal.ImGuiTableSettings (ImGuiTableSettings)
import DearImGui.Raw.Internal.ImGuiTableTempData (ImGuiTableTempData)
import DearImGui.Raw.Internal.ImGuiTreeNodeStackData (ImGuiTreeNodeStackData)
import DearImGui.Raw.Internal.ImGuiTypingSelectRequest (ImGuiTypingSelectRequest)
import DearImGui.Raw.Internal.ImGuiTypingSelectState (ImGuiTypingSelectState)
import DearImGui.Raw.Internal.ImGuiViewportP (ImGuiViewportP)
import DearImGui.Raw.Internal.ImGuiWindow (ImGuiWindow)
import DearImGui.Raw.Internal.ImGuiWindowSettings (ImGuiWindowSettings)
import DearImGui.Raw.Internal.ImRect (ImRect)
import Foreign.C.String (CString)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Utils (with)
import Foreign.Ptr (FunPtr, Ptr)
import Foreign.Storable (Storable (..))

#include "dcimgui_nodefaultargfunctions_internal.h"

-- functions

-- C: void ImGui::ActivateItemByID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ActivateItemByID"
  activateItemByID
    :: ImGuiID -- ^ id
    -> IO ()

-- C: ImGuiID ImGui::AddContextHook(ImGuiContext* ctx, const ImGuiContextHook* hook)
foreign import capi safe "dcimgui_nodefaultargfunctions_internal.h ImGui_AddContextHook"
  addContextHook
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiContextHook) -- ^ hook
    -> IO ImGuiID

-- C: void ImGui::AddDrawListToDrawDataEx(ImDrawData* draw_data, ImVector_ImDrawListPtr* out_list, ImDrawList* draw_list)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_AddDrawListToDrawDataEx"
  addDrawListToDrawDataEx
    :: (Ptr ImDrawData) -- ^ draw_data
    -> (Ptr (ImVector (Ptr ImDrawList))) -- ^ out_list
    -> (Ptr ImDrawList) -- ^ draw_list
    -> IO ()

-- C: void ImGui::AddSettingsHandler(const ImGuiSettingsHandler* handler)
foreign import capi safe "dcimgui_nodefaultargfunctions_internal.h ImGui_AddSettingsHandler"
  addSettingsHandler
    :: (Ptr ImGuiSettingsHandler) -- ^ handler
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ArrowButtonEx_wrap"
  c_arrowButtonEx
    :: CString -- ^ str_id
    -> ImGuiDir -- ^ dir
    -> (Ptr ImVec2) -- ^ size_arg
    -> ImGuiButtonFlags -- ^ flags
    -> IO CBool

arrowButtonEx
  :: CString -- ^ str_id
  -> ImGuiDir -- ^ dir
  -> ImVec2 -- ^ size_arg
  -> ImGuiButtonFlags -- ^ flags
  -> IO CBool
arrowButtonEx str_id dir size_arg flags =
  with size_arg $ \size_argPtr -> c_arrowButtonEx str_id dir size_argPtr flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_BeginBoxSelect_wrap"
  c_beginBoxSelect
    :: (Ptr ImRect) -- ^ scope_rect
    -> (Ptr ImGuiWindow) -- ^ window
    -> ImGuiID -- ^ box_select_id
    -> ImGuiMultiSelectFlags -- ^ ms_flags
    -> IO CBool

beginBoxSelect
  :: ImRect -- ^ scope_rect
  -> (Ptr ImGuiWindow) -- ^ window
  -> ImGuiID -- ^ box_select_id
  -> ImGuiMultiSelectFlags -- ^ ms_flags
  -> IO CBool
beginBoxSelect scope_rect window box_select_id ms_flags =
  with scope_rect $ \scope_rectPtr -> c_beginBoxSelect scope_rectPtr window box_select_id ms_flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_BeginChildEx_wrap"
  c_beginChildEx
    :: CString -- ^ name
    -> ImGuiID -- ^ id
    -> (Ptr ImVec2) -- ^ size_arg
    -> ImGuiChildFlags -- ^ child_flags
    -> ImGuiWindowFlags -- ^ window_flags
    -> IO CBool

beginChildEx
  :: CString -- ^ name
  -> ImGuiID -- ^ id
  -> ImVec2 -- ^ size_arg
  -> ImGuiChildFlags -- ^ child_flags
  -> ImGuiWindowFlags -- ^ window_flags
  -> IO CBool
beginChildEx name id_ size_arg child_flags window_flags =
  with size_arg $ \size_argPtr -> c_beginChildEx name id_ size_argPtr child_flags window_flags

-- C: void ImGui::BeginColumns(const char* str_id, int count, ImGuiOldColumnFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginColumns"
  beginColumns
    :: CString -- ^ str_id
    -> CInt -- ^ count
    -> ImGuiOldColumnFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_BeginComboPopup_wrap"
  c_beginComboPopup
    :: ImGuiID -- ^ popup_id
    -> (Ptr ImRect) -- ^ bb
    -> ImGuiComboFlags -- ^ flags
    -> IO CBool

beginComboPopup
  :: ImGuiID -- ^ popup_id
  -> ImRect -- ^ bb
  -> ImGuiComboFlags -- ^ flags
  -> IO CBool
beginComboPopup popup_id bb flags =
  with bb $ \bbPtr -> c_beginComboPopup popup_id bbPtr flags

-- C: bool ImGui::BeginComboPreview()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginComboPreview"
  beginComboPreview :: IO CBool

-- C: void ImGui::BeginDisabledOverrideReenable()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginDisabledOverrideReenable"
  beginDisabledOverrideReenable :: IO ()

-- C: void ImGui::BeginDockableDragDropSource(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginDockableDragDropSource"
  beginDockableDragDropSource
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::BeginDockableDragDropTarget(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginDockableDragDropTarget"
  beginDockableDragDropTarget
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginDocked"
  beginDocked
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr CBool) -- ^ p_open
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_BeginDragDropTargetCustom_wrap"
  c_beginDragDropTargetCustom
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> IO CBool

beginDragDropTargetCustom
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> IO CBool
beginDragDropTargetCustom bb id_ =
  with bb $ \bbPtr -> c_beginDragDropTargetCustom bbPtr id_

-- C: bool ImGui::BeginDragDropTargetViewport(ImGuiViewport* viewport, const ImRect* p_bb)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginDragDropTargetViewport"
  beginDragDropTargetViewport
    :: (Ptr ImGuiViewport) -- ^ viewport
    -> (Ptr ImRect) -- ^ p_bb
    -> IO CBool

-- C: bool ImGui::BeginErrorTooltip()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginErrorTooltip"
  beginErrorTooltip :: IO CBool

-- C: bool ImGui::BeginMenuEx(const char* label, const char* icon, bool enabled)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginMenuWithIcon"
  beginMenuWithIcon
    :: CString -- ^ label
    -> CString -- ^ icon
    -> CBool -- ^ enabled
    -> IO CBool

-- C: bool ImGui::BeginPopupEx(ImGuiID id, ImGuiWindowFlags extra_window_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginPopupEx"
  beginPopupEx
    :: ImGuiID -- ^ id
    -> ImGuiWindowFlags -- ^ extra_window_flags
    -> IO CBool

-- C: bool ImGui::BeginPopupMenuEx(ImGuiID id, const char* label, ImGuiWindowFlags extra_window_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginPopupMenuEx"
  beginPopupMenuEx
    :: ImGuiID -- ^ id
    -> CString -- ^ label
    -> ImGuiWindowFlags -- ^ extra_window_flags
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_BeginTabBarEx_wrap"
  c_beginTabBarEx
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImRect) -- ^ bb
    -> ImGuiTabBarFlags -- ^ flags
    -> IO CBool

beginTabBarEx
  :: (Ptr ImGuiTabBar) -- ^ tab_bar
  -> ImRect -- ^ bb
  -> ImGuiTabBarFlags -- ^ flags
  -> IO CBool
beginTabBarEx tab_bar bb flags =
  with bb $ \bbPtr -> c_beginTabBarEx tab_bar bbPtr flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_BeginTableWithID_wrap"
  c_beginTableWithID
    :: CString -- ^ name
    -> ImGuiID -- ^ id
    -> CInt -- ^ columns_count
    -> ImGuiTableFlags -- ^ flags
    -> (Ptr ImVec2) -- ^ outer_size
    -> Float -- ^ inner_width
    -> IO CBool

beginTableWithID
  :: CString -- ^ name
  -> ImGuiID -- ^ id
  -> CInt -- ^ columns_count
  -> ImGuiTableFlags -- ^ flags
  -> ImVec2 -- ^ outer_size
  -> Float -- ^ inner_width
  -> IO CBool
beginTableWithID name id_ columns_count flags outer_size inner_width =
  with outer_size $ \outer_sizePtr -> c_beginTableWithID name id_ columns_count flags outer_sizePtr inner_width

-- C: bool ImGui::BeginTooltipEx(ImGuiTooltipFlags tooltip_flags, ImGuiWindowFlags extra_window_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginTooltipEx"
  beginTooltipEx
    :: ImGuiTooltipFlags -- ^ tooltip_flags
    -> ImGuiWindowFlags -- ^ extra_window_flags
    -> IO CBool

-- C: bool ImGui::BeginTooltipHidden()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginTooltipHidden"
  beginTooltipHidden :: IO CBool

-- C: bool ImGui::BeginViewportSideBar(const char* name, ImGuiViewport* viewport, ImGuiDir dir, float size, ImGuiWindowFlags window_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BeginViewportSideBar"
  beginViewportSideBar
    :: CString -- ^ name
    -> (Ptr ImGuiViewport) -- ^ viewport
    -> ImGuiDir -- ^ dir
    -> Float -- ^ size
    -> ImGuiWindowFlags -- ^ window_flags
    -> IO CBool

-- C: void ImGui::BringWindowToDisplayBack(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BringWindowToDisplayBack"
  bringWindowToDisplayBack
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::BringWindowToDisplayBehind(ImGuiWindow* window, ImGuiWindow* above_window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BringWindowToDisplayBehind"
  bringWindowToDisplayBehind
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiWindow) -- ^ above_window
    -> IO ()

-- C: void ImGui::BringWindowToDisplayFront(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BringWindowToDisplayFront"
  bringWindowToDisplayFront
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::BringWindowToFocusFront(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_BringWindowToFocusFront"
  bringWindowToFocusFront
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ButtonBehavior_wrap"
  c_buttonBehavior
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> (Ptr CBool) -- ^ out_hovered
    -> (Ptr CBool) -- ^ out_held
    -> ImGuiButtonFlags -- ^ flags
    -> IO CBool

buttonBehavior
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> (Ptr CBool) -- ^ out_hovered
  -> (Ptr CBool) -- ^ out_held
  -> ImGuiButtonFlags -- ^ flags
  -> IO CBool
buttonBehavior bb id_ out_hovered out_held flags =
  with bb $ \bbPtr -> c_buttonBehavior bbPtr id_ out_hovered out_held flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ButtonWithFlags_wrap"
  c_buttonWithFlags
    :: CString -- ^ label
    -> (Ptr ImVec2) -- ^ size_arg
    -> ImGuiButtonFlags -- ^ flags
    -> IO CBool

buttonWithFlags
  :: CString -- ^ label
  -> ImVec2 -- ^ size_arg
  -> ImGuiButtonFlags -- ^ flags
  -> IO CBool
buttonWithFlags label size_arg flags =
  with size_arg $ \size_argPtr -> c_buttonWithFlags label size_argPtr flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CalcClipRectVisibleItemsY_wrap"
  c_calcClipRectVisibleItemsY
    :: (Ptr ImRect) -- ^ clip_rect
    -> (Ptr ImVec2) -- ^ pos
    -> Float -- ^ items_height
    -> (Ptr CInt) -- ^ out_visible_start
    -> (Ptr CInt) -- ^ out_visible_end
    -> IO ()

calcClipRectVisibleItemsY
  :: ImRect -- ^ clip_rect
  -> ImVec2 -- ^ pos
  -> Float -- ^ items_height
  -> (Ptr CInt) -- ^ out_visible_start
  -> (Ptr CInt) -- ^ out_visible_end
  -> IO ()
calcClipRectVisibleItemsY clip_rect pos items_height out_visible_start out_visible_end =
  with clip_rect $ \clip_rectPtr -> with pos $ \posPtr -> c_calcClipRectVisibleItemsY clip_rectPtr posPtr items_height out_visible_start out_visible_end

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CalcItemSize_wrap"
  c_calcItemSize
    :: (Ptr ImVec2) -- ^ size
    -> Float -- ^ default_w
    -> Float -- ^ default_h
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

calcItemSize
  :: ImVec2 -- ^ size
  -> Float -- ^ default_w
  -> Float -- ^ default_h
  -> IO ImVec2
calcItemSize size default_w default_h =
  with size $ \sizePtr -> alloca $ \outPtr -> c_calcItemSize sizePtr default_w default_h outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CalcRoundingFlagsForRectInRect_wrap"
  c_calcRoundingFlagsForRectInRect
    :: (Ptr ImRect) -- ^ r_in
    -> (Ptr ImRect) -- ^ r_outer
    -> Float -- ^ threshold
    -> IO ImDrawFlags

calcRoundingFlagsForRectInRect
  :: ImRect -- ^ r_in
  -> ImRect -- ^ r_outer
  -> Float -- ^ threshold
  -> IO ImDrawFlags
calcRoundingFlagsForRectInRect r_in r_outer threshold =
  with r_in $ \r_inPtr -> with r_outer $ \r_outerPtr -> c_calcRoundingFlagsForRectInRect r_inPtr r_outerPtr threshold

-- C: int ImGui::CalcTypematicRepeatAmount(float t0, float t1, float repeat_delay, float repeat_rate)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_CalcTypematicRepeatAmount"
  calcTypematicRepeatAmount
    :: Float -- ^ t0
    -> Float -- ^ t1
    -> Float -- ^ repeat_delay
    -> Float -- ^ repeat_rate
    -> IO CInt

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CalcWindowNextAutoFitSize_wrap"
  c_calcWindowNextAutoFitSize
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

calcWindowNextAutoFitSize
  :: (Ptr ImGuiWindow) -- ^ window
  -> IO ImVec2
calcWindowNextAutoFitSize window =
  alloca $ \outPtr -> c_calcWindowNextAutoFitSize window outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CalcWrapWidthForPos_wrap"
  c_calcWrapWidthForPos
    :: (Ptr ImVec2) -- ^ pos
    -> Float -- ^ wrap_pos_x
    -> IO Float

calcWrapWidthForPos
  :: ImVec2 -- ^ pos
  -> Float -- ^ wrap_pos_x
  -> IO Float
calcWrapWidthForPos pos wrap_pos_x =
  with pos $ \posPtr -> c_calcWrapWidthForPos posPtr wrap_pos_x

-- C: void ImGui::CallContextHooks(ImGuiContext* ctx, ImGuiContextHookType type)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_CallContextHooks"
  callContextHooks
    :: (Ptr ImGuiContext) -- ^ ctx
    -> ImGuiContextHookType -- ^ type
    -> IO ()

-- C: bool ImGui::CheckboxFlags(const char* label, ImS64* flags, ImS64 flags_value)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_CheckboxFlagsImS64Ptr"
  checkboxFlagsImS64Ptr
    :: CString -- ^ label
    -> (Ptr ImS64) -- ^ flags
    -> ImS64 -- ^ flags_value
    -> IO CBool

-- C: bool ImGui::CheckboxFlags(const char* label, ImU64* flags, ImU64 flags_value)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_CheckboxFlagsImU64Ptr"
  checkboxFlagsImU64Ptr
    :: CString -- ^ label
    -> (Ptr ImU64) -- ^ flags
    -> ImU64 -- ^ flags_value
    -> IO CBool

-- C: void ImGui::CleanupIniSettings(ImGuiSettingsCleanupArgs* args)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_CleanupIniSettings"
  cleanupIniSettings
    :: (Ptr ImGuiSettingsCleanupArgs) -- ^ args
    -> IO ()

-- C: void ImGui::ClearActiveID()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClearActiveID"
  clearActiveID :: IO ()

-- C: void ImGui::ClearDragDrop()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClearDragDrop"
  clearDragDrop :: IO ()

-- C: void ImGui::ClearIniSettings()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClearIniSettings"
  clearIniSettings :: IO ()

-- C: void ImGui::ClearWindowSettings(const char* name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClearWindowSettings"
  clearWindowSettings
    :: CString -- ^ name
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CloseButton_wrap"
  c_closeButton
    :: ImGuiID -- ^ id
    -> (Ptr ImVec2) -- ^ pos
    -> IO CBool

closeButton
  :: ImGuiID -- ^ id
  -> ImVec2 -- ^ pos
  -> IO CBool
closeButton id_ pos =
  with pos $ \posPtr -> c_closeButton id_ posPtr

-- C: void ImGui::ClosePopupToLevel(int remaining, bool restore_focus_to_window_under_popup)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClosePopupToLevel"
  closePopupToLevel
    :: CInt -- ^ remaining
    -> CBool -- ^ restore_focus_to_window_under_popup
    -> IO ()

-- C: void ImGui::ClosePopupsExceptModals()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClosePopupsExceptModals"
  closePopupsExceptModals :: IO ()

-- C: void ImGui::ClosePopupsOverWindow(ImGuiWindow* ref_window, bool restore_focus_to_window_under_popup)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ClosePopupsOverWindow"
  closePopupsOverWindow
    :: (Ptr ImGuiWindow) -- ^ ref_window
    -> CBool -- ^ restore_focus_to_window_under_popup
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_CollapseButton_wrap"
  c_collapseButton
    :: ImGuiID -- ^ id
    -> (Ptr ImVec2) -- ^ pos
    -> (Ptr ImGuiDockNode) -- ^ dock_node
    -> IO CBool

collapseButton
  :: ImGuiID -- ^ id
  -> ImVec2 -- ^ pos
  -> (Ptr ImGuiDockNode) -- ^ dock_node
  -> IO CBool
collapseButton id_ pos dock_node =
  with pos $ \posPtr -> c_collapseButton id_ posPtr dock_node

-- C: void ImGui::ColorEditOptionsPopup(const float* col, ImGuiColorEditFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ColorEditOptionsPopup"
  colorEditOptionsPopup
    :: (Ptr Float) -- ^ col
    -> ImGuiColorEditFlags -- ^ flags
    -> IO ()

-- C: void ImGui::ColorPickerOptionsPopup(const float* ref_col, ImGuiColorEditFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ColorPickerOptionsPopup"
  colorPickerOptionsPopup
    :: (Ptr Float) -- ^ ref_col
    -> ImGuiColorEditFlags -- ^ flags
    -> IO ()

-- C: void ImGui::ColorTooltip(const char* text, const float* col, ImGuiColorEditFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ColorTooltip"
  colorTooltip
    :: CString -- ^ text
    -> (Ptr Float) -- ^ col
    -> ImGuiColorEditFlags -- ^ flags
    -> IO ()

-- C: ImGuiKey ImGui::ConvertSingleModFlagToKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ConvertSingleModFlagToKey"
  convertSingleModFlagToKey
    :: ImGuiKey -- ^ key
    -> IO ImGuiKey

-- C: ImGuiWindowSettings* ImGui::CreateNewWindowSettings(const char* name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_CreateNewWindowSettings"
  createNewWindowSettings
    :: CString -- ^ name
    -> IO (Ptr ImGuiWindowSettings)

-- C: bool ImGui::DataTypeApplyFromText(const char* buf, ImGuiDataType data_type, void* p_data, const char* format, void* p_data_when_empty)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeApplyFromText"
  dataTypeApplyFromText
    :: CString -- ^ buf
    -> ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_data
    -> CString -- ^ format
    -> (Ptr ()) -- ^ p_data_when_empty
    -> IO CBool

-- C: void ImGui::DataTypeApplyOp(ImGuiDataType data_type, int op, void* output, const void* arg_1, const void* arg_2)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeApplyOp"
  dataTypeApplyOp
    :: ImGuiDataType -- ^ data_type
    -> CInt -- ^ op
    -> (Ptr ()) -- ^ output
    -> (Ptr ()) -- ^ arg_1
    -> (Ptr ()) -- ^ arg_2
    -> IO ()

-- C: bool ImGui::DataTypeClamp(ImGuiDataType data_type, void* p_data, const void* p_min, const void* p_max)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeClamp"
  dataTypeClamp
    :: ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_data
    -> (Ptr ()) -- ^ p_min
    -> (Ptr ()) -- ^ p_max
    -> IO CBool

-- C: int ImGui::DataTypeCompare(ImGuiDataType data_type, const void* arg_1, const void* arg_2)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeCompare"
  dataTypeCompare
    :: ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ arg_1
    -> (Ptr ()) -- ^ arg_2
    -> IO CInt

-- C: int ImGui::DataTypeFormatString(char* buf, int buf_size, ImGuiDataType data_type, const void* p_data, const char* format)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeFormatString"
  dataTypeFormatString
    :: (Ptr CChar) -- ^ buf
    -> CInt -- ^ buf_size
    -> ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_data
    -> CString -- ^ format
    -> IO CInt

-- C: const ImGuiDataTypeInfo* ImGui::DataTypeGetInfo(ImGuiDataType data_type)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeGetInfo"
  dataTypeGetInfo
    :: ImGuiDataType -- ^ data_type
    -> IO (Ptr ImGuiDataTypeInfo)

-- C: bool ImGui::DataTypeIsZero(ImGuiDataType data_type, const void* p_data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DataTypeIsZero"
  dataTypeIsZero
    :: ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_data
    -> IO CBool

-- C: void ImGui::DebugAllocHook(ImGuiDebugAllocInfo* info, int frame_count, void* ptr, size_t size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugAllocHook"
  debugAllocHook
    :: (Ptr ImGuiDebugAllocInfo) -- ^ info
    -> CInt -- ^ frame_count
    -> (Ptr ()) -- ^ ptr
    -> CSize -- ^ size
    -> IO ()

-- C: bool ImGui::DebugBreakButton(const char* label, const char* description_of_location)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugBreakButton"
  debugBreakButton
    :: CString -- ^ label
    -> CString -- ^ description_of_location
    -> IO CBool

-- C: void ImGui::DebugBreakButtonTooltip(bool keyboard_only, const char* description_of_location)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugBreakButtonTooltip"
  debugBreakButtonTooltip
    :: CBool -- ^ keyboard_only
    -> CString -- ^ description_of_location
    -> IO ()

-- C: void ImGui::DebugBreakClearData()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugBreakClearData"
  debugBreakClearData :: IO ()

-- C: void ImGui::DebugDrawCursorPos(ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugDrawCursorPos"
  debugDrawCursorPos
    :: ImU32 -- ^ col
    -> IO ()

-- C: void ImGui::DebugDrawItemRect(ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugDrawItemRect"
  debugDrawItemRect
    :: ImU32 -- ^ col
    -> IO ()

-- C: void ImGui::DebugDrawLineExtents(ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugDrawLineExtents"
  debugDrawLineExtents
    :: ImU32 -- ^ col
    -> IO ()

-- C: void ImGui::DebugHookIdInfo(ImGuiID id, ImGuiDataType data_type, const void* data_id, const void* data_id_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugHookIdInfo"
  debugHookIdInfo
    :: ImGuiID -- ^ id
    -> ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ data_id
    -> (Ptr ()) -- ^ data_id_end
    -> IO ()

-- C: void ImGui::DebugLocateItem(ImGuiID target_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugLocateItem"
  debugLocateItem
    :: ImGuiID -- ^ target_id
    -> IO ()

-- C: void ImGui::DebugLocateItemOnHover(ImGuiID target_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugLocateItemOnHover"
  debugLocateItemOnHover
    :: ImGuiID -- ^ target_id
    -> IO ()

-- C: void ImGui::DebugLocateItemResolveWithLastItem()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugLocateItemResolveWithLastItem"
  debugLocateItemResolveWithLastItem :: IO ()

-- C: void ImGui::DebugNodeColumns(ImGuiOldColumns* columns)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeColumns"
  debugNodeColumns
    :: (Ptr ImGuiOldColumns) -- ^ columns
    -> IO ()

-- C: void ImGui::DebugNodeDockNode(ImGuiDockNode* node, const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeDockNode"
  debugNodeDockNode
    :: (Ptr ImGuiDockNode) -- ^ node
    -> CString -- ^ label
    -> IO ()

-- C: void ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list, const ImDrawList* draw_list, const ImDrawCmd* draw_cmd, bool show_mesh, bool show_aabb)
foreign import capi safe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeDrawCmdShowMeshAndBoundingBox"
  debugNodeDrawCmdShowMeshAndBoundingBox
    :: (Ptr ImDrawList) -- ^ out_draw_list
    -> (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImDrawCmd) -- ^ draw_cmd
    -> CBool -- ^ show_mesh
    -> CBool -- ^ show_aabb
    -> IO ()

-- C: void ImGui::DebugNodeDrawList(ImGuiWindow* window, ImGuiViewportP* viewport, const ImDrawList* draw_list, const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeDrawList"
  debugNodeDrawList
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiViewportP) -- ^ viewport
    -> (Ptr ImDrawList) -- ^ draw_list
    -> CString -- ^ label
    -> IO ()

-- C: void ImGui::DebugNodeFont(ImFont* font)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeFont"
  debugNodeFont
    :: (Ptr ImFont) -- ^ font
    -> IO ()

-- C: void ImGui::DebugNodeFontGlyph(ImFont* font, const ImFontGlyph* glyph)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeFontGlyph"
  debugNodeFontGlyph
    :: (Ptr ImFont) -- ^ font
    -> (Ptr ImFontGlyph) -- ^ glyph
    -> IO ()

-- C: void ImGui::DebugNodeFontGlyphsForSrcMask(ImFont* font, ImFontBaked* baked, int src_mask)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeFontGlyphsForSrcMask"
  debugNodeFontGlyphsForSrcMask
    :: (Ptr ImFont) -- ^ font
    -> (Ptr ImFontBaked) -- ^ baked
    -> CInt -- ^ src_mask
    -> IO ()

-- C: void ImGui::DebugNodeInputTextState(ImGuiInputTextState* state)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeInputTextState"
  debugNodeInputTextState
    :: (Ptr ImGuiInputTextState) -- ^ state
    -> IO ()

-- C: void ImGui::DebugNodeMultiSelectState(ImGuiMultiSelectState* state)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeMultiSelectState"
  debugNodeMultiSelectState
    :: (Ptr ImGuiMultiSelectState) -- ^ state
    -> IO ()

-- C: void ImGui::DebugNodePlatformMonitor(ImGuiPlatformMonitor* monitor, const char* label, int idx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodePlatformMonitor"
  debugNodePlatformMonitor
    :: (Ptr ImGuiPlatformMonitor) -- ^ monitor
    -> CString -- ^ label
    -> CInt -- ^ idx
    -> IO ()

-- C: void ImGui::DebugNodeStorage(ImGuiStorage* storage, const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeStorage"
  debugNodeStorage
    :: (Ptr ImGuiStorage) -- ^ storage
    -> CString -- ^ label
    -> IO ()

-- C: void ImGui::DebugNodeTabBar(ImGuiTabBar* tab_bar, const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeTabBar"
  debugNodeTabBar
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> CString -- ^ label
    -> IO ()

-- C: void ImGui::DebugNodeTable(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeTable"
  debugNodeTable
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::DebugNodeTableSettings(ImGuiTableSettings* settings, ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeTableSettings"
  debugNodeTableSettings
    :: (Ptr ImGuiTableSettings) -- ^ settings
    -> (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::DebugNodeTexture(ImTextureData* tex, int int_id, const ImFontAtlasRect* highlight_rect)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeTexture"
  debugNodeTexture
    :: (Ptr ImTextureData) -- ^ tex
    -> CInt -- ^ int_id
    -> (Ptr ImFontAtlasRect) -- ^ highlight_rect
    -> IO ()

-- C: void ImGui::DebugNodeTypingSelectState(ImGuiTypingSelectState* state)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeTypingSelectState"
  debugNodeTypingSelectState
    :: (Ptr ImGuiTypingSelectState) -- ^ state
    -> IO ()

-- C: void ImGui::DebugNodeViewport(ImGuiViewportP* viewport)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeViewport"
  debugNodeViewport
    :: (Ptr ImGuiViewportP) -- ^ viewport
    -> IO ()

-- C: void ImGui::DebugNodeWindow(ImGuiWindow* window, const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeWindow"
  debugNodeWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> CString -- ^ label
    -> IO ()

-- C: void ImGui::DebugNodeWindowSettings(ImGuiWindowSettings* settings)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeWindowSettings"
  debugNodeWindowSettings
    :: (Ptr ImGuiWindowSettings) -- ^ settings
    -> IO ()

-- C: void ImGui::DebugNodeWindowsList(ImVector_ImGuiWindowPtr* windows, const char* label)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeWindowsList"
  debugNodeWindowsList
    :: (Ptr (ImVector (Ptr ImGuiWindow))) -- ^ windows
    -> CString -- ^ label
    -> IO ()

-- C: void ImGui::DebugNodeWindowsListByBeginStackParent(ImGuiWindow** windows, int windows_size, ImGuiWindow* parent_in_begin_stack)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugNodeWindowsListByBeginStackParent"
  debugNodeWindowsListByBeginStackParent
    :: (Ptr (Ptr ImGuiWindow)) -- ^ windows
    -> CInt -- ^ windows_size
    -> (Ptr ImGuiWindow) -- ^ parent_in_begin_stack
    -> IO ()

-- C: void ImGui::DebugRenderKeyboardPreview(ImDrawList* draw_list)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugRenderKeyboardPreview"
  debugRenderKeyboardPreview
    :: (Ptr ImDrawList) -- ^ draw_list
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_DebugRenderViewportThumbnail_wrap"
  c_debugRenderViewportThumbnail
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImGuiViewportP) -- ^ viewport
    -> (Ptr ImRect) -- ^ bb
    -> IO ()

debugRenderViewportThumbnail
  :: (Ptr ImDrawList) -- ^ draw_list
  -> (Ptr ImGuiViewportP) -- ^ viewport
  -> ImRect -- ^ bb
  -> IO ()
debugRenderViewportThumbnail draw_list viewport bb =
  with bb $ \bbPtr -> c_debugRenderViewportThumbnail draw_list viewport bbPtr

-- C: void ImGui::DebugTextUnformattedWithLocateItem(const char* line_begin, const char* line_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugTextUnformattedWithLocateItem"
  debugTextUnformattedWithLocateItem
    :: CString -- ^ line_begin
    -> CString -- ^ line_end
    -> IO ()

-- C: ImU64 ImGui::DebugTextureIDToU64(ImTextureID tex_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DebugTextureIDToU64"
  debugTextureIDToU64
    :: ImTextureID -- ^ tex_id
    -> IO ImU64

-- C: void ImGui::DemoMarker(const char* file, int line, const char* section)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DemoMarker"
  demoMarker
    :: CString -- ^ file
    -> CInt -- ^ line
    -> CString -- ^ section
    -> IO ()

-- C: void ImGui::DestroyPlatformWindow(ImGuiViewportP* viewport)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DestroyPlatformWindow"
  destroyPlatformWindow
    :: (Ptr ImGuiViewportP) -- ^ viewport
    -> IO ()

-- C: ImGuiID ImGui::DockBuilderAddNode(ImGuiID node_id, ImGuiDockNodeFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderAddNode"
  dockBuilderAddNode
    :: ImGuiID -- ^ node_id
    -> ImGuiDockNodeFlags -- ^ flags
    -> IO ImGuiID

-- C: void ImGui::DockBuilderCopyDockSpace(ImGuiID src_dockspace_id, ImGuiID dst_dockspace_id, ImVector_const_charPtr* in_window_remap_pairs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderCopyDockSpace"
  dockBuilderCopyDockSpace
    :: ImGuiID -- ^ src_dockspace_id
    -> ImGuiID -- ^ dst_dockspace_id
    -> (Ptr (ImVector (Ptr CChar))) -- ^ in_window_remap_pairs
    -> IO ()

-- C: void ImGui::DockBuilderCopyNode(ImGuiID src_node_id, ImGuiID dst_node_id, ImVector_ImGuiID* out_node_remap_pairs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderCopyNode"
  dockBuilderCopyNode
    :: ImGuiID -- ^ src_node_id
    -> ImGuiID -- ^ dst_node_id
    -> (Ptr (ImVector ImGuiID)) -- ^ out_node_remap_pairs
    -> IO ()

-- C: void ImGui::DockBuilderCopyWindowSettings(const char* src_name, const char* dst_name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderCopyWindowSettings"
  dockBuilderCopyWindowSettings
    :: CString -- ^ src_name
    -> CString -- ^ dst_name
    -> IO ()

-- C: void ImGui::DockBuilderDockWindow(const char* window_name, ImGuiID node_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderDockWindow"
  dockBuilderDockWindow
    :: CString -- ^ window_name
    -> ImGuiID -- ^ node_id
    -> IO ()

-- C: void ImGui::DockBuilderFinish(ImGuiID node_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderFinish"
  dockBuilderFinish
    :: ImGuiID -- ^ node_id
    -> IO ()

-- C: ImGuiDockNode* ImGui::DockBuilderGetCentralNode(ImGuiID node_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderGetCentralNode"
  dockBuilderGetCentralNode
    :: ImGuiID -- ^ node_id
    -> IO (Ptr ImGuiDockNode)

-- C: ImGuiDockNode* ImGui::DockBuilderGetNode(ImGuiID node_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderGetNode"
  dockBuilderGetNode
    :: ImGuiID -- ^ node_id
    -> IO (Ptr ImGuiDockNode)

-- C: void ImGui::DockBuilderRemoveNode(ImGuiID node_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderRemoveNode"
  dockBuilderRemoveNode
    :: ImGuiID -- ^ node_id
    -> IO ()

-- C: void ImGui::DockBuilderRemoveNodeChildNodes(ImGuiID node_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderRemoveNodeChildNodes"
  dockBuilderRemoveNodeChildNodes
    :: ImGuiID -- ^ node_id
    -> IO ()

-- C: void ImGui::DockBuilderRemoveNodeDockedWindows(ImGuiID node_id, bool clear_settings_refs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderRemoveNodeDockedWindows"
  dockBuilderRemoveNodeDockedWindows
    :: ImGuiID -- ^ node_id
    -> CBool -- ^ clear_settings_refs
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_DockBuilderSetNodePos_wrap"
  c_dockBuilderSetNodePos
    :: ImGuiID -- ^ node_id
    -> (Ptr ImVec2) -- ^ pos
    -> IO ()

dockBuilderSetNodePos
  :: ImGuiID -- ^ node_id
  -> ImVec2 -- ^ pos
  -> IO ()
dockBuilderSetNodePos node_id pos =
  with pos $ \posPtr -> c_dockBuilderSetNodePos node_id posPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_DockBuilderSetNodeSize_wrap"
  c_dockBuilderSetNodeSize
    :: ImGuiID -- ^ node_id
    -> (Ptr ImVec2) -- ^ size
    -> IO ()

dockBuilderSetNodeSize
  :: ImGuiID -- ^ node_id
  -> ImVec2 -- ^ size
  -> IO ()
dockBuilderSetNodeSize node_id size =
  with size $ \sizePtr -> c_dockBuilderSetNodeSize node_id sizePtr

-- C: ImGuiID ImGui::DockBuilderSplitNode(ImGuiID node_id, ImGuiDir split_dir, float size_ratio_for_node_at_dir, ImGuiID* out_id_at_dir, ImGuiID* out_id_at_opposite_dir)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockBuilderSplitNode"
  dockBuilderSplitNode
    :: ImGuiID -- ^ node_id
    -> ImGuiDir -- ^ split_dir
    -> Float -- ^ size_ratio_for_node_at_dir
    -> (Ptr ImGuiID) -- ^ out_id_at_dir
    -> (Ptr ImGuiID) -- ^ out_id_at_opposite_dir
    -> IO ImGuiID

-- C: bool ImGui::DockContextCalcDropPosForDocking(ImGuiWindow* target, ImGuiDockNode* target_node, ImGuiWindow* payload_window, ImGuiDockNode* payload_node, ImGuiDir split_dir, bool split_outer, ImVec2* out_pos)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextCalcDropPosForDocking"
  dockContextCalcDropPosForDocking
    :: (Ptr ImGuiWindow) -- ^ target
    -> (Ptr ImGuiDockNode) -- ^ target_node
    -> (Ptr ImGuiWindow) -- ^ payload_window
    -> (Ptr ImGuiDockNode) -- ^ payload_node
    -> ImGuiDir -- ^ split_dir
    -> CBool -- ^ split_outer
    -> (Ptr ImVec2) -- ^ out_pos
    -> IO CBool

-- C: void ImGui::DockContextClearNodes(ImGuiContext* ctx, ImGuiID root_id, bool clear_settings_refs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextClearNodes"
  dockContextClearNodes
    :: (Ptr ImGuiContext) -- ^ ctx
    -> ImGuiID -- ^ root_id
    -> CBool -- ^ clear_settings_refs
    -> IO ()

-- C: void ImGui::DockContextEndFrame(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextEndFrame"
  dockContextEndFrame
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ()

-- C: ImGuiDockNode* ImGui::DockContextFindNodeByID(ImGuiContext* ctx, ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextFindNodeByID"
  dockContextFindNodeByID
    :: (Ptr ImGuiContext) -- ^ ctx
    -> ImGuiID -- ^ id
    -> IO (Ptr ImGuiDockNode)

-- C: ImGuiID ImGui::DockContextGenNodeID(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextGenNodeID"
  dockContextGenNodeID
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ImGuiID

-- C: void ImGui::DockContextInitialize(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextInitialize"
  dockContextInitialize
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ()

-- C: void ImGui::DockContextNewFrameUpdateDocking(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextNewFrameUpdateDocking"
  dockContextNewFrameUpdateDocking
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ()

-- C: void ImGui::DockContextNewFrameUpdateUndocking(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextNewFrameUpdateUndocking"
  dockContextNewFrameUpdateUndocking
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ()

-- C: void ImGui::DockContextProcessUndockNode(ImGuiContext* ctx, ImGuiDockNode* node)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextProcessUndockNode"
  dockContextProcessUndockNode
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiDockNode) -- ^ node
    -> IO ()

-- C: void ImGui::DockContextProcessUndockWindow(ImGuiContext* ctx, ImGuiWindow* window, bool clear_persistent_docking_ref)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextProcessUndockWindow"
  dockContextProcessUndockWindow
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiWindow) -- ^ window
    -> CBool -- ^ clear_persistent_docking_ref
    -> IO ()

-- C: void ImGui::DockContextQueueDock(ImGuiContext* ctx, ImGuiWindow* target, ImGuiDockNode* target_node, ImGuiWindow* payload, ImGuiDir split_dir, float split_ratio, bool split_outer)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextQueueDock"
  dockContextQueueDock
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiWindow) -- ^ target
    -> (Ptr ImGuiDockNode) -- ^ target_node
    -> (Ptr ImGuiWindow) -- ^ payload
    -> ImGuiDir -- ^ split_dir
    -> Float -- ^ split_ratio
    -> CBool -- ^ split_outer
    -> IO ()

-- C: void ImGui::DockContextQueueUndockNode(ImGuiContext* ctx, ImGuiDockNode* node)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextQueueUndockNode"
  dockContextQueueUndockNode
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiDockNode) -- ^ node
    -> IO ()

-- C: void ImGui::DockContextQueueUndockWindow(ImGuiContext* ctx, ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextQueueUndockWindow"
  dockContextQueueUndockWindow
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::DockContextRebuildNodes(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextRebuildNodes"
  dockContextRebuildNodes
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ()

-- C: void ImGui::DockContextShutdown(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockContextShutdown"
  dockContextShutdown
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO ()

-- C: bool ImGui::DockNodeBeginAmendTabBar(ImGuiDockNode* node)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeBeginAmendTabBar"
  dockNodeBeginAmendTabBar
    :: (Ptr ImGuiDockNode) -- ^ node
    -> IO CBool

-- C: void ImGui::DockNodeEndAmendTabBar()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeEndAmendTabBar"
  dockNodeEndAmendTabBar :: IO ()

-- C: int ImGui::DockNodeGetDepth(const ImGuiDockNode* node)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeGetDepth"
  dockNodeGetDepth
    :: (Ptr ImGuiDockNode) -- ^ node
    -> IO CInt

-- C: ImGuiDockNode* ImGui::DockNodeGetRootNode(ImGuiDockNode* node)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeGetRootNode"
  dockNodeGetRootNode
    :: (Ptr ImGuiDockNode) -- ^ node
    -> IO (Ptr ImGuiDockNode)

-- C: ImGuiID ImGui::DockNodeGetWindowMenuButtonId(const ImGuiDockNode* node)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeGetWindowMenuButtonId"
  dockNodeGetWindowMenuButtonId
    :: (Ptr ImGuiDockNode) -- ^ node
    -> IO ImGuiID

-- C: bool ImGui::DockNodeIsInHierarchyOf(ImGuiDockNode* node, ImGuiDockNode* parent)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeIsInHierarchyOf"
  dockNodeIsInHierarchyOf
    :: (Ptr ImGuiDockNode) -- ^ node
    -> (Ptr ImGuiDockNode) -- ^ parent
    -> IO CBool

-- C: void ImGui::DockNodeWindowMenuHandler_Default(ImGuiContext* ctx, ImGuiDockNode* node, ImGuiTabBar* tab_bar)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DockNodeWindowMenuHandler_Default"
  dockNodeWindowMenuHandler_Default
    :: (Ptr ImGuiContext) -- ^ ctx
    -> (Ptr ImGuiDockNode) -- ^ node
    -> (Ptr ImGuiTabBar) -- ^ tab_bar
    -> IO ()

-- C: bool ImGui::DragBehavior(ImGuiID id, ImGuiDataType data_type, void* p_v, float v_speed, const void* p_min, const void* p_max, const char* format, ImGuiSliderFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_DragBehavior"
  dragBehavior
    :: ImGuiID -- ^ id
    -> ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_v
    -> Float -- ^ v_speed
    -> (Ptr ()) -- ^ p_min
    -> (Ptr ()) -- ^ p_max
    -> CString -- ^ format
    -> ImGuiSliderFlags -- ^ flags
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_EndBoxSelect_wrap"
  c_endBoxSelect
    :: (Ptr ImRect) -- ^ scope_rect
    -> ImGuiMultiSelectFlags -- ^ ms_flags
    -> IO ()

endBoxSelect
  :: ImRect -- ^ scope_rect
  -> ImGuiMultiSelectFlags -- ^ ms_flags
  -> IO ()
endBoxSelect scope_rect ms_flags =
  with scope_rect $ \scope_rectPtr -> c_endBoxSelect scope_rectPtr ms_flags

-- C: void ImGui::EndColumns()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_EndColumns"
  endColumns :: IO ()

-- C: void ImGui::EndComboPreview()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_EndComboPreview"
  endComboPreview :: IO ()

-- C: void ImGui::EndDisabledOverrideReenable()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_EndDisabledOverrideReenable"
  endDisabledOverrideReenable :: IO ()

-- C: void ImGui::EndErrorTooltip()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_EndErrorTooltip"
  endErrorTooltip :: IO ()

-- C: void ImGui::ErrorCheckEndFrameFinalizeErrorTooltip()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ErrorCheckEndFrameFinalizeErrorTooltip"
  errorCheckEndFrameFinalizeErrorTooltip :: IO ()

-- C: void ImGui::ErrorCheckUsingSetCursorPosToExtendParentBoundaries()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ErrorCheckUsingSetCursorPosToExtendParentBoundaries"
  errorCheckUsingSetCursorPosToExtendParentBoundaries :: IO ()

-- C: bool ImGui::ErrorLog(const char* msg)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ErrorLog"
  errorLog
    :: CString -- ^ msg
    -> IO CBool

-- C: void ImGui::ErrorRecoveryStoreState(ImGuiErrorRecoveryState* state_out)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ErrorRecoveryStoreState"
  errorRecoveryStoreState
    :: (Ptr ImGuiErrorRecoveryState) -- ^ state_out
    -> IO ()

-- C: void ImGui::ErrorRecoveryTryToRecoverState(const ImGuiErrorRecoveryState* state_in)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ErrorRecoveryTryToRecoverState"
  errorRecoveryTryToRecoverState
    :: (Ptr ImGuiErrorRecoveryState) -- ^ state_in
    -> IO ()

-- C: void ImGui::ErrorRecoveryTryToRecoverWindowState(const ImGuiErrorRecoveryState* state_in)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ErrorRecoveryTryToRecoverWindowState"
  errorRecoveryTryToRecoverWindowState
    :: (Ptr ImGuiErrorRecoveryState) -- ^ state_in
    -> IO ()

-- C: void ImGui::ExtendHitBoxWhenNearViewportEdge(ImGuiWindow* window, ImRect* bb, float threshold, ImGuiAxis axis)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ExtendHitBoxWhenNearViewportEdge"
  extendHitBoxWhenNearViewportEdge
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ bb
    -> Float -- ^ threshold
    -> ImGuiAxis -- ^ axis
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_FindBestWindowPosForPopup_wrap"
  c_findBestWindowPosForPopup
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

findBestWindowPosForPopup
  :: (Ptr ImGuiWindow) -- ^ window
  -> IO ImVec2
findBestWindowPosForPopup window =
  alloca $ \outPtr -> c_findBestWindowPosForPopup window outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_FindBestWindowPosForPopupEx_wrap"
  c_findBestWindowPosForPopupEx
    :: (Ptr ImVec2) -- ^ ref_pos
    -> (Ptr ImVec2) -- ^ size
    -> (Ptr ImGuiDir) -- ^ last_dir
    -> (Ptr ImRect) -- ^ r_outer
    -> (Ptr ImRect) -- ^ r_avoid
    -> ImGuiPopupPositionPolicy -- ^ policy
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

findBestWindowPosForPopupEx
  :: ImVec2 -- ^ ref_pos
  -> ImVec2 -- ^ size
  -> (Ptr ImGuiDir) -- ^ last_dir
  -> ImRect -- ^ r_outer
  -> ImRect -- ^ r_avoid
  -> ImGuiPopupPositionPolicy -- ^ policy
  -> IO ImVec2
findBestWindowPosForPopupEx ref_pos size last_dir r_outer r_avoid policy =
  with ref_pos $ \ref_posPtr -> with size $ \sizePtr -> with r_outer $ \r_outerPtr -> with r_avoid $ \r_avoidPtr -> alloca $ \outPtr -> c_findBestWindowPosForPopupEx ref_posPtr sizePtr last_dir r_outerPtr r_avoidPtr policy outPtr >> peek outPtr

-- C: ImGuiWindow* ImGui::FindBlockingModal(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindBlockingModal"
  findBlockingModal
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO (Ptr ImGuiWindow)

-- C: ImGuiWindow* ImGui::FindBottomMostVisibleWindowWithinBeginStack(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindBottomMostVisibleWindowWithinBeginStack"
  findBottomMostVisibleWindowWithinBeginStack
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO (Ptr ImGuiWindow)

-- C: ImGuiWindow* ImGui::FindFrontMostVisibleChildWindow(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindFrontMostVisibleChildWindow"
  findFrontMostVisibleChildWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO (Ptr ImGuiWindow)

foreign import capi unsafe "DearImGuiWrappers.h ImGui_FindHoveredViewportFromPlatformWindowStack_wrap"
  c_findHoveredViewportFromPlatformWindowStack
    :: (Ptr ImVec2) -- ^ mouse_platform_pos
    -> IO (Ptr ImGuiViewportP)

findHoveredViewportFromPlatformWindowStack
  :: ImVec2 -- ^ mouse_platform_pos
  -> IO (Ptr ImGuiViewportP)
findHoveredViewportFromPlatformWindowStack mouse_platform_pos =
  with mouse_platform_pos $ \mouse_platform_posPtr -> c_findHoveredViewportFromPlatformWindowStack mouse_platform_posPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_FindHoveredWindowEx_wrap"
  c_findHoveredWindowEx
    :: (Ptr ImVec2) -- ^ pos
    -> CBool -- ^ find_first_and_in_any_viewport
    -> (Ptr (Ptr ImGuiWindow)) -- ^ out_hovered_window
    -> (Ptr (Ptr ImGuiWindow)) -- ^ out_hovered_window_under_moving_window
    -> IO ()

findHoveredWindowEx
  :: ImVec2 -- ^ pos
  -> CBool -- ^ find_first_and_in_any_viewport
  -> (Ptr (Ptr ImGuiWindow)) -- ^ out_hovered_window
  -> (Ptr (Ptr ImGuiWindow)) -- ^ out_hovered_window_under_moving_window
  -> IO ()
findHoveredWindowEx pos find_first_and_in_any_viewport out_hovered_window out_hovered_window_under_moving_window =
  with pos $ \posPtr -> c_findHoveredWindowEx posPtr find_first_and_in_any_viewport out_hovered_window out_hovered_window_under_moving_window

-- C: ImGuiOldColumns* ImGui::FindOrCreateColumns(ImGuiWindow* window, ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindOrCreateColumns"
  findOrCreateColumns
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiID -- ^ id
    -> IO (Ptr ImGuiOldColumns)

-- C: const char* ImGui::FindRenderedTextEnd(const char* text, const char* text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindRenderedTextEnd"
  findRenderedTextEnd
    :: CString -- ^ text
    -> CString -- ^ text_end
    -> IO CString

-- C: ImGuiSettingsHandler* ImGui::FindSettingsHandler(const char* type_name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindSettingsHandler"
  findSettingsHandler
    :: CString -- ^ type_name
    -> IO (Ptr ImGuiSettingsHandler)

-- C: ImGuiWindow* ImGui::FindWindowByID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindWindowByID"
  findWindowByID
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiWindow)

-- C: ImGuiWindow* ImGui::FindWindowByName(const char* name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindWindowByName"
  findWindowByName
    :: CString -- ^ name
    -> IO (Ptr ImGuiWindow)

-- C: int ImGui::FindWindowDisplayIndex(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindWindowDisplayIndex"
  findWindowDisplayIndex
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO CInt

-- C: ImGuiWindowSettings* ImGui::FindWindowSettingsByID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindWindowSettingsByID"
  findWindowSettingsByID
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiWindowSettings)

-- C: ImGuiWindowSettings* ImGui::FindWindowSettingsByWindow(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FindWindowSettingsByWindow"
  findWindowSettingsByWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO (Ptr ImGuiWindowSettings)

-- C: ImGuiKeyChord ImGui::FixupKeyChord(ImGuiKeyChord key_chord)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FixupKeyChord"
  fixupKeyChord
    :: ImGuiKeyChord -- ^ key_chord
    -> IO ImGuiKeyChord

-- C: void ImGui::FocusItem()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FocusItem"
  focusItem :: IO ()

-- C: void ImGui::FocusTopMostWindowUnderOne(ImGuiWindow* under_this_window, ImGuiWindow* ignore_window, ImGuiViewport* filter_viewport, ImGuiFocusRequestFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FocusTopMostWindowUnderOne"
  focusTopMostWindowUnderOne
    :: (Ptr ImGuiWindow) -- ^ under_this_window
    -> (Ptr ImGuiWindow) -- ^ ignore_window
    -> (Ptr ImGuiViewport) -- ^ filter_viewport
    -> ImGuiFocusRequestFlags -- ^ flags
    -> IO ()

-- C: void ImGui::FocusWindow(ImGuiWindow* window, ImGuiFocusRequestFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_FocusWindow"
  focusWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiFocusRequestFlags -- ^ flags
    -> IO ()

-- C: void ImGui::GcAwakeTransientWindowBuffers(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GcAwakeTransientWindowBuffers"
  gcAwakeTransientWindowBuffers
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::GcCompactTransientMiscBuffers()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GcCompactTransientMiscBuffers"
  gcCompactTransientMiscBuffers :: IO ()

-- C: void ImGui::GcCompactTransientWindowBuffers(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GcCompactTransientWindowBuffers"
  gcCompactTransientWindowBuffers
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: ImGuiID ImGui::GetActiveID()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetActiveID"
  getActiveID :: IO ImGuiID

-- C: ImGuiBoxSelectState* ImGui::GetBoxSelectState(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetBoxSelectState"
  getBoxSelectState
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiBoxSelectState)

-- C: float ImGui::GetColumnNormFromOffset(const ImGuiOldColumns* columns, float offset)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetColumnNormFromOffset"
  getColumnNormFromOffset
    :: (Ptr ImGuiOldColumns) -- ^ columns
    -> Float -- ^ offset
    -> IO Float

-- C: float ImGui::GetColumnOffsetFromNorm(const ImGuiOldColumns* columns, float offset_norm)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetColumnOffsetFromNorm"
  getColumnOffsetFromNorm
    :: (Ptr ImGuiOldColumns) -- ^ columns
    -> Float -- ^ offset_norm
    -> IO Float

-- C: ImGuiID ImGui::GetColumnsID(const char* str_id, int count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetColumnsID"
  getColumnsID
    :: CString -- ^ str_id
    -> CInt -- ^ count
    -> IO ImGuiID

-- C: ImGuiID ImGui::GetCurrentFocusScope()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetCurrentFocusScope"
  getCurrentFocusScope :: IO ImGuiID

-- C: ImGuiTabBar* ImGui::GetCurrentTabBar()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetCurrentTabBar"
  getCurrentTabBar :: IO (Ptr ImGuiTabBar)

-- C: ImGuiTable* ImGui::GetCurrentTable()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetCurrentTable"
  getCurrentTable :: IO (Ptr ImGuiTable)

-- C: ImGuiWindow* ImGui::GetCurrentWindow()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetCurrentWindow"
  getCurrentWindow :: IO (Ptr ImGuiWindow)

-- C: ImGuiWindow* ImGui::GetCurrentWindowRead()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetCurrentWindowRead"
  getCurrentWindowRead :: IO (Ptr ImGuiWindow)

-- C: ImFont* ImGui::GetDefaultFont()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetDefaultFont"
  getDefaultFont :: IO (Ptr ImFont)

-- C: ImGuiID ImGui::GetFocusID()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetFocusID"
  getFocusID :: IO ImGuiID

-- C: ImDrawList* ImGui::GetForegroundDrawList(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetForegroundDrawListImGuiWindowPtr"
  getForegroundDrawListImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO (Ptr ImDrawList)

-- C: ImGuiID ImGui::GetHoveredID()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetHoveredID"
  getHoveredID :: IO ImGuiID

-- C: ImGuiID ImGui::GetIDWithSeed(int n, ImGuiID seed)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetIDWithSeed"
  getIDWithSeed
    :: CInt -- ^ n
    -> ImGuiID -- ^ seed
    -> IO ImGuiID

-- C: ImGuiID ImGui::GetIDWithSeed(const char* str_id_begin, const char* str_id_end, ImGuiID seed)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetIDWithSeedStr"
  getIDWithSeedStr
    :: CString -- ^ str_id_begin
    -> CString -- ^ str_id_end
    -> ImGuiID -- ^ seed
    -> IO ImGuiID

-- C: ImGuiIO* ImGui::GetIO(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetIOImGuiContextPtr"
  getIOImGuiContextPtr
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO (Ptr ImGuiIO)

-- C: ImGuiInputTextState* ImGui::GetInputTextState(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetInputTextState"
  getInputTextState
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiInputTextState)

-- C: ImGuiItemStatusFlags ImGui::GetItemStatusFlags()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetItemStatusFlags"
  getItemStatusFlags :: IO ImGuiItemStatusFlags

-- C: const char* ImGui::GetKeyChordName(ImGuiKeyChord key_chord)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetKeyChordName"
  getKeyChordName
    :: ImGuiKeyChord -- ^ key_chord
    -> IO CString

-- C: ImGuiKeyData* ImGui::GetKeyData(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetKeyData"
  getKeyData
    :: ImGuiKey -- ^ key
    -> IO (Ptr ImGuiKeyData)

-- C: ImGuiKeyData* ImGui::GetKeyData(ImGuiContext* ctx, ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetKeyDataImGuiContextPtr"
  getKeyDataImGuiContextPtr
    :: (Ptr ImGuiContext) -- ^ ctx
    -> ImGuiKey -- ^ key
    -> IO (Ptr ImGuiKeyData)

foreign import capi unsafe "DearImGuiWrappers.h ImGui_GetKeyMagnitude2d_wrap"
  c_getKeyMagnitude2d
    :: ImGuiKey -- ^ key_left
    -> ImGuiKey -- ^ key_right
    -> ImGuiKey -- ^ key_up
    -> ImGuiKey -- ^ key_down
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

getKeyMagnitude2d
  :: ImGuiKey -- ^ key_left
  -> ImGuiKey -- ^ key_right
  -> ImGuiKey -- ^ key_up
  -> ImGuiKey -- ^ key_down
  -> IO ImVec2
getKeyMagnitude2d key_left key_right key_up key_down =
  alloca $ \outPtr -> c_getKeyMagnitude2d key_left key_right key_up key_down outPtr >> peek outPtr

-- C: ImGuiID ImGui::GetKeyOwner(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetKeyOwner"
  getKeyOwner
    :: ImGuiKey -- ^ key
    -> IO ImGuiID

-- C: ImGuiKeyOwnerData* ImGui::GetKeyOwnerData(ImGuiContext* ctx, ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetKeyOwnerData"
  getKeyOwnerData
    :: (Ptr ImGuiContext) -- ^ ctx
    -> ImGuiKey -- ^ key
    -> IO (Ptr ImGuiKeyOwnerData)

-- C: ImGuiMouseButton ImGui::GetMouseButtonFromPopupFlags(ImGuiPopupFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetMouseButtonFromPopupFlags"
  getMouseButtonFromPopupFlags
    :: ImGuiPopupFlags -- ^ flags
    -> IO ImGuiMouseButton

-- C: ImGuiMultiSelectState* ImGui::GetMultiSelectState(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetMultiSelectState"
  getMultiSelectState
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiMultiSelectState)

-- C: float ImGui::GetNavTweakPressedAmount(ImGuiAxis axis)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetNavTweakPressedAmount"
  getNavTweakPressedAmount
    :: ImGuiAxis -- ^ axis
    -> IO Float

-- C: float ImGui::GetPixelDensity()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetPixelDensity"
  getPixelDensity :: IO Float

-- C: ImGuiPlatformIO* ImGui::GetPlatformIO(ImGuiContext* ctx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetPlatformIOImGuiContextPtr"
  getPlatformIOImGuiContextPtr
    :: (Ptr ImGuiContext) -- ^ ctx
    -> IO (Ptr ImGuiPlatformIO)

foreign import capi unsafe "DearImGuiWrappers.h ImGui_GetPopupAllowedExtentRect_wrap"
  c_getPopupAllowedExtentRect
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ out
    -> IO ()

getPopupAllowedExtentRect
  :: (Ptr ImGuiWindow) -- ^ window
  -> IO ImRect
getPopupAllowedExtentRect window =
  alloca $ \outPtr -> c_getPopupAllowedExtentRect window outPtr >> peek outPtr

-- C: float ImGui::GetRoundedFontSize(float size)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetRoundedFontSize"
  getRoundedFontSize
    :: Float -- ^ size
    -> IO Float

-- C: float ImGui::GetScale()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetScale"
  getScale :: IO Float

-- C: ImGuiKeyRoutingData* ImGui::GetShortcutRoutingData(ImGuiKeyChord key_chord)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetShortcutRoutingData"
  getShortcutRoutingData
    :: ImGuiKeyChord -- ^ key_chord
    -> IO (Ptr ImGuiKeyRoutingData)

-- C: const ImGuiStyleVarInfo* ImGui::GetStyleVarInfo(ImGuiStyleVar idx)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetStyleVarInfo"
  getStyleVarInfo
    :: ImGuiStyleVar -- ^ idx
    -> IO (Ptr ImGuiStyleVarInfo)

-- C: ImGuiWindow* ImGui::GetTopMostAndVisiblePopupModal()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetTopMostAndVisiblePopupModal"
  getTopMostAndVisiblePopupModal :: IO (Ptr ImGuiWindow)

-- C: ImGuiWindow* ImGui::GetTopMostPopupModal()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetTopMostPopupModal"
  getTopMostPopupModal :: IO (Ptr ImGuiWindow)

-- C: void ImGui::GetTypematicRepeatRate(ImGuiInputFlags flags, float* repeat_delay, float* repeat_rate)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetTypematicRepeatRate"
  getTypematicRepeatRate
    :: ImGuiInputFlags -- ^ flags
    -> (Ptr Float) -- ^ repeat_delay
    -> (Ptr Float) -- ^ repeat_rate
    -> IO ()

-- C: ImGuiTypingSelectRequest* ImGui::GetTypingSelectRequest(ImGuiTypingSelectFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetTypingSelectRequest"
  getTypingSelectRequest
    :: ImGuiTypingSelectFlags -- ^ flags
    -> IO (Ptr ImGuiTypingSelectRequest)

-- C: const ImGuiPlatformMonitor* ImGui::GetViewportPlatformMonitor(ImGuiViewport* viewport)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetViewportPlatformMonitor"
  getViewportPlatformMonitor
    :: (Ptr ImGuiViewport) -- ^ viewport
    -> IO (Ptr ImGuiPlatformMonitor)

-- C: bool ImGui::GetWindowAlwaysWantOwnTabBar(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetWindowAlwaysWantOwnTabBar"
  getWindowAlwaysWantOwnTabBar
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO CBool

-- C: ImGuiDockNode* ImGui::GetWindowDockNode()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetWindowDockNode"
  getWindowDockNode :: IO (Ptr ImGuiDockNode)

-- C: ImGuiID ImGui::GetWindowResizeBorderID(ImGuiWindow* window, ImGuiDir dir)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetWindowResizeBorderID"
  getWindowResizeBorderID
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiDir -- ^ dir
    -> IO ImGuiID

-- C: ImGuiID ImGui::GetWindowResizeCornerID(ImGuiWindow* window, int n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetWindowResizeCornerID"
  getWindowResizeCornerID
    :: (Ptr ImGuiWindow) -- ^ window
    -> CInt -- ^ n
    -> IO ImGuiID

-- C: ImGuiID ImGui::GetWindowScrollbarID(ImGuiWindow* window, ImGuiAxis axis)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_GetWindowScrollbarID"
  getWindowScrollbarID
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiAxis -- ^ axis
    -> IO ImGuiID

foreign import capi unsafe "DearImGuiWrappers.h ImGui_GetWindowScrollbarRect_wrap"
  c_getWindowScrollbarRect
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiAxis -- ^ axis
    -> (Ptr ImRect) -- ^ out
    -> IO ()

getWindowScrollbarRect
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImGuiAxis -- ^ axis
  -> IO ImRect
getWindowScrollbarRect window axis =
  alloca $ \outPtr -> c_getWindowScrollbarRect window axis outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ImageButtonWithFlags_wrap"
  c_imageButtonWithFlags
    :: ImGuiID -- ^ id
    -> (Ptr ImTextureRef) -- ^ tex_ref
    -> (Ptr ImVec2) -- ^ image_size
    -> (Ptr ImVec2) -- ^ uv0
    -> (Ptr ImVec2) -- ^ uv1
    -> (Ptr ImVec4) -- ^ bg_col
    -> (Ptr ImVec4) -- ^ tint_col
    -> ImGuiButtonFlags -- ^ flags
    -> IO CBool

imageButtonWithFlags
  :: ImGuiID -- ^ id
  -> ImTextureRef -- ^ tex_ref
  -> ImVec2 -- ^ image_size
  -> ImVec2 -- ^ uv0
  -> ImVec2 -- ^ uv1
  -> ImVec4 -- ^ bg_col
  -> ImVec4 -- ^ tint_col
  -> ImGuiButtonFlags -- ^ flags
  -> IO CBool
imageButtonWithFlags id_ tex_ref image_size uv0 uv1 bg_col tint_col flags =
  with tex_ref $ \tex_refPtr -> with image_size $ \image_sizePtr -> with uv0 $ \uv0Ptr -> with uv1 $ \uv1Ptr -> with bg_col $ \bg_colPtr -> with tint_col $ \tint_colPtr -> c_imageButtonWithFlags id_ tex_refPtr image_sizePtr uv0Ptr uv1Ptr bg_colPtr tint_colPtr flags

-- C: void ImGui::Initialize()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_Initialize"
  initialize :: IO ()

-- C: void ImGui::InputTextDeactivateHook(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_InputTextDeactivateHook"
  inputTextDeactivateHook
    :: ImGuiID -- ^ id
    -> IO ()

foreign import capi safe "DearImGuiWrappers.h ImGui_InputTextWithHintAndSize_wrap"
  c_inputTextWithHintAndSize
    :: CString -- ^ label
    -> CString -- ^ hint
    -> (Ptr CChar) -- ^ buf
    -> CInt -- ^ buf_size
    -> (Ptr ImVec2) -- ^ size_arg
    -> ImGuiInputTextFlags -- ^ flags
    -> ImGuiInputTextCallback -- ^ callback
    -> (Ptr ()) -- ^ user_data
    -> IO CBool

inputTextWithHintAndSize
  :: CString -- ^ label
  -> CString -- ^ hint
  -> (Ptr CChar) -- ^ buf
  -> CInt -- ^ buf_size
  -> ImVec2 -- ^ size_arg
  -> ImGuiInputTextFlags -- ^ flags
  -> ImGuiInputTextCallback -- ^ callback
  -> (Ptr ()) -- ^ user_data
  -> IO CBool
inputTextWithHintAndSize label hint buf buf_size size_arg flags callback user_data =
  with size_arg $ \size_argPtr -> c_inputTextWithHintAndSize label hint buf buf_size size_argPtr flags callback user_data

-- C: bool ImGui::IsActiveIdUsingNavDir(ImGuiDir dir)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsActiveIdUsingNavDir"
  isActiveIdUsingNavDir
    :: ImGuiDir -- ^ dir
    -> IO CBool

-- C: bool ImGui::IsAliasKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsAliasKey"
  isAliasKey
    :: ImGuiKey -- ^ key
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_IsClippedEx_wrap"
  c_isClippedEx
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> IO CBool

isClippedEx
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> IO CBool
isClippedEx bb id_ =
  with bb $ \bbPtr -> c_isClippedEx bbPtr id_

-- C: bool ImGui::IsDragDropActive()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsDragDropActive"
  isDragDropActive :: IO CBool

-- C: bool ImGui::IsDragDropPayloadBeingAccepted()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsDragDropPayloadBeingAccepted"
  isDragDropPayloadBeingAccepted :: IO CBool

-- C: bool ImGui::IsGamepadKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsGamepadKey"
  isGamepadKey
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsInNavFocusRoute(ImGuiID focus_scope_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsInNavFocusRoute"
  isInNavFocusRoute
    :: ImGuiID -- ^ focus_scope_id
    -> IO CBool

-- C: bool ImGui::IsItemActiveAsInputText()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsItemActiveAsInputText"
  isItemActiveAsInputText :: IO CBool

-- C: bool ImGui::IsKeyChordPressed(ImGuiKeyChord key_chord, ImGuiInputFlags flags, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsKeyChordPressedImGuiInputFlags"
  isKeyChordPressedImGuiInputFlags
    :: ImGuiKeyChord -- ^ key_chord
    -> ImGuiInputFlags -- ^ flags
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsKeyDown(ImGuiKey key, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsKeyDownID"
  isKeyDownID
    :: ImGuiKey -- ^ key
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsKeyPressed(ImGuiKey key, ImGuiInputFlags flags, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsKeyPressedImGuiInputFlags"
  isKeyPressedImGuiInputFlags
    :: ImGuiKey -- ^ key
    -> ImGuiInputFlags -- ^ flags
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsKeyReleased(ImGuiKey key, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsKeyReleasedID"
  isKeyReleasedID
    :: ImGuiKey -- ^ key
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsKeyboardKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsKeyboardKey"
  isKeyboardKey
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsLRModKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsLRModKey"
  isLRModKey
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsLegacyKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsLegacyKey"
  isLegacyKey
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsMouseClicked(ImGuiMouseButton button, ImGuiInputFlags flags, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsMouseClickedImGuiInputFlags"
  isMouseClickedImGuiInputFlags
    :: ImGuiMouseButton -- ^ button
    -> ImGuiInputFlags -- ^ flags
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsMouseDoubleClicked(ImGuiMouseButton button, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsMouseDoubleClickedID"
  isMouseDoubleClickedID
    :: ImGuiMouseButton -- ^ button
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsMouseDown(ImGuiMouseButton button, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsMouseDownID"
  isMouseDownID
    :: ImGuiMouseButton -- ^ button
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsMouseDragPastThreshold(ImGuiMouseButton button, float lock_threshold)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsMouseDragPastThreshold"
  isMouseDragPastThreshold
    :: ImGuiMouseButton -- ^ button
    -> Float -- ^ lock_threshold
    -> IO CBool

-- C: bool ImGui::IsMouseKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsMouseKey"
  isMouseKey
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsMouseReleased(ImGuiMouseButton button, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsMouseReleasedID"
  isMouseReleasedID
    :: ImGuiMouseButton -- ^ button
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::IsNamedKey(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsNamedKey"
  isNamedKey
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsNamedKeyOrMod(ImGuiKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsNamedKeyOrMod"
  isNamedKeyOrMod
    :: ImGuiKey -- ^ key
    -> IO CBool

-- C: bool ImGui::IsPopupOpen(ImGuiID id, ImGuiPopupFlags popup_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsPopupOpenID"
  isPopupOpenID
    :: ImGuiID -- ^ id
    -> ImGuiPopupFlags -- ^ popup_flags
    -> IO CBool

-- C: bool ImGui::IsPopupOpenRequestForItem(ImGuiPopupFlags flags, ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsPopupOpenRequestForItem"
  isPopupOpenRequestForItem
    :: ImGuiPopupFlags -- ^ flags
    -> ImGuiID -- ^ id
    -> IO CBool

-- C: bool ImGui::IsPopupOpenRequestForWindow(ImGuiPopupFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsPopupOpenRequestForWindow"
  isPopupOpenRequestForWindow
    :: ImGuiPopupFlags -- ^ flags
    -> IO CBool

-- C: bool ImGui::IsWindowAbove(ImGuiWindow* potential_above, ImGuiWindow* potential_below)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsWindowAbove"
  isWindowAbove
    :: (Ptr ImGuiWindow) -- ^ potential_above
    -> (Ptr ImGuiWindow) -- ^ potential_below
    -> IO CBool

-- C: bool ImGui::IsWindowChildOf(ImGuiWindow* window, ImGuiWindow* potential_parent, bool popup_hierarchy, bool dock_hierarchy)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsWindowChildOf"
  isWindowChildOf
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiWindow) -- ^ potential_parent
    -> CBool -- ^ popup_hierarchy
    -> CBool -- ^ dock_hierarchy
    -> IO CBool

-- C: bool ImGui::IsWindowContentHoverable(ImGuiWindow* window, ImGuiHoveredFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsWindowContentHoverable"
  isWindowContentHoverable
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiHoveredFlags -- ^ flags
    -> IO CBool

-- C: bool ImGui::IsWindowInBeginStack(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsWindowInBeginStack"
  isWindowInBeginStack
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO CBool

-- C: bool ImGui::IsWindowNavFocusable(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsWindowNavFocusable"
  isWindowNavFocusable
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO CBool

-- C: bool ImGui::IsWindowWithinBeginStackOf(ImGuiWindow* window, ImGuiWindow* potential_parent)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_IsWindowWithinBeginStackOf"
  isWindowWithinBeginStackOf
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiWindow) -- ^ potential_parent
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ItemAdd_wrap"
  c_itemAdd
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> (Ptr ImRect) -- ^ nav_bb
    -> ImGuiItemFlags -- ^ extra_flags
    -> IO CBool

itemAdd
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> (Ptr ImRect) -- ^ nav_bb
  -> ImGuiItemFlags -- ^ extra_flags
  -> IO CBool
itemAdd bb id_ nav_bb extra_flags =
  with bb $ \bbPtr -> c_itemAdd bbPtr id_ nav_bb extra_flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ItemHoverable_wrap"
  c_itemHoverable
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> ImGuiItemFlags -- ^ item_flags
    -> IO CBool

itemHoverable
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> ImGuiItemFlags -- ^ item_flags
  -> IO CBool
itemHoverable bb id_ item_flags =
  with bb $ \bbPtr -> c_itemHoverable bbPtr id_ item_flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ItemSize_wrap"
  c_itemSize
    :: (Ptr ImVec2) -- ^ size
    -> Float -- ^ text_baseline_y
    -> IO ()

itemSize
  :: ImVec2 -- ^ size
  -> Float -- ^ text_baseline_y
  -> IO ()
itemSize size text_baseline_y =
  with size $ \sizePtr -> c_itemSize sizePtr text_baseline_y

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ItemSizeImRect_wrap"
  c_itemSizeImRect
    :: (Ptr ImRect) -- ^ bb
    -> Float -- ^ text_baseline_y
    -> IO ()

itemSizeImRect
  :: ImRect -- ^ bb
  -> Float -- ^ text_baseline_y
  -> IO ()
itemSizeImRect bb text_baseline_y =
  with bb $ \bbPtr -> c_itemSizeImRect bbPtr text_baseline_y

-- C: void ImGui::KeepAliveID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_KeepAliveID"
  keepAliveID
    :: ImGuiID -- ^ id
    -> IO ()

-- C: const char* ImGui::LocalizeGetMsg(ImGuiLocKey key)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_LocalizeGetMsg"
  localizeGetMsg
    :: ImGuiLocKey -- ^ key
    -> IO CString

-- C: void ImGui::LocalizeRegisterEntries(const ImGuiLocEntry* entries, int count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_LocalizeRegisterEntries"
  localizeRegisterEntries
    :: (Ptr ImGuiLocEntry) -- ^ entries
    -> CInt -- ^ count
    -> IO ()

-- C: void ImGui::LogBegin(ImGuiLogFlags flags, int auto_open_depth)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_LogBegin"
  logBegin
    :: ImGuiLogFlags -- ^ flags
    -> CInt -- ^ auto_open_depth
    -> IO ()

-- C: void ImGui::LogRenderedText(const ImVec2* ref_pos, const char* text, const char* text_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_LogRenderedText"
  logRenderedText
    :: (Ptr ImVec2) -- ^ ref_pos
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> IO ()

-- C: void ImGui::LogSetNextTextDecoration(const char* prefix, const char* suffix)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_LogSetNextTextDecoration"
  logSetNextTextDecoration
    :: CString -- ^ prefix
    -> CString -- ^ suffix
    -> IO ()

-- C: void ImGui::LogToBuffer(int auto_open_depth)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_LogToBuffer"
  logToBuffer
    :: CInt -- ^ auto_open_depth
    -> IO ()

-- C: void ImGui::MarkIniSettingsDirty()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MarkIniSettingsDirty"
  markIniSettingsDirty :: IO ()

-- C: void ImGui::MarkIniSettingsDirty(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MarkIniSettingsDirtyImGuiWindowPtr"
  markIniSettingsDirtyImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::MarkItemEdited(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MarkItemEdited"
  markItemEdited
    :: ImGuiID -- ^ id
    -> IO ()

-- C: bool ImGui::MenuItemEx(const char* label, const char* icon, const char* shortcut, bool selected, bool enabled)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MenuItemWithIcon"
  menuItemWithIcon
    :: CString -- ^ label
    -> CString -- ^ icon
    -> CString -- ^ shortcut
    -> CBool -- ^ selected
    -> CBool -- ^ enabled
    -> IO CBool

-- C: ImGuiKey ImGui::MouseButtonToKey(ImGuiMouseButton button)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MouseButtonToKey"
  mouseButtonToKey
    :: ImGuiMouseButton -- ^ button
    -> IO ImGuiKey

-- C: void ImGui::MultiSelectAddSetAll(ImGuiMultiSelectTempData* ms, bool selected)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MultiSelectAddSetAll"
  multiSelectAddSetAll
    :: (Ptr ImGuiMultiSelectTempData) -- ^ ms
    -> CBool -- ^ selected
    -> IO ()

-- C: void ImGui::MultiSelectAddSetRange(ImGuiMultiSelectTempData* ms, bool selected, int range_dir, ImGuiSelectionUserData first_item, ImGuiSelectionUserData last_item)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MultiSelectAddSetRange"
  multiSelectAddSetRange
    :: (Ptr ImGuiMultiSelectTempData) -- ^ ms
    -> CBool -- ^ selected
    -> CInt -- ^ range_dir
    -> ImGuiSelectionUserData -- ^ first_item
    -> ImGuiSelectionUserData -- ^ last_item
    -> IO ()

-- C: void ImGui::MultiSelectItemFooter(ImGuiID id, bool* p_selected, bool* p_pressed, ImGuiMultiSelectFlags extra_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MultiSelectItemFooter"
  multiSelectItemFooter
    :: ImGuiID -- ^ id
    -> (Ptr CBool) -- ^ p_selected
    -> (Ptr CBool) -- ^ p_pressed
    -> ImGuiMultiSelectFlags -- ^ extra_flags
    -> IO ()

-- C: void ImGui::MultiSelectItemHeader(ImGuiID id, bool* p_selected, ImGuiButtonFlags* p_button_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_MultiSelectItemHeader"
  multiSelectItemHeader
    :: ImGuiID -- ^ id
    -> (Ptr CBool) -- ^ p_selected
    -> (Ptr ImGuiButtonFlags) -- ^ p_button_flags
    -> IO ()

-- C: void ImGui::NavClearPreferredPosForAxis(ImGuiAxis axis)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavClearPreferredPosForAxis"
  navClearPreferredPosForAxis
    :: ImGuiAxis -- ^ axis
    -> IO ()

-- C: void ImGui::NavHighlightActivated(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavHighlightActivated"
  navHighlightActivated
    :: ImGuiID -- ^ id
    -> IO ()

-- C: void ImGui::NavInitRequestApplyResult()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavInitRequestApplyResult"
  navInitRequestApplyResult :: IO ()

-- C: void ImGui::NavInitWindow(ImGuiWindow* window, bool force_reinit)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavInitWindow"
  navInitWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> CBool -- ^ force_reinit
    -> IO ()

-- C: void ImGui::NavMoveRequestApplyResult()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestApplyResult"
  navMoveRequestApplyResult :: IO ()

-- C: bool ImGui::NavMoveRequestButNoResultYet()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestButNoResultYet"
  navMoveRequestButNoResultYet :: IO CBool

-- C: void ImGui::NavMoveRequestCancel()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestCancel"
  navMoveRequestCancel :: IO ()

-- C: void ImGui::NavMoveRequestForward(ImGuiDir move_dir, ImGuiDir clip_dir, ImGuiNavMoveFlags move_flags, ImGuiScrollFlags scroll_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestForward"
  navMoveRequestForward
    :: ImGuiDir -- ^ move_dir
    -> ImGuiDir -- ^ clip_dir
    -> ImGuiNavMoveFlags -- ^ move_flags
    -> ImGuiScrollFlags -- ^ scroll_flags
    -> IO ()

-- C: void ImGui::NavMoveRequestResolveWithLastItem(ImGuiNavItemData* result)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestResolveWithLastItem"
  navMoveRequestResolveWithLastItem
    :: (Ptr ImGuiNavItemData) -- ^ result
    -> IO ()

-- C: void ImGui::NavMoveRequestResolveWithPastTreeNode(ImGuiNavItemData* result, const ImGuiTreeNodeStackData* tree_node_data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestResolveWithPastTreeNode"
  navMoveRequestResolveWithPastTreeNode
    :: (Ptr ImGuiNavItemData) -- ^ result
    -> (Ptr ImGuiTreeNodeStackData) -- ^ tree_node_data
    -> IO ()

-- C: void ImGui::NavMoveRequestSubmit(ImGuiDir move_dir, ImGuiDir clip_dir, ImGuiNavMoveFlags move_flags, ImGuiScrollFlags scroll_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestSubmit"
  navMoveRequestSubmit
    :: ImGuiDir -- ^ move_dir
    -> ImGuiDir -- ^ clip_dir
    -> ImGuiNavMoveFlags -- ^ move_flags
    -> ImGuiScrollFlags -- ^ scroll_flags
    -> IO ()

-- C: void ImGui::NavMoveRequestTryWrapping(ImGuiWindow* window, ImGuiNavMoveFlags move_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavMoveRequestTryWrapping"
  navMoveRequestTryWrapping
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiNavMoveFlags -- ^ move_flags
    -> IO ()

-- C: void ImGui::NavUpdateCurrentWindowIsScrollPushableX()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_NavUpdateCurrentWindowIsScrollPushableX"
  navUpdateCurrentWindowIsScrollPushableX :: IO ()

-- C: bool ImGui::OpenPopupEx(ImGuiID id, ImGuiPopupFlags popup_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_OpenPopupEx"
  openPopupEx
    :: ImGuiID -- ^ id
    -> ImGuiPopupFlags -- ^ popup_flags
    -> IO CBool

foreign import capi safe "DearImGuiWrappers.h ImGui_PlotEx_wrap"
  c_plotEx
    :: ImGuiPlotType -- ^ plot_type
    -> CString -- ^ label
    -> (FunPtr ((Ptr ()) -> CInt -> IO Float)) -- ^ values_getter
    -> (Ptr ()) -- ^ data
    -> CInt -- ^ values_count
    -> CInt -- ^ values_offset
    -> CString -- ^ overlay_text
    -> Float -- ^ scale_min
    -> Float -- ^ scale_max
    -> (Ptr ImVec2) -- ^ size_arg
    -> IO CInt

plotEx
  :: ImGuiPlotType -- ^ plot_type
  -> CString -- ^ label
  -> (FunPtr ((Ptr ()) -> CInt -> IO Float)) -- ^ values_getter
  -> (Ptr ()) -- ^ data
  -> CInt -- ^ values_count
  -> CInt -- ^ values_offset
  -> CString -- ^ overlay_text
  -> Float -- ^ scale_min
  -> Float -- ^ scale_max
  -> ImVec2 -- ^ size_arg
  -> IO CInt
plotEx plot_type label values_getter data_ values_count values_offset overlay_text scale_min scale_max size_arg =
  with size_arg $ \size_argPtr -> c_plotEx plot_type label values_getter data_ values_count values_offset overlay_text scale_min scale_max size_argPtr

-- C: void ImGui::PopColumnsBackground()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PopColumnsBackground"
  popColumnsBackground :: IO ()

-- C: void ImGui::PopFocusScope()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PopFocusScope"
  popFocusScope :: IO ()

-- C: void ImGui::PopPasswordFont()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PopPasswordFont"
  popPasswordFont :: IO ()

-- C: void ImGui::PushColumnClipRect(int column_index)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PushColumnClipRect"
  pushColumnClipRect
    :: CInt -- ^ column_index
    -> IO ()

-- C: void ImGui::PushColumnsBackground()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PushColumnsBackground"
  pushColumnsBackground :: IO ()

-- C: void ImGui::PushFocusScope(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PushFocusScope"
  pushFocusScope
    :: ImGuiID -- ^ id
    -> IO ()

-- C: void ImGui::PushMultiItemsWidths(int components, float width_full)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PushMultiItemsWidths"
  pushMultiItemsWidths
    :: CInt -- ^ components
    -> Float -- ^ width_full
    -> IO ()

-- C: void ImGui::PushOverrideID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PushOverrideID"
  pushOverrideID
    :: ImGuiID -- ^ id
    -> IO ()

-- C: void ImGui::PushPasswordFont()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_PushPasswordFont"
  pushPasswordFont :: IO ()

-- C: void ImGui::RegisterFontAtlas(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_RegisterFontAtlas"
  registerFontAtlas
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImGui::RegisterUserTexture(ImTextureData* tex)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_RegisterUserTexture"
  registerUserTexture
    :: (Ptr ImTextureData) -- ^ tex
    -> IO ()

-- C: void ImGui::RemoveContextHook(ImGuiContext* ctx, ImGuiID hook_to_remove)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_RemoveContextHook"
  removeContextHook
    :: (Ptr ImGuiContext) -- ^ ctx
    -> ImGuiID -- ^ hook_to_remove
    -> IO ()

-- C: void ImGui::RemoveSettingsHandler(const char* type_name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_RemoveSettingsHandler"
  removeSettingsHandler
    :: CString -- ^ type_name
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderArrow_wrap"
  c_renderArrow
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ pos
    -> ImU32 -- ^ col
    -> ImGuiDir -- ^ dir
    -> Float -- ^ scale
    -> IO ()

renderArrow
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ pos
  -> ImU32 -- ^ col
  -> ImGuiDir -- ^ dir
  -> Float -- ^ scale
  -> IO ()
renderArrow draw_list pos col dir scale =
  with pos $ \posPtr -> c_renderArrow draw_list posPtr col dir scale

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderArrowDockMenu_wrap"
  c_renderArrowDockMenu
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ p_min
    -> Float -- ^ sz
    -> ImU32 -- ^ col
    -> IO ()

renderArrowDockMenu
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ p_min
  -> Float -- ^ sz
  -> ImU32 -- ^ col
  -> IO ()
renderArrowDockMenu draw_list p_min sz col =
  with p_min $ \p_minPtr -> c_renderArrowDockMenu draw_list p_minPtr sz col

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderArrowPointingAt_wrap"
  c_renderArrowPointingAt
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ pos
    -> (Ptr ImVec2) -- ^ half_sz
    -> ImGuiDir -- ^ direction
    -> ImU32 -- ^ col
    -> IO ()

renderArrowPointingAt
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ pos
  -> ImVec2 -- ^ half_sz
  -> ImGuiDir -- ^ direction
  -> ImU32 -- ^ col
  -> IO ()
renderArrowPointingAt draw_list pos half_sz direction col =
  with pos $ \posPtr -> with half_sz $ \half_szPtr -> c_renderArrowPointingAt draw_list posPtr half_szPtr direction col

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderBullet_wrap"
  c_renderBullet
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ pos
    -> ImU32 -- ^ col
    -> IO ()

renderBullet
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ pos
  -> ImU32 -- ^ col
  -> IO ()
renderBullet draw_list pos col =
  with pos $ \posPtr -> c_renderBullet draw_list posPtr col

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderCheckMark_wrap"
  c_renderCheckMark
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ pos
    -> ImU32 -- ^ col
    -> Float -- ^ sz
    -> IO ()

renderCheckMark
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ pos
  -> ImU32 -- ^ col
  -> Float -- ^ sz
  -> IO ()
renderCheckMark draw_list pos col sz =
  with pos $ \posPtr -> c_renderCheckMark draw_list posPtr col sz

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderColorComponentMarker_wrap"
  c_renderColorComponentMarker
    :: (Ptr ImRect) -- ^ bb
    -> ImU32 -- ^ col
    -> Float -- ^ rounding
    -> IO ()

renderColorComponentMarker
  :: ImRect -- ^ bb
  -> ImU32 -- ^ col
  -> Float -- ^ rounding
  -> IO ()
renderColorComponentMarker bb col rounding =
  with bb $ \bbPtr -> c_renderColorComponentMarker bbPtr col rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderColorRectWithAlphaCheckerboard_wrap"
  c_renderColorRectWithAlphaCheckerboard
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ col
    -> Float -- ^ alpha
    -> Float -- ^ grid_step
    -> (Ptr ImVec2) -- ^ grid_off
    -> Float -- ^ rounding
    -> ImDrawFlags -- ^ flags
    -> IO ()

renderColorRectWithAlphaCheckerboard
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ col
  -> Float -- ^ alpha
  -> Float -- ^ grid_step
  -> ImVec2 -- ^ grid_off
  -> Float -- ^ rounding
  -> ImDrawFlags -- ^ flags
  -> IO ()
renderColorRectWithAlphaCheckerboard draw_list p_min p_max col alpha grid_step grid_off rounding flags =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> with grid_off $ \grid_offPtr -> c_renderColorRectWithAlphaCheckerboard draw_list p_minPtr p_maxPtr col alpha grid_step grid_offPtr rounding flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderDragDropTargetRectEx_wrap"
  c_renderDragDropTargetRectEx
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImRect) -- ^ bb
    -> Float -- ^ rounding
    -> IO ()

renderDragDropTargetRectEx
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImRect -- ^ bb
  -> Float -- ^ rounding
  -> IO ()
renderDragDropTargetRectEx draw_list bb rounding =
  with bb $ \bbPtr -> c_renderDragDropTargetRectEx draw_list bbPtr rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderDragDropTargetRectForItem_wrap"
  c_renderDragDropTargetRectForItem
    :: (Ptr ImRect) -- ^ bb
    -> IO ()

renderDragDropTargetRectForItem
  :: ImRect -- ^ bb
  -> IO ()
renderDragDropTargetRectForItem bb =
  with bb $ \bbPtr -> c_renderDragDropTargetRectForItem bbPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderDragDropTargetRectForViewport_wrap"
  c_renderDragDropTargetRectForViewport
    :: ImGuiID -- ^ viewport_id
    -> (Ptr ImRect) -- ^ bb
    -> IO ()

renderDragDropTargetRectForViewport
  :: ImGuiID -- ^ viewport_id
  -> ImRect -- ^ bb
  -> IO ()
renderDragDropTargetRectForViewport viewport_id bb =
  with bb $ \bbPtr -> c_renderDragDropTargetRectForViewport viewport_id bbPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderFrame_wrap"
  c_renderFrame
    :: (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> ImU32 -- ^ fill_col
    -> CBool -- ^ borders
    -> Float -- ^ rounding
    -> IO ()

renderFrame
  :: ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> ImU32 -- ^ fill_col
  -> CBool -- ^ borders
  -> Float -- ^ rounding
  -> IO ()
renderFrame p_min p_max fill_col borders rounding =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> c_renderFrame p_minPtr p_maxPtr fill_col borders rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderFrameBorder_wrap"
  c_renderFrameBorder
    :: (Ptr ImVec2) -- ^ p_min
    -> (Ptr ImVec2) -- ^ p_max
    -> Float -- ^ rounding
    -> IO ()

renderFrameBorder
  :: ImVec2 -- ^ p_min
  -> ImVec2 -- ^ p_max
  -> Float -- ^ rounding
  -> IO ()
renderFrameBorder p_min p_max rounding =
  with p_min $ \p_minPtr -> with p_max $ \p_maxPtr -> c_renderFrameBorder p_minPtr p_maxPtr rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderMouseCursor_wrap"
  c_renderMouseCursor
    :: (Ptr ImVec2) -- ^ pos
    -> Float -- ^ scale
    -> ImGuiMouseCursor -- ^ mouse_cursor
    -> ImU32 -- ^ col_fill
    -> ImU32 -- ^ col_border
    -> ImU32 -- ^ col_shadow
    -> IO ()

renderMouseCursor
  :: ImVec2 -- ^ pos
  -> Float -- ^ scale
  -> ImGuiMouseCursor -- ^ mouse_cursor
  -> ImU32 -- ^ col_fill
  -> ImU32 -- ^ col_border
  -> ImU32 -- ^ col_shadow
  -> IO ()
renderMouseCursor pos scale mouse_cursor col_fill col_border col_shadow =
  with pos $ \posPtr -> c_renderMouseCursor posPtr scale mouse_cursor col_fill col_border col_shadow

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderNavCursor_wrap"
  c_renderNavCursor
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> ImGuiNavRenderCursorFlags -- ^ flags
    -> Float -- ^ rounding
    -> IO ()

renderNavCursor
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> ImGuiNavRenderCursorFlags -- ^ flags
  -> Float -- ^ rounding
  -> IO ()
renderNavCursor bb id_ flags rounding =
  with bb $ \bbPtr -> c_renderNavCursor bbPtr id_ flags rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderRectFilledInRangeH_wrap"
  c_renderRectFilledInRangeH
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImRect) -- ^ rect
    -> ImU32 -- ^ col
    -> Float -- ^ fill_x0
    -> Float -- ^ fill_x1
    -> Float -- ^ rounding
    -> IO ()

renderRectFilledInRangeH
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImRect -- ^ rect
  -> ImU32 -- ^ col
  -> Float -- ^ fill_x0
  -> Float -- ^ fill_x1
  -> Float -- ^ rounding
  -> IO ()
renderRectFilledInRangeH draw_list rect col fill_x0 fill_x1 rounding =
  with rect $ \rectPtr -> c_renderRectFilledInRangeH draw_list rectPtr col fill_x0 fill_x1 rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderRectFilledWithHole_wrap"
  c_renderRectFilledWithHole
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImRect) -- ^ outer
    -> (Ptr ImRect) -- ^ inner
    -> ImU32 -- ^ col
    -> Float -- ^ rounding
    -> IO ()

renderRectFilledWithHole
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImRect -- ^ outer
  -> ImRect -- ^ inner
  -> ImU32 -- ^ col
  -> Float -- ^ rounding
  -> IO ()
renderRectFilledWithHole draw_list outer inner col rounding =
  with outer $ \outerPtr -> with inner $ \innerPtr -> c_renderRectFilledWithHole draw_list outerPtr innerPtr col rounding

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderText_wrap"
  c_renderText
    :: (Ptr ImVec2) -- ^ pos
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> CBool -- ^ hide_text_after_hash
    -> IO ()

renderText
  :: ImVec2 -- ^ pos
  -> CString -- ^ text
  -> CString -- ^ text_end
  -> CBool -- ^ hide_text_after_hash
  -> IO ()
renderText pos text text_end hide_text_after_hash =
  with pos $ \posPtr -> c_renderText posPtr text text_end hide_text_after_hash

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderTextClipped_wrap"
  c_renderTextClipped
    :: (Ptr ImVec2) -- ^ pos_min
    -> (Ptr ImVec2) -- ^ pos_max
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> (Ptr ImVec2) -- ^ text_size_if_known
    -> (Ptr ImVec2) -- ^ align
    -> (Ptr ImRect) -- ^ clip_rect
    -> IO ()

renderTextClipped
  :: ImVec2 -- ^ pos_min
  -> ImVec2 -- ^ pos_max
  -> CString -- ^ text
  -> CString -- ^ text_end
  -> (Ptr ImVec2) -- ^ text_size_if_known
  -> ImVec2 -- ^ align
  -> (Ptr ImRect) -- ^ clip_rect
  -> IO ()
renderTextClipped pos_min pos_max text text_end text_size_if_known align clip_rect =
  with pos_min $ \pos_minPtr -> with pos_max $ \pos_maxPtr -> with align $ \alignPtr -> c_renderTextClipped pos_minPtr pos_maxPtr text text_end text_size_if_known alignPtr clip_rect

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderTextClippedWithDrawList_wrap"
  c_renderTextClippedWithDrawList
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ pos_min
    -> (Ptr ImVec2) -- ^ pos_max
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> (Ptr ImVec2) -- ^ text_size_if_known
    -> (Ptr ImVec2) -- ^ align
    -> (Ptr ImRect) -- ^ clip_rect
    -> IO ()

renderTextClippedWithDrawList
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ pos_min
  -> ImVec2 -- ^ pos_max
  -> CString -- ^ text
  -> CString -- ^ text_end
  -> (Ptr ImVec2) -- ^ text_size_if_known
  -> ImVec2 -- ^ align
  -> (Ptr ImRect) -- ^ clip_rect
  -> IO ()
renderTextClippedWithDrawList draw_list pos_min pos_max text text_end text_size_if_known align clip_rect =
  with pos_min $ \pos_minPtr -> with pos_max $ \pos_maxPtr -> with align $ \alignPtr -> c_renderTextClippedWithDrawList draw_list pos_minPtr pos_maxPtr text text_end text_size_if_known alignPtr clip_rect

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderTextEllipsis_wrap"
  c_renderTextEllipsis
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImVec2) -- ^ pos_min
    -> (Ptr ImVec2) -- ^ pos_max
    -> Float -- ^ ellipsis_max_x
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> (Ptr ImVec2) -- ^ text_size_if_known
    -> IO ()

renderTextEllipsis
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImVec2 -- ^ pos_min
  -> ImVec2 -- ^ pos_max
  -> Float -- ^ ellipsis_max_x
  -> CString -- ^ text
  -> CString -- ^ text_end
  -> (Ptr ImVec2) -- ^ text_size_if_known
  -> IO ()
renderTextEllipsis draw_list pos_min pos_max ellipsis_max_x text text_end text_size_if_known =
  with pos_min $ \pos_minPtr -> with pos_max $ \pos_maxPtr -> c_renderTextEllipsis draw_list pos_minPtr pos_maxPtr ellipsis_max_x text text_end text_size_if_known

foreign import capi unsafe "DearImGuiWrappers.h ImGui_RenderTextWrapped_wrap"
  c_renderTextWrapped
    :: (Ptr ImVec2) -- ^ pos
    -> CString -- ^ text
    -> CString -- ^ text_end
    -> Float -- ^ wrap_width
    -> IO ()

renderTextWrapped
  :: ImVec2 -- ^ pos
  -> CString -- ^ text
  -> CString -- ^ text_end
  -> Float -- ^ wrap_width
  -> IO ()
renderTextWrapped pos text text_end wrap_width =
  with pos $ \posPtr -> c_renderTextWrapped posPtr text text_end wrap_width

-- C: void ImGui::ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ScaleWindowsInViewport"
  scaleWindowsInViewport
    :: (Ptr ImGuiViewportP) -- ^ viewport
    -> Float -- ^ scale
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ScrollToBringRectIntoView_wrap"
  c_scrollToBringRectIntoView
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ rect
    -> IO ()

scrollToBringRectIntoView
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImRect -- ^ rect
  -> IO ()
scrollToBringRectIntoView window rect =
  with rect $ \rectPtr -> c_scrollToBringRectIntoView window rectPtr

-- C: void ImGui::ScrollToItem(ImGuiScrollFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ScrollToItem"
  scrollToItem
    :: ImGuiScrollFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ScrollToRect_wrap"
  c_scrollToRect
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ rect
    -> ImGuiScrollFlags -- ^ flags
    -> IO ()

scrollToRect
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImRect -- ^ rect
  -> ImGuiScrollFlags -- ^ flags
  -> IO ()
scrollToRect window rect flags =
  with rect $ \rectPtr -> c_scrollToRect window rectPtr flags

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ScrollToRectEx_wrap"
  c_scrollToRectEx
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ rect
    -> ImGuiScrollFlags -- ^ flags
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

scrollToRectEx
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImRect -- ^ rect
  -> ImGuiScrollFlags -- ^ flags
  -> IO ImVec2
scrollToRectEx window rect flags =
  with rect $ \rectPtr -> alloca $ \outPtr -> c_scrollToRectEx window rectPtr flags outPtr >> peek outPtr

-- C: void ImGui::Scrollbar(ImGuiAxis axis)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_Scrollbar"
  scrollbar
    :: ImGuiAxis -- ^ axis
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ScrollbarEx_wrap"
  c_scrollbarEx
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> ImGuiAxis -- ^ axis
    -> (Ptr ImS64) -- ^ p_scroll_v
    -> ImS64 -- ^ avail_v
    -> ImS64 -- ^ contents_v
    -> ImDrawFlags -- ^ draw_rounding_flags
    -> IO CBool

scrollbarEx
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> ImGuiAxis -- ^ axis
  -> (Ptr ImS64) -- ^ p_scroll_v
  -> ImS64 -- ^ avail_v
  -> ImS64 -- ^ contents_v
  -> ImDrawFlags -- ^ draw_rounding_flags
  -> IO CBool
scrollbarEx bb id_ axis p_scroll_v avail_v contents_v draw_rounding_flags =
  with bb $ \bbPtr -> c_scrollbarEx bbPtr id_ axis p_scroll_v avail_v contents_v draw_rounding_flags

-- C: void ImGui::SeparatorEx(ImGuiSeparatorFlags flags, float thickness)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SeparatorEx"
  separatorEx
    :: ImGuiSeparatorFlags -- ^ flags
    -> Float -- ^ thickness
    -> IO ()

-- C: void ImGui::SeparatorTextEx(ImGuiID id, const char* label, const char* label_end, float extra_width)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SeparatorTextEx"
  separatorTextEx
    :: ImGuiID -- ^ id
    -> CString -- ^ label
    -> CString -- ^ label_end
    -> Float -- ^ extra_width
    -> IO ()

-- C: void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetActiveID"
  setActiveID
    :: ImGuiID -- ^ id
    -> (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::SetActiveIdUsingAllKeyboardKeys()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetActiveIdUsingAllKeyboardKeys"
  setActiveIdUsingAllKeyboardKeys :: IO ()

-- C: void ImGui::SetContextName(ImGuiContext* ctx, const char* name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetContextName"
  setContextName
    :: (Ptr ImGuiContext) -- ^ ctx
    -> CString -- ^ name
    -> IO ()

-- C: void ImGui::SetCurrentFont(ImFont* font, float font_size_before_scaling, float font_size_after_scaling)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetCurrentFont"
  setCurrentFont
    :: (Ptr ImFont) -- ^ font
    -> Float -- ^ font_size_before_scaling
    -> Float -- ^ font_size_after_scaling
    -> IO ()

-- C: void ImGui::SetCurrentViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetCurrentViewport"
  setCurrentViewport
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiViewportP) -- ^ viewport
    -> IO ()

-- C: void ImGui::SetFocusID(ImGuiID id, ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetFocusID"
  setFocusID
    :: ImGuiID -- ^ id
    -> (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::SetHoveredID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetHoveredID"
  setHoveredID
    :: ImGuiID -- ^ id
    -> IO ()

-- C: bool ImGui::SetItemKeyOwner(ImGuiKey key, ImGuiInputFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetItemKeyOwnerImGuiInputFlags"
  setItemKeyOwnerImGuiInputFlags
    :: ImGuiKey -- ^ key
    -> ImGuiInputFlags -- ^ flags
    -> IO CBool

-- C: void ImGui::SetKeyOwner(ImGuiKey key, ImGuiID owner_id, ImGuiInputFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetKeyOwner"
  setKeyOwner
    :: ImGuiKey -- ^ key
    -> ImGuiID -- ^ owner_id
    -> ImGuiInputFlags -- ^ flags
    -> IO ()

-- C: void ImGui::SetKeyOwnersForKeyChord(ImGuiKeyChord key, ImGuiID owner_id, ImGuiInputFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetKeyOwnersForKeyChord"
  setKeyOwnersForKeyChord
    :: ImGuiKeyChord -- ^ key
    -> ImGuiID -- ^ owner_id
    -> ImGuiInputFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SetLastItemData_wrap"
  c_setLastItemData
    :: ImGuiID -- ^ item_id
    -> ImGuiItemFlags -- ^ item_flags
    -> ImGuiItemStatusFlags -- ^ status_flags
    -> (Ptr ImRect) -- ^ item_rect
    -> IO ()

setLastItemData
  :: ImGuiID -- ^ item_id
  -> ImGuiItemFlags -- ^ item_flags
  -> ImGuiItemStatusFlags -- ^ status_flags
  -> ImRect -- ^ item_rect
  -> IO ()
setLastItemData item_id item_flags status_flags item_rect =
  with item_rect $ \item_rectPtr -> c_setLastItemData item_id item_flags status_flags item_rectPtr

-- C: void ImGui::SetNavCursorVisibleAfterMove()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNavCursorVisibleAfterMove"
  setNavCursorVisibleAfterMove :: IO ()

-- C: void ImGui::SetNavFocusScope(ImGuiID focus_scope_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNavFocusScope"
  setNavFocusScope
    :: ImGuiID -- ^ focus_scope_id
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SetNavID_wrap"
  c_setNavID
    :: ImGuiID -- ^ id
    -> ImGuiNavLayer -- ^ nav_layer
    -> ImGuiID -- ^ focus_scope_id
    -> (Ptr ImRect) -- ^ rect_rel
    -> IO ()

setNavID
  :: ImGuiID -- ^ id
  -> ImGuiNavLayer -- ^ nav_layer
  -> ImGuiID -- ^ focus_scope_id
  -> ImRect -- ^ rect_rel
  -> IO ()
setNavID id_ nav_layer focus_scope_id rect_rel =
  with rect_rel $ \rect_relPtr -> c_setNavID id_ nav_layer focus_scope_id rect_relPtr

-- C: void ImGui::SetNavWindow(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNavWindow"
  setNavWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::SetNextItemColorMarker(ImU32 col)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNextItemColorMarker"
  setNextItemColorMarker
    :: ImU32 -- ^ col
    -> IO ()

-- C: void ImGui::SetNextItemRefVal(ImGuiDataType data_type, void* p_data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNextItemRefVal"
  setNextItemRefVal
    :: ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_data
    -> IO ()

-- C: void ImGui::SetNextWindowChildFlags(ImGuiChildFlags flags, bool enabled)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNextWindowChildFlags"
  setNextWindowChildFlags
    :: ImGuiChildFlags -- ^ flags
    -> CBool -- ^ enabled
    -> IO ()

-- C: void ImGui::SetNextWindowFlags(ImGuiWindowFlags flags, bool enabled)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNextWindowFlags"
  setNextWindowFlags
    :: ImGuiWindowFlags -- ^ flags
    -> CBool -- ^ enabled
    -> IO ()

-- C: void ImGui::SetNextWindowRefreshPolicy(ImGuiWindowRefreshFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetNextWindowRefreshPolicy"
  setNextWindowRefreshPolicy
    :: ImGuiWindowRefreshFlags -- ^ flags
    -> IO ()

-- C: void ImGui::SetPixelDensity(float pixel_density)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetPixelDensity"
  setPixelDensity
    :: Float -- ^ pixel_density
    -> IO ()

-- C: void ImGui::SetScrollFromPosX(ImGuiWindow* window, float local_x, float center_x_ratio)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetScrollFromPosXImGuiWindowPtr"
  setScrollFromPosXImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> Float -- ^ local_x
    -> Float -- ^ center_x_ratio
    -> IO ()

-- C: void ImGui::SetScrollFromPosY(ImGuiWindow* window, float local_y, float center_y_ratio)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetScrollFromPosYImGuiWindowPtr"
  setScrollFromPosYImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> Float -- ^ local_y
    -> Float -- ^ center_y_ratio
    -> IO ()

-- C: void ImGui::SetScrollX(ImGuiWindow* window, float scroll_x)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetScrollXImGuiWindowPtr"
  setScrollXImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> Float -- ^ scroll_x
    -> IO ()

-- C: void ImGui::SetScrollY(ImGuiWindow* window, float scroll_y)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetScrollYImGuiWindowPtr"
  setScrollYImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> Float -- ^ scroll_y
    -> IO ()

-- C: bool ImGui::SetShortcutRouting(ImGuiKeyChord key_chord, ImGuiInputFlags flags, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetShortcutRouting"
  setShortcutRouting
    :: ImGuiKeyChord -- ^ key_chord
    -> ImGuiInputFlags -- ^ flags
    -> ImGuiID -- ^ owner_id
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SetWindowClipRectBeforeSetChannel_wrap"
  c_setWindowClipRectBeforeSetChannel
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ clip_rect
    -> IO ()

setWindowClipRectBeforeSetChannel
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImRect -- ^ clip_rect
  -> IO ()
setWindowClipRectBeforeSetChannel window clip_rect =
  with clip_rect $ \clip_rectPtr -> c_setWindowClipRectBeforeSetChannel window clip_rectPtr

-- C: void ImGui::SetWindowCollapsed(ImGuiWindow* window, bool collapsed, ImGuiCond cond)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetWindowCollapsedImGuiWindowPtr"
  setWindowCollapsedImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> CBool -- ^ collapsed
    -> ImGuiCond -- ^ cond
    -> IO ()

-- C: void ImGui::SetWindowDock(ImGuiWindow* window, ImGuiID dock_id, ImGuiCond cond)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetWindowDock"
  setWindowDock
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiID -- ^ dock_id
    -> ImGuiCond -- ^ cond
    -> IO ()

-- C: void ImGui::SetWindowHiddenAndSkipItemsForCurrentFrame(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetWindowHiddenAndSkipItemsForCurrentFrame"
  setWindowHiddenAndSkipItemsForCurrentFrame
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SetWindowHitTestHole_wrap"
  c_setWindowHitTestHole
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ pos
    -> (Ptr ImVec2) -- ^ size
    -> IO ()

setWindowHitTestHole
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImVec2 -- ^ pos
  -> ImVec2 -- ^ size
  -> IO ()
setWindowHitTestHole window pos size =
  with pos $ \posPtr -> with size $ \sizePtr -> c_setWindowHitTestHole window posPtr sizePtr

-- C: void ImGui::SetWindowParentWindowForFocusRoute(ImGuiWindow* window, ImGuiWindow* parent_window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetWindowParentWindowForFocusRoute"
  setWindowParentWindowForFocusRoute
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiWindow) -- ^ parent_window
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SetWindowPosImGuiWindowPtr_wrap"
  c_setWindowPosImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ pos
    -> ImGuiCond -- ^ cond
    -> IO ()

setWindowPosImGuiWindowPtr
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImVec2 -- ^ pos
  -> ImGuiCond -- ^ cond
  -> IO ()
setWindowPosImGuiWindowPtr window pos cond =
  with pos $ \posPtr -> c_setWindowPosImGuiWindowPtr window posPtr cond

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SetWindowSizeImGuiWindowPtr_wrap"
  c_setWindowSizeImGuiWindowPtr
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ size
    -> ImGuiCond -- ^ cond
    -> IO ()

setWindowSizeImGuiWindowPtr
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImVec2 -- ^ size
  -> ImGuiCond -- ^ cond
  -> IO ()
setWindowSizeImGuiWindowPtr window size cond =
  with size $ \sizePtr -> c_setWindowSizeImGuiWindowPtr window sizePtr cond

-- C: void ImGui::SetWindowViewport(ImGuiWindow* window, ImGuiViewportP* viewport)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_SetWindowViewport"
  setWindowViewport
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiViewportP) -- ^ viewport
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ShadeVertsLinearColorGradientKeepAlpha_wrap"
  c_shadeVertsLinearColorGradientKeepAlpha
    :: (Ptr ImDrawList) -- ^ draw_list
    -> CInt -- ^ vert_start_idx
    -> CInt -- ^ vert_end_idx
    -> (Ptr ImVec2) -- ^ gradient_p0
    -> (Ptr ImVec2) -- ^ gradient_p1
    -> ImU32 -- ^ col0
    -> ImU32 -- ^ col1
    -> IO ()

shadeVertsLinearColorGradientKeepAlpha
  :: (Ptr ImDrawList) -- ^ draw_list
  -> CInt -- ^ vert_start_idx
  -> CInt -- ^ vert_end_idx
  -> ImVec2 -- ^ gradient_p0
  -> ImVec2 -- ^ gradient_p1
  -> ImU32 -- ^ col0
  -> ImU32 -- ^ col1
  -> IO ()
shadeVertsLinearColorGradientKeepAlpha draw_list vert_start_idx vert_end_idx gradient_p0 gradient_p1 col0 col1 =
  with gradient_p0 $ \gradient_p0Ptr -> with gradient_p1 $ \gradient_p1Ptr -> c_shadeVertsLinearColorGradientKeepAlpha draw_list vert_start_idx vert_end_idx gradient_p0Ptr gradient_p1Ptr col0 col1

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ShadeVertsLinearUV_wrap"
  c_shadeVertsLinearUV
    :: (Ptr ImDrawList) -- ^ draw_list
    -> CInt -- ^ vert_start_idx
    -> CInt -- ^ vert_end_idx
    -> (Ptr ImVec2) -- ^ a
    -> (Ptr ImVec2) -- ^ b
    -> (Ptr ImVec2) -- ^ uv_a
    -> (Ptr ImVec2) -- ^ uv_b
    -> CBool -- ^ clamp
    -> IO ()

shadeVertsLinearUV
  :: (Ptr ImDrawList) -- ^ draw_list
  -> CInt -- ^ vert_start_idx
  -> CInt -- ^ vert_end_idx
  -> ImVec2 -- ^ a
  -> ImVec2 -- ^ b
  -> ImVec2 -- ^ uv_a
  -> ImVec2 -- ^ uv_b
  -> CBool -- ^ clamp
  -> IO ()
shadeVertsLinearUV draw_list vert_start_idx vert_end_idx a b uv_a uv_b clamp =
  with a $ \aPtr -> with b $ \bPtr -> with uv_a $ \uv_aPtr -> with uv_b $ \uv_bPtr -> c_shadeVertsLinearUV draw_list vert_start_idx vert_end_idx aPtr bPtr uv_aPtr uv_bPtr clamp

foreign import capi unsafe "DearImGuiWrappers.h ImGui_ShadeVertsTransformPos_wrap"
  c_shadeVertsTransformPos
    :: (Ptr ImDrawList) -- ^ draw_list
    -> CInt -- ^ vert_start_idx
    -> CInt -- ^ vert_end_idx
    -> (Ptr ImVec2) -- ^ pivot_in
    -> Float -- ^ cos_a
    -> Float -- ^ sin_a
    -> (Ptr ImVec2) -- ^ pivot_out
    -> IO ()

shadeVertsTransformPos
  :: (Ptr ImDrawList) -- ^ draw_list
  -> CInt -- ^ vert_start_idx
  -> CInt -- ^ vert_end_idx
  -> ImVec2 -- ^ pivot_in
  -> Float -- ^ cos_a
  -> Float -- ^ sin_a
  -> ImVec2 -- ^ pivot_out
  -> IO ()
shadeVertsTransformPos draw_list vert_start_idx vert_end_idx pivot_in cos_a sin_a pivot_out =
  with pivot_in $ \pivot_inPtr -> with pivot_out $ \pivot_outPtr -> c_shadeVertsTransformPos draw_list vert_start_idx vert_end_idx pivot_inPtr cos_a sin_a pivot_outPtr

-- C: bool ImGui::Shortcut(ImGuiKeyChord key_chord, ImGuiInputFlags flags, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ShortcutID"
  shortcutID
    :: ImGuiKeyChord -- ^ key_chord
    -> ImGuiInputFlags -- ^ flags
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: void ImGui::ShowFontAtlas(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ShowFontAtlas"
  showFontAtlas
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImGui::ShrinkWidths(ImGuiShrinkWidthItem* items, int count, float width_excess, float width_min)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_ShrinkWidths"
  shrinkWidths
    :: (Ptr ImGuiShrinkWidthItem) -- ^ items
    -> CInt -- ^ count
    -> Float -- ^ width_excess
    -> Float -- ^ width_min
    -> IO ()

-- C: void ImGui::Shutdown()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_Shutdown"
  shutdown :: IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SliderBehavior_wrap"
  c_sliderBehavior
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_v
    -> (Ptr ()) -- ^ p_min
    -> (Ptr ()) -- ^ p_max
    -> CString -- ^ format
    -> ImGuiSliderFlags -- ^ flags
    -> (Ptr ImRect) -- ^ out_grab_bb
    -> IO CBool

sliderBehavior
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> ImGuiDataType -- ^ data_type
  -> (Ptr ()) -- ^ p_v
  -> (Ptr ()) -- ^ p_min
  -> (Ptr ()) -- ^ p_max
  -> CString -- ^ format
  -> ImGuiSliderFlags -- ^ flags
  -> (Ptr ImRect) -- ^ out_grab_bb
  -> IO CBool
sliderBehavior bb id_ data_type p_v p_min p_max format flags out_grab_bb =
  with bb $ \bbPtr -> c_sliderBehavior bbPtr id_ data_type p_v p_min p_max format flags out_grab_bb

foreign import capi unsafe "DearImGuiWrappers.h ImGui_SplitterBehavior_wrap"
  c_splitterBehavior
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> ImGuiAxis -- ^ axis
    -> (Ptr Float) -- ^ size1
    -> (Ptr Float) -- ^ size2
    -> Float -- ^ min_size1
    -> Float -- ^ min_size2
    -> Float -- ^ hover_extend
    -> Float -- ^ hover_visibility_delay
    -> ImU32 -- ^ bg_col
    -> IO CBool

splitterBehavior
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> ImGuiAxis -- ^ axis
  -> (Ptr Float) -- ^ size1
  -> (Ptr Float) -- ^ size2
  -> Float -- ^ min_size1
  -> Float -- ^ min_size2
  -> Float -- ^ hover_extend
  -> Float -- ^ hover_visibility_delay
  -> ImU32 -- ^ bg_col
  -> IO CBool
splitterBehavior bb id_ axis size1 size2 min_size1 min_size2 hover_extend hover_visibility_delay bg_col =
  with bb $ \bbPtr -> c_splitterBehavior bbPtr id_ axis size1 size2 min_size1 min_size2 hover_extend hover_visibility_delay bg_col

-- C: void ImGui::StartMouseMovingWindow(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_StartMouseMovingWindow"
  startMouseMovingWindow
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::StartMouseMovingWindowOrNode(ImGuiWindow* window, ImGuiDockNode* node, bool undock)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_StartMouseMovingWindowOrNode"
  startMouseMovingWindowOrNode
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImGuiDockNode) -- ^ node
    -> CBool -- ^ undock
    -> IO ()

-- C: void ImGui::StopMouseMovingWindow()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_StopMouseMovingWindow"
  stopMouseMovingWindow :: IO ()

-- C: void ImGui::TabBarAddTab(ImGuiTabBar* tab_bar, ImGuiTabItemFlags tab_flags, ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarAddTab"
  tabBarAddTab
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> ImGuiTabItemFlags -- ^ tab_flags
    -> (Ptr ImGuiWindow) -- ^ window
    -> IO ()

-- C: void ImGui::TabBarCloseTab(ImGuiTabBar* tab_bar, ImGuiTabItem* tab)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarCloseTab"
  tabBarCloseTab
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> IO ()

-- C: ImGuiTabBar* ImGui::TabBarFindByID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarFindByID"
  tabBarFindByID
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiTabBar)

-- C: ImGuiTabItem* ImGui::TabBarFindMostRecentlySelectedTabForActiveWindow(ImGuiTabBar* tab_bar)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarFindMostRecentlySelectedTabForActiveWindow"
  tabBarFindMostRecentlySelectedTabForActiveWindow
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> IO (Ptr ImGuiTabItem)

-- C: ImGuiTabItem* ImGui::TabBarFindTabByID(ImGuiTabBar* tab_bar, ImGuiID tab_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarFindTabByID"
  tabBarFindTabByID
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> ImGuiID -- ^ tab_id
    -> IO (Ptr ImGuiTabItem)

-- C: ImGuiTabItem* ImGui::TabBarFindTabByOrder(ImGuiTabBar* tab_bar, int order)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarFindTabByOrder"
  tabBarFindTabByOrder
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> CInt -- ^ order
    -> IO (Ptr ImGuiTabItem)

-- C: ImGuiTabItem* ImGui::TabBarGetCurrentTab(ImGuiTabBar* tab_bar)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarGetCurrentTab"
  tabBarGetCurrentTab
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> IO (Ptr ImGuiTabItem)

-- C: const char* ImGui::TabBarGetTabName(ImGuiTabBar* tab_bar, ImGuiTabItem* tab)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarGetTabName"
  tabBarGetTabName
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> IO CString

-- C: int ImGui::TabBarGetTabOrder(ImGuiTabBar* tab_bar, ImGuiTabItem* tab)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarGetTabOrder"
  tabBarGetTabOrder
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> IO CInt

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TabBarGetTabPos_wrap"
  c_tabBarGetTabPos
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

tabBarGetTabPos
  :: (Ptr ImGuiTabBar) -- ^ tab_bar
  -> (Ptr ImGuiTabItem) -- ^ tab
  -> IO ImVec2
tabBarGetTabPos tab_bar tab =
  alloca $ \outPtr -> c_tabBarGetTabPos tab_bar tab outPtr >> peek outPtr

-- C: bool ImGui::TabBarProcessReorder(ImGuiTabBar* tab_bar)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarProcessReorder"
  tabBarProcessReorder
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> IO CBool

-- C: void ImGui::TabBarQueueFocus(ImGuiTabBar* tab_bar, ImGuiTabItem* tab)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarQueueFocus"
  tabBarQueueFocus
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> IO ()

-- C: void ImGui::TabBarQueueFocus(ImGuiTabBar* tab_bar, const char* tab_name)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarQueueFocusStr"
  tabBarQueueFocusStr
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> CString -- ^ tab_name
    -> IO ()

-- C: void ImGui::TabBarQueueReorder(ImGuiTabBar* tab_bar, ImGuiTabItem* tab, int offset)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarQueueReorder"
  tabBarQueueReorder
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> CInt -- ^ offset
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TabBarQueueReorderFromMousePos_wrap"
  c_tabBarQueueReorderFromMousePos
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> (Ptr ImGuiTabItem) -- ^ tab
    -> (Ptr ImVec2) -- ^ mouse_pos
    -> IO ()

tabBarQueueReorderFromMousePos
  :: (Ptr ImGuiTabBar) -- ^ tab_bar
  -> (Ptr ImGuiTabItem) -- ^ tab
  -> ImVec2 -- ^ mouse_pos
  -> IO ()
tabBarQueueReorderFromMousePos tab_bar tab mouse_pos =
  with mouse_pos $ \mouse_posPtr -> c_tabBarQueueReorderFromMousePos tab_bar tab mouse_posPtr

-- C: void ImGui::TabBarRemove(ImGuiTabBar* tab_bar)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarRemove"
  tabBarRemove
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> IO ()

-- C: void ImGui::TabBarRemoveTab(ImGuiTabBar* tab_bar, ImGuiID tab_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabBarRemoveTab"
  tabBarRemoveTab
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> ImGuiID -- ^ tab_id
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TabItemBackground_wrap"
  c_tabItemBackground
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImRect) -- ^ bb
    -> ImGuiTabItemFlags -- ^ flags
    -> ImU32 -- ^ col
    -> IO ()

tabItemBackground
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImRect -- ^ bb
  -> ImGuiTabItemFlags -- ^ flags
  -> ImU32 -- ^ col
  -> IO ()
tabItemBackground draw_list bb flags col =
  with bb $ \bbPtr -> c_tabItemBackground draw_list bbPtr flags col

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TabItemCalcSize_wrap"
  c_tabItemCalcSize
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

tabItemCalcSize
  :: (Ptr ImGuiWindow) -- ^ window
  -> IO ImVec2
tabItemCalcSize window =
  alloca $ \outPtr -> c_tabItemCalcSize window outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TabItemCalcSizeStr_wrap"
  c_tabItemCalcSizeStr
    :: CString -- ^ label
    -> CBool -- ^ has_close_button_or_unsaved_marker
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

tabItemCalcSizeStr
  :: CString -- ^ label
  -> CBool -- ^ has_close_button_or_unsaved_marker
  -> IO ImVec2
tabItemCalcSizeStr label has_close_button_or_unsaved_marker =
  alloca $ \outPtr -> c_tabItemCalcSizeStr label has_close_button_or_unsaved_marker outPtr >> peek outPtr

-- C: bool ImGui::TabItemEx(ImGuiTabBar* tab_bar, const char* label, bool* p_open, ImGuiTabItemFlags flags, ImGuiWindow* docked_window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabItemEx"
  tabItemEx
    :: (Ptr ImGuiTabBar) -- ^ tab_bar
    -> CString -- ^ label
    -> (Ptr CBool) -- ^ p_open
    -> ImGuiTabItemFlags -- ^ flags
    -> (Ptr ImGuiWindow) -- ^ docked_window
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TabItemLabelAndCloseButton_wrap"
  c_tabItemLabelAndCloseButton
    :: (Ptr ImDrawList) -- ^ draw_list
    -> (Ptr ImRect) -- ^ bb
    -> ImGuiTabItemFlags -- ^ flags
    -> (Ptr ImVec2) -- ^ frame_padding
    -> CString -- ^ label
    -> ImGuiID -- ^ tab_id
    -> ImGuiID -- ^ close_button_id
    -> CBool -- ^ is_contents_visible
    -> (Ptr CBool) -- ^ out_just_closed
    -> (Ptr CBool) -- ^ out_text_clipped
    -> IO ()

tabItemLabelAndCloseButton
  :: (Ptr ImDrawList) -- ^ draw_list
  -> ImRect -- ^ bb
  -> ImGuiTabItemFlags -- ^ flags
  -> ImVec2 -- ^ frame_padding
  -> CString -- ^ label
  -> ImGuiID -- ^ tab_id
  -> ImGuiID -- ^ close_button_id
  -> CBool -- ^ is_contents_visible
  -> (Ptr CBool) -- ^ out_just_closed
  -> (Ptr CBool) -- ^ out_text_clipped
  -> IO ()
tabItemLabelAndCloseButton draw_list bb flags frame_padding label tab_id close_button_id is_contents_visible out_just_closed out_text_clipped =
  with bb $ \bbPtr -> with frame_padding $ \frame_paddingPtr -> c_tabItemLabelAndCloseButton draw_list bbPtr flags frame_paddingPtr label tab_id close_button_id is_contents_visible out_just_closed out_text_clipped

-- C: void ImGui::TabItemSpacing(const char* str_id, ImGuiTabItemFlags flags, float width)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TabItemSpacing"
  tabItemSpacing
    :: CString -- ^ str_id
    -> ImGuiTabItemFlags -- ^ flags
    -> Float -- ^ width
    -> IO ()

-- C: void ImGui::TableAngledHeadersRowEx(ImGuiID row_id, float angle, float max_label_width, const ImGuiTableHeaderData* data, int data_count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableAngledHeadersRowEx"
  tableAngledHeadersRowEx
    :: ImGuiID -- ^ row_id
    -> Float -- ^ angle
    -> Float -- ^ max_label_width
    -> (Ptr ImGuiTableHeaderData) -- ^ data
    -> CInt -- ^ data_count
    -> IO ()

-- C: void ImGui::TableApplyExternalUnclipRect(ImGuiTable* table, ImRect* rect)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableApplyExternalUnclipRect"
  tableApplyExternalUnclipRect
    :: (Ptr ImGuiTable) -- ^ table
    -> (Ptr ImRect) -- ^ rect
    -> IO ()

-- C: void ImGui::TableApplyQueuedRequests(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableApplyQueuedRequests"
  tableApplyQueuedRequests
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableBeginCell(ImGuiTable* table, int column_n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableBeginCell"
  tableBeginCell
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> IO ()

-- C: bool ImGui::TableBeginContextMenuPopup(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableBeginContextMenuPopup"
  tableBeginContextMenuPopup
    :: (Ptr ImGuiTable) -- ^ table
    -> IO CBool

-- C: void ImGui::TableBeginInitMemory(ImGuiTable* table, int columns_count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableBeginInitMemory"
  tableBeginInitMemory
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ columns_count
    -> IO ()

-- C: void ImGui::TableBeginRow(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableBeginRow"
  tableBeginRow
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: float ImGui::TableCalcMaxColumnWidth(const ImGuiTable* table, int column_n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableCalcMaxColumnWidth"
  tableCalcMaxColumnWidth
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> IO Float

-- C: void ImGui::TableDrawBorders(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableDrawBorders"
  tableDrawBorders
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableDrawDefaultContextMenu(ImGuiTable* table, ImGuiTableFlags flags_for_section_to_display)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableDrawDefaultContextMenu"
  tableDrawDefaultContextMenu
    :: (Ptr ImGuiTable) -- ^ table
    -> ImGuiTableFlags -- ^ flags_for_section_to_display
    -> IO ()

-- C: void ImGui::TableEndCell(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableEndCell"
  tableEndCell
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableEndRow(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableEndRow"
  tableEndRow
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: ImGuiTable* ImGui::TableFindByID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableFindByID"
  tableFindByID
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiTable)

-- C: void ImGui::TableFixColumnSortDirection(ImGuiTable* table, ImGuiTableColumn* column)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableFixColumnSortDirection"
  tableFixColumnSortDirection
    :: (Ptr ImGuiTable) -- ^ table
    -> (Ptr ImGuiTableColumn) -- ^ column
    -> IO ()

-- C: void ImGui::TableFixDisplayOrder(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableFixDisplayOrder"
  tableFixDisplayOrder
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableGcCompactSettings()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGcCompactSettings"
  tableGcCompactSettings :: IO ()

-- C: void ImGui::TableGcCompactTransientBuffers(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGcCompactTransientBuffers"
  tableGcCompactTransientBuffers
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableGcCompactTransientBuffers(ImGuiTableTempData* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGcCompactTransientBuffersImGuiTableTempDataPtr"
  tableGcCompactTransientBuffersImGuiTableTempDataPtr
    :: (Ptr ImGuiTableTempData) -- ^ table
    -> IO ()

-- C: ImGuiTableSettings* ImGui::TableGetBoundSettings(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetBoundSettings"
  tableGetBoundSettings
    :: (Ptr ImGuiTable) -- ^ table
    -> IO (Ptr ImGuiTableSettings)

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TableGetCellBgRect_wrap"
  c_tableGetCellBgRect
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> (Ptr ImRect) -- ^ out
    -> IO ()

tableGetCellBgRect
  :: (Ptr ImGuiTable) -- ^ table
  -> CInt -- ^ column_n
  -> IO ImRect
tableGetCellBgRect table column_n =
  alloca $ \outPtr -> c_tableGetCellBgRect table column_n outPtr >> peek outPtr

-- C: const char* ImGui::TableGetColumnName(const ImGuiTable* table, int column_n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetColumnNameImGuiTablePtr"
  tableGetColumnNameImGuiTablePtr
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> IO CString

-- C: ImGuiSortDirection ImGui::TableGetColumnNextSortDirection(ImGuiTableColumn* column)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetColumnNextSortDirection"
  tableGetColumnNextSortDirection
    :: (Ptr ImGuiTableColumn) -- ^ column
    -> IO ImGuiSortDirection

-- C: ImGuiID ImGui::TableGetColumnResizeID(ImGuiTable* table, int column_n, int instance_no)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetColumnResizeID"
  tableGetColumnResizeID
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> CInt -- ^ instance_no
    -> IO ImGuiID

-- C: float ImGui::TableGetColumnWidthAuto(ImGuiTable* table, ImGuiTableColumn* column)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetColumnWidthAuto"
  tableGetColumnWidthAuto
    :: (Ptr ImGuiTable) -- ^ table
    -> (Ptr ImGuiTableColumn) -- ^ column
    -> IO Float

-- C: float ImGui::TableGetHeaderAngledMaxLabelWidth()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetHeaderAngledMaxLabelWidth"
  tableGetHeaderAngledMaxLabelWidth :: IO Float

-- C: float ImGui::TableGetHeaderRowHeight()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetHeaderRowHeight"
  tableGetHeaderRowHeight :: IO Float

-- C: int ImGui::TableGetHoveredRow()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetHoveredRow"
  tableGetHoveredRow :: IO CInt

-- C: ImGuiTableInstanceData* ImGui::TableGetInstanceData(ImGuiTable* table, int instance_no)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetInstanceData"
  tableGetInstanceData
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ instance_no
    -> IO (Ptr ImGuiTableInstanceData)

-- C: ImGuiID ImGui::TableGetInstanceID(ImGuiTable* table, int instance_no)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableGetInstanceID"
  tableGetInstanceID
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ instance_no
    -> IO ImGuiID

-- C: void ImGui::TableInitColumnDefaults(ImGuiTable* table, ImGuiTableColumn* column, ImGuiTableColumnFlags init_mask)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableInitColumnDefaults"
  tableInitColumnDefaults
    :: (Ptr ImGuiTable) -- ^ table
    -> (Ptr ImGuiTableColumn) -- ^ column
    -> ImGuiTableColumnFlags -- ^ init_mask
    -> IO ()

-- C: void ImGui::TableLoadSettings(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableLoadSettings"
  tableLoadSettings
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableLoadSettingsForColumn(ImGuiTableColumn* column, ImGuiTableColumnSettings* column_settings, ImGuiTableFlags load_flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableLoadSettingsForColumn"
  tableLoadSettingsForColumn
    :: (Ptr ImGuiTableColumn) -- ^ column
    -> (Ptr ImGuiTableColumnSettings) -- ^ column_settings
    -> ImGuiTableFlags -- ^ load_flags
    -> IO ()

-- C: void ImGui::TableLoadSettingsForColumns(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableLoadSettingsForColumns"
  tableLoadSettingsForColumns
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableMergeDrawChannels(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableMergeDrawChannels"
  tableMergeDrawChannels
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableOpenContextMenu(int column_n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableOpenContextMenu"
  tableOpenContextMenu
    :: CInt -- ^ column_n
    -> IO ()

-- C: void ImGui::TablePopBackgroundChannel()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TablePopBackgroundChannel"
  tablePopBackgroundChannel :: IO ()

-- C: void ImGui::TablePopColumnChannel()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TablePopColumnChannel"
  tablePopColumnChannel :: IO ()

-- C: void ImGui::TablePushBackgroundChannel()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TablePushBackgroundChannel"
  tablePushBackgroundChannel :: IO ()

-- C: void ImGui::TablePushColumnChannel(int column_n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TablePushColumnChannel"
  tablePushColumnChannel
    :: CInt -- ^ column_n
    -> IO ()

-- C: void ImGui::TableQueueSetColumnDisplayOrder(ImGuiTable* table, int column_n, int dst_order)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableQueueSetColumnDisplayOrder"
  tableQueueSetColumnDisplayOrder
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> CInt -- ^ dst_order
    -> IO ()

-- C: void ImGui::TableReconcileColumns(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableReconcileColumns"
  tableReconcileColumns
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableRemove(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableRemove"
  tableRemove
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableResetSettings(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableResetSettings"
  tableResetSettings
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableSaveSettings(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSaveSettings"
  tableSaveSettings
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableSetColumnDisplayOrder(ImGuiTable* table, int column_n, int dst_order)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSetColumnDisplayOrder"
  tableSetColumnDisplayOrder
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> CInt -- ^ dst_order
    -> IO ()

-- C: void ImGui::TableSetColumnSortDirection(int column_n, ImGuiSortDirection sort_direction, bool append_to_sort_specs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSetColumnSortDirection"
  tableSetColumnSortDirection
    :: CInt -- ^ column_n
    -> ImGuiSortDirection -- ^ sort_direction
    -> CBool -- ^ append_to_sort_specs
    -> IO ()

-- C: void ImGui::TableSetColumnWidth(int column_n, float width)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSetColumnWidth"
  tableSetColumnWidth
    :: CInt -- ^ column_n
    -> Float -- ^ width
    -> IO ()

-- C: void ImGui::TableSetColumnWidthAutoAll(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSetColumnWidthAutoAll"
  tableSetColumnWidthAutoAll
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableSetColumnWidthAutoSingle(ImGuiTable* table, int column_n)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSetColumnWidthAutoSingle"
  tableSetColumnWidthAutoSingle
    :: (Ptr ImGuiTable) -- ^ table
    -> CInt -- ^ column_n
    -> IO ()

-- C: void ImGui::TableSettingsAddSettingsHandler()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSettingsAddSettingsHandler"
  tableSettingsAddSettingsHandler :: IO ()

-- C: ImGuiTableSettings* ImGui::TableSettingsCreate(ImGuiID id, int columns_count)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSettingsCreate"
  tableSettingsCreate
    :: ImGuiID -- ^ id
    -> CInt -- ^ columns_count
    -> IO (Ptr ImGuiTableSettings)

-- C: ImGuiTableSettings* ImGui::TableSettingsFindByID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSettingsFindByID"
  tableSettingsFindByID
    :: ImGuiID -- ^ id
    -> IO (Ptr ImGuiTableSettings)

-- C: void ImGui::TableSetupDrawChannels(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSetupDrawChannels"
  tableSetupDrawChannels
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableSortSpecsBuild(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSortSpecsBuild"
  tableSortSpecsBuild
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableSortSpecsSanitize(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableSortSpecsSanitize"
  tableSortSpecsSanitize
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableUpdateBorders(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableUpdateBorders"
  tableUpdateBorders
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableUpdateColumnsWeightFromWidth(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableUpdateColumnsWeightFromWidth"
  tableUpdateColumnsWeightFromWidth
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

-- C: void ImGui::TableUpdateLayout(ImGuiTable* table)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TableUpdateLayout"
  tableUpdateLayout
    :: (Ptr ImGuiTable) -- ^ table
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TeleportMousePos_wrap"
  c_teleportMousePos
    :: (Ptr ImVec2) -- ^ pos
    -> IO ()

teleportMousePos
  :: ImVec2 -- ^ pos
  -> IO ()
teleportMousePos pos =
  with pos $ \posPtr -> c_teleportMousePos posPtr

-- C: bool ImGui::TempInputIsActive(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TempInputIsActive"
  tempInputIsActive
    :: ImGuiID -- ^ id
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TempInputScalar_wrap"
  c_tempInputScalar
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> CString -- ^ label
    -> ImGuiDataType -- ^ data_type
    -> (Ptr ()) -- ^ p_data
    -> CString -- ^ format
    -> (Ptr ()) -- ^ p_clamp_min
    -> (Ptr ()) -- ^ p_clamp_max
    -> IO CBool

tempInputScalar
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> CString -- ^ label
  -> ImGuiDataType -- ^ data_type
  -> (Ptr ()) -- ^ p_data
  -> CString -- ^ format
  -> (Ptr ()) -- ^ p_clamp_min
  -> (Ptr ()) -- ^ p_clamp_max
  -> IO CBool
tempInputScalar bb id_ label data_type p_data format p_clamp_min p_clamp_max =
  with bb $ \bbPtr -> c_tempInputScalar bbPtr id_ label data_type p_data format p_clamp_min p_clamp_max

foreign import capi safe "DearImGuiWrappers.h ImGui_TempInputText_wrap"
  c_tempInputText
    :: (Ptr ImRect) -- ^ bb
    -> ImGuiID -- ^ id
    -> CString -- ^ label
    -> (Ptr CChar) -- ^ buf
    -> CSize -- ^ buf_size
    -> ImGuiInputTextFlags -- ^ flags
    -> ImGuiInputTextCallback -- ^ callback
    -> (Ptr ()) -- ^ user_data
    -> IO CBool

tempInputText
  :: ImRect -- ^ bb
  -> ImGuiID -- ^ id
  -> CString -- ^ label
  -> (Ptr CChar) -- ^ buf
  -> CSize -- ^ buf_size
  -> ImGuiInputTextFlags -- ^ flags
  -> ImGuiInputTextCallback -- ^ callback
  -> (Ptr ()) -- ^ user_data
  -> IO CBool
tempInputText bb id_ label buf buf_size flags callback user_data =
  with bb $ \bbPtr -> c_tempInputText bbPtr id_ label buf buf_size flags callback user_data

-- C: bool ImGui::TestKeyOwner(ImGuiKey key, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TestKeyOwner"
  testKeyOwner
    :: ImGuiKey -- ^ key
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: bool ImGui::TestShortcutRouting(ImGuiKeyChord key_chord, ImGuiID owner_id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TestShortcutRouting"
  testShortcutRouting
    :: ImGuiKeyChord -- ^ key_chord
    -> ImGuiID -- ^ owner_id
    -> IO CBool

-- C: void ImGui::TextAligned(float align_x, float width, const char* text)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TextAlignedUnformatted"
  textAlignedUnformatted
    :: Float -- ^ align_x
    -> Float -- ^ width
    -> CString -- ^ text
    -> IO ()

-- C: void ImGui::TextEx(const char* text, const char* text_end, ImGuiTextFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TextEx"
  textEx
    :: CString -- ^ text
    -> CString -- ^ text_end
    -> ImGuiTextFlags -- ^ flags
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TranslateWindowsInViewport_wrap"
  c_translateWindowsInViewport
    :: (Ptr ImGuiViewportP) -- ^ viewport
    -> (Ptr ImVec2) -- ^ old_pos
    -> (Ptr ImVec2) -- ^ new_pos
    -> (Ptr ImVec2) -- ^ old_size
    -> (Ptr ImVec2) -- ^ new_size
    -> IO ()

translateWindowsInViewport
  :: (Ptr ImGuiViewportP) -- ^ viewport
  -> ImVec2 -- ^ old_pos
  -> ImVec2 -- ^ new_pos
  -> ImVec2 -- ^ old_size
  -> ImVec2 -- ^ new_size
  -> IO ()
translateWindowsInViewport viewport old_pos new_pos old_size new_size =
  with old_pos $ \old_posPtr -> with new_pos $ \new_posPtr -> with old_size $ \old_sizePtr -> with new_size $ \new_sizePtr -> c_translateWindowsInViewport viewport old_posPtr new_posPtr old_sizePtr new_sizePtr

-- C: bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* label, const char* label_end)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TreeNodeBehavior"
  treeNodeBehavior
    :: ImGuiID -- ^ id
    -> ImGuiTreeNodeFlags -- ^ flags
    -> CString -- ^ label
    -> CString -- ^ label_end
    -> IO CBool

foreign import capi unsafe "DearImGuiWrappers.h ImGui_TreeNodeDrawLineToChildNode_wrap"
  c_treeNodeDrawLineToChildNode
    :: (Ptr ImVec2) -- ^ target_pos
    -> IO ()

treeNodeDrawLineToChildNode
  :: ImVec2 -- ^ target_pos
  -> IO ()
treeNodeDrawLineToChildNode target_pos =
  with target_pos $ \target_posPtr -> c_treeNodeDrawLineToChildNode target_posPtr

-- C: void ImGui::TreeNodeDrawLineToTreePop(const ImGuiTreeNodeStackData* data)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TreeNodeDrawLineToTreePop"
  treeNodeDrawLineToTreePop
    :: (Ptr ImGuiTreeNodeStackData) -- ^ data
    -> IO ()

-- C: void ImGui::TreeNodeSetOpen(ImGuiID storage_id, bool open)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TreeNodeSetOpen"
  treeNodeSetOpen
    :: ImGuiID -- ^ storage_id
    -> CBool -- ^ open
    -> IO ()

-- C: bool ImGui::TreeNodeUpdateNextOpen(ImGuiID storage_id, ImGuiTreeNodeFlags flags)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TreeNodeUpdateNextOpen"
  treeNodeUpdateNextOpen
    :: ImGuiID -- ^ storage_id
    -> ImGuiTreeNodeFlags -- ^ flags
    -> IO CBool

-- C: void ImGui::TreePushOverrideID(ImGuiID id)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_TreePushOverrideID"
  treePushOverrideID
    :: ImGuiID -- ^ id
    -> IO ()

-- C: int ImGui::TypingSelectFindBestLeadingMatch(ImGuiTypingSelectRequest* req, int items_count, const char* (*get_item_name_func)(void*, int) get_item_name_func, void* user_data)
foreign import capi safe "dcimgui_nodefaultargfunctions_internal.h ImGui_TypingSelectFindBestLeadingMatch"
  typingSelectFindBestLeadingMatch
    :: (Ptr ImGuiTypingSelectRequest) -- ^ req
    -> CInt -- ^ items_count
    -> (FunPtr ((Ptr ()) -> CInt -> IO CString)) -- ^ get_item_name_func
    -> (Ptr ()) -- ^ user_data
    -> IO CInt

-- C: int ImGui::TypingSelectFindMatch(ImGuiTypingSelectRequest* req, int items_count, const char* (*get_item_name_func)(void*, int) get_item_name_func, void* user_data, int nav_item_idx)
foreign import capi safe "dcimgui_nodefaultargfunctions_internal.h ImGui_TypingSelectFindMatch"
  typingSelectFindMatch
    :: (Ptr ImGuiTypingSelectRequest) -- ^ req
    -> CInt -- ^ items_count
    -> (FunPtr ((Ptr ()) -> CInt -> IO CString)) -- ^ get_item_name_func
    -> (Ptr ()) -- ^ user_data
    -> CInt -- ^ nav_item_idx
    -> IO CInt

-- C: int ImGui::TypingSelectFindNextSingleCharMatch(ImGuiTypingSelectRequest* req, int items_count, const char* (*get_item_name_func)(void*, int) get_item_name_func, void* user_data, int nav_item_idx)
foreign import capi safe "dcimgui_nodefaultargfunctions_internal.h ImGui_TypingSelectFindNextSingleCharMatch"
  typingSelectFindNextSingleCharMatch
    :: (Ptr ImGuiTypingSelectRequest) -- ^ req
    -> CInt -- ^ items_count
    -> (FunPtr ((Ptr ()) -> CInt -> IO CString)) -- ^ get_item_name_func
    -> (Ptr ()) -- ^ user_data
    -> CInt -- ^ nav_item_idx
    -> IO CInt

-- C: void ImGui::UnregisterFontAtlas(ImFontAtlas* atlas)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UnregisterFontAtlas"
  unregisterFontAtlas
    :: (Ptr ImFontAtlas) -- ^ atlas
    -> IO ()

-- C: void ImGui::UnregisterUserTexture(ImTextureData* tex)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UnregisterUserTexture"
  unregisterUserTexture
    :: (Ptr ImTextureData) -- ^ tex
    -> IO ()

-- C: void ImGui::UpdateCurrentFontSize(float restore_font_size_after_scaling)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UpdateCurrentFontSize"
  updateCurrentFontSize
    :: Float -- ^ restore_font_size_after_scaling
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_UpdateHoveredWindowAndCaptureFlags_wrap"
  c_updateHoveredWindowAndCaptureFlags
    :: (Ptr ImVec2) -- ^ mouse_pos
    -> IO ()

updateHoveredWindowAndCaptureFlags
  :: ImVec2 -- ^ mouse_pos
  -> IO ()
updateHoveredWindowAndCaptureFlags mouse_pos =
  with mouse_pos $ \mouse_posPtr -> c_updateHoveredWindowAndCaptureFlags mouse_posPtr

-- C: void ImGui::UpdateInputEvents(bool trickle_fast_inputs)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UpdateInputEvents"
  updateInputEvents
    :: CBool -- ^ trickle_fast_inputs
    -> IO ()

-- C: void ImGui::UpdateMouseMovingWindowEndFrame()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UpdateMouseMovingWindowEndFrame"
  updateMouseMovingWindowEndFrame :: IO ()

-- C: void ImGui::UpdateMouseMovingWindowNewFrame()
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UpdateMouseMovingWindowNewFrame"
  updateMouseMovingWindowNewFrame :: IO ()

-- C: void ImGui::UpdateWindowParentAndRootLinks(ImGuiWindow* window, ImGuiWindowFlags flags, ImGuiWindow* parent_window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UpdateWindowParentAndRootLinks"
  updateWindowParentAndRootLinks
    :: (Ptr ImGuiWindow) -- ^ window
    -> ImGuiWindowFlags -- ^ flags
    -> (Ptr ImGuiWindow) -- ^ parent_window
    -> IO ()

-- C: void ImGui::UpdateWindowSkipRefresh(ImGuiWindow* window)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGui_UpdateWindowSkipRefresh"
  updateWindowSkipRefresh
    :: (Ptr ImGuiWindow) -- ^ window
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGui_WindowPosAbsToRel_wrap"
  c_windowPosAbsToRel
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ p
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

windowPosAbsToRel
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImVec2 -- ^ p
  -> IO ImVec2
windowPosAbsToRel window p =
  with p $ \pPtr -> alloca $ \outPtr -> c_windowPosAbsToRel window pPtr outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_WindowPosRelToAbs_wrap"
  c_windowPosRelToAbs
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImVec2) -- ^ p
    -> (Ptr ImVec2) -- ^ out
    -> IO ()

windowPosRelToAbs
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImVec2 -- ^ p
  -> IO ImVec2
windowPosRelToAbs window p =
  with p $ \pPtr -> alloca $ \outPtr -> c_windowPosRelToAbs window pPtr outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_WindowRectAbsToRel_wrap"
  c_windowRectAbsToRel
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ r
    -> (Ptr ImRect) -- ^ out
    -> IO ()

windowRectAbsToRel
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImRect -- ^ r
  -> IO ImRect
windowRectAbsToRel window r =
  with r $ \rPtr -> alloca $ \outPtr -> c_windowRectAbsToRel window rPtr outPtr >> peek outPtr

foreign import capi unsafe "DearImGuiWrappers.h ImGui_WindowRectRelToAbs_wrap"
  c_windowRectRelToAbs
    :: (Ptr ImGuiWindow) -- ^ window
    -> (Ptr ImRect) -- ^ r
    -> (Ptr ImRect) -- ^ out
    -> IO ()

windowRectRelToAbs
  :: (Ptr ImGuiWindow) -- ^ window
  -> ImRect -- ^ r
  -> IO ImRect
windowRectRelToAbs window r =
  with r $ \rPtr -> alloca $ \outPtr -> c_windowRectRelToAbs window rPtr outPtr >> peek outPtr