packages feed

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

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

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

module DearImGui.Raw.ImGuiPlatformIO
  ( ImGuiPlatformIO (..)
  , clearPlatformHandlers
  , clearRendererHandlers
  , destroy
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImDrawCallback, ImU64, ImWchar)
import DearImGui.Raw.ImGuiContext (ImGuiContext)
import DearImGui.Raw.ImGuiPlatformImeData (ImGuiPlatformImeData)
import DearImGui.Raw.ImGuiPlatformMonitor (ImGuiPlatformMonitor)
import DearImGui.Raw.ImGuiViewport (ImGuiViewport)
import DearImGui.Raw.ImTextureData (ImTextureData)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVec4 (ImVec4)
import DearImGui.Raw.ImVector (ImVector)
import Foreign.C.String (CString)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr (FunPtr, Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)

#include "dcimgui_nodefaultargfunctions.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions.h" "ImGuiPlatformIO" #-} ImGuiPlatformIO = ImGuiPlatformIO
  { platform_GetClipboardTextFn :: FunPtr ((Ptr ImGuiContext) -> IO CString)
  , platform_SetClipboardTextFn :: FunPtr ((Ptr ImGuiContext) -> CString -> IO ())
  , platform_ClipboardUserData :: Ptr ()
  , platform_OpenInShellFn :: FunPtr ((Ptr ImGuiContext) -> CString -> IO CBool)
  , platform_OpenInShellUserData :: Ptr ()
  , platform_SetImeDataFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiViewport) -> (Ptr ImGuiPlatformImeData) -> IO ())
  , platform_ImeUserData :: Ptr ()
  , platform_LocaleDecimalPoint :: ImWchar
  , platform_SessionDate :: CInt
  , renderer_TextureMaxWidth :: CInt
  , renderer_TextureMaxHeight :: CInt
  , renderer_RenderState :: Ptr ()
  , drawCallback_ResetRenderState :: ImDrawCallback
  , drawCallback_SetSamplerLinear :: ImDrawCallback
  , drawCallback_SetSamplerNearest :: ImDrawCallback
  , drawCallback_SetSamplerFromTex :: ImDrawCallback
  , platform_CreateWindow :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , platform_DestroyWindow :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , platform_ShowWindow :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , platform_SetWindowPos :: FunPtr ((Ptr ImGuiViewport) -> ImVec2 -> IO ())
  , platform_GetWindowPos :: FunPtr ((Ptr ImGuiViewport) -> IO ImVec2)
  , platform_SetWindowSize :: FunPtr ((Ptr ImGuiViewport) -> ImVec2 -> IO ())
  , platform_GetWindowSize :: FunPtr ((Ptr ImGuiViewport) -> IO ImVec2)
  , platform_GetWindowFramebufferScale :: FunPtr ((Ptr ImGuiViewport) -> IO ImVec2)
  , platform_SetWindowFocus :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , platform_GetWindowFocus :: FunPtr ((Ptr ImGuiViewport) -> IO CBool)
  , platform_GetWindowMinimized :: FunPtr ((Ptr ImGuiViewport) -> IO CBool)
  , platform_SetWindowTitle :: FunPtr ((Ptr ImGuiViewport) -> CString -> IO ())
  , platform_SetWindowAlpha :: FunPtr ((Ptr ImGuiViewport) -> Float -> IO ())
  , platform_UpdateWindow :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , platform_RenderWindow :: FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ())
  , platform_SwapBuffers :: FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ())
  , platform_GetWindowDpiScale :: FunPtr ((Ptr ImGuiViewport) -> IO Float)
  , platform_OnChangedViewport :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , platform_GetWindowWorkAreaInsets :: FunPtr ((Ptr ImGuiViewport) -> IO ImVec4)
  , platform_CreateVkSurface :: FunPtr ((Ptr ImGuiViewport) -> ImU64 -> (Ptr ()) -> (Ptr ImU64) -> IO CInt)
  , renderer_CreateWindow :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , renderer_DestroyWindow :: FunPtr ((Ptr ImGuiViewport) -> IO ())
  , renderer_SetWindowSize :: FunPtr ((Ptr ImGuiViewport) -> ImVec2 -> IO ())
  , renderer_RenderWindow :: FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ())
  , renderer_SwapBuffers :: FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ())
  , monitors :: ImVector ImGuiPlatformMonitor
  , textures :: ImVector (Ptr ImTextureData)
  , viewports :: ImVector (Ptr ImGuiViewport)
  }
  deriving (Eq, Show)
instance Storable ImGuiPlatformIO where
  sizeOf _    = #{size ImGuiPlatformIO}
  alignment _ = #{alignment ImGuiPlatformIO}
  peek p = ImGuiPlatformIO <$> #{peek ImGuiPlatformIO, Platform_GetClipboardTextFn} p <*> #{peek ImGuiPlatformIO, Platform_SetClipboardTextFn} p <*> #{peek ImGuiPlatformIO, Platform_ClipboardUserData} p <*> #{peek ImGuiPlatformIO, Platform_OpenInShellFn} p <*> #{peek ImGuiPlatformIO, Platform_OpenInShellUserData} p <*> #{peek ImGuiPlatformIO, Platform_SetImeDataFn} p <*> #{peek ImGuiPlatformIO, Platform_ImeUserData} p <*> #{peek ImGuiPlatformIO, Platform_LocaleDecimalPoint} p <*> #{peek ImGuiPlatformIO, Platform_SessionDate} p <*> #{peek ImGuiPlatformIO, Renderer_TextureMaxWidth} p <*> #{peek ImGuiPlatformIO, Renderer_TextureMaxHeight} p <*> #{peek ImGuiPlatformIO, Renderer_RenderState} p <*> #{peek ImGuiPlatformIO, DrawCallback_ResetRenderState} p <*> #{peek ImGuiPlatformIO, DrawCallback_SetSamplerLinear} p <*> #{peek ImGuiPlatformIO, DrawCallback_SetSamplerNearest} p <*> #{peek ImGuiPlatformIO, DrawCallback_SetSamplerFromTex} p <*> #{peek ImGuiPlatformIO, Platform_CreateWindow} p <*> #{peek ImGuiPlatformIO, Platform_DestroyWindow} p <*> #{peek ImGuiPlatformIO, Platform_ShowWindow} p <*> #{peek ImGuiPlatformIO, Platform_SetWindowPos} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowPos} p <*> #{peek ImGuiPlatformIO, Platform_SetWindowSize} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowSize} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowFramebufferScale} p <*> #{peek ImGuiPlatformIO, Platform_SetWindowFocus} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowFocus} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowMinimized} p <*> #{peek ImGuiPlatformIO, Platform_SetWindowTitle} p <*> #{peek ImGuiPlatformIO, Platform_SetWindowAlpha} p <*> #{peek ImGuiPlatformIO, Platform_UpdateWindow} p <*> #{peek ImGuiPlatformIO, Platform_RenderWindow} p <*> #{peek ImGuiPlatformIO, Platform_SwapBuffers} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowDpiScale} p <*> #{peek ImGuiPlatformIO, Platform_OnChangedViewport} p <*> #{peek ImGuiPlatformIO, Platform_GetWindowWorkAreaInsets} p <*> #{peek ImGuiPlatformIO, Platform_CreateVkSurface} p <*> #{peek ImGuiPlatformIO, Renderer_CreateWindow} p <*> #{peek ImGuiPlatformIO, Renderer_DestroyWindow} p <*> #{peek ImGuiPlatformIO, Renderer_SetWindowSize} p <*> #{peek ImGuiPlatformIO, Renderer_RenderWindow} p <*> #{peek ImGuiPlatformIO, Renderer_SwapBuffers} p <*> #{peek ImGuiPlatformIO, Monitors} p <*> #{peek ImGuiPlatformIO, Textures} p <*> #{peek ImGuiPlatformIO, Viewports} p
  poke p v = do
    #{poke ImGuiPlatformIO, Platform_GetClipboardTextFn} p v.platform_GetClipboardTextFn
    #{poke ImGuiPlatformIO, Platform_SetClipboardTextFn} p v.platform_SetClipboardTextFn
    #{poke ImGuiPlatformIO, Platform_ClipboardUserData} p v.platform_ClipboardUserData
    #{poke ImGuiPlatformIO, Platform_OpenInShellFn} p v.platform_OpenInShellFn
    #{poke ImGuiPlatformIO, Platform_OpenInShellUserData} p v.platform_OpenInShellUserData
    #{poke ImGuiPlatformIO, Platform_SetImeDataFn} p v.platform_SetImeDataFn
    #{poke ImGuiPlatformIO, Platform_ImeUserData} p v.platform_ImeUserData
    #{poke ImGuiPlatformIO, Platform_LocaleDecimalPoint} p v.platform_LocaleDecimalPoint
    #{poke ImGuiPlatformIO, Platform_SessionDate} p v.platform_SessionDate
    #{poke ImGuiPlatformIO, Renderer_TextureMaxWidth} p v.renderer_TextureMaxWidth
    #{poke ImGuiPlatformIO, Renderer_TextureMaxHeight} p v.renderer_TextureMaxHeight
    #{poke ImGuiPlatformIO, Renderer_RenderState} p v.renderer_RenderState
    #{poke ImGuiPlatformIO, DrawCallback_ResetRenderState} p v.drawCallback_ResetRenderState
    #{poke ImGuiPlatformIO, DrawCallback_SetSamplerLinear} p v.drawCallback_SetSamplerLinear
    #{poke ImGuiPlatformIO, DrawCallback_SetSamplerNearest} p v.drawCallback_SetSamplerNearest
    #{poke ImGuiPlatformIO, DrawCallback_SetSamplerFromTex} p v.drawCallback_SetSamplerFromTex
    #{poke ImGuiPlatformIO, Platform_CreateWindow} p v.platform_CreateWindow
    #{poke ImGuiPlatformIO, Platform_DestroyWindow} p v.platform_DestroyWindow
    #{poke ImGuiPlatformIO, Platform_ShowWindow} p v.platform_ShowWindow
    #{poke ImGuiPlatformIO, Platform_SetWindowPos} p v.platform_SetWindowPos
    #{poke ImGuiPlatformIO, Platform_GetWindowPos} p v.platform_GetWindowPos
    #{poke ImGuiPlatformIO, Platform_SetWindowSize} p v.platform_SetWindowSize
    #{poke ImGuiPlatformIO, Platform_GetWindowSize} p v.platform_GetWindowSize
    #{poke ImGuiPlatformIO, Platform_GetWindowFramebufferScale} p v.platform_GetWindowFramebufferScale
    #{poke ImGuiPlatformIO, Platform_SetWindowFocus} p v.platform_SetWindowFocus
    #{poke ImGuiPlatformIO, Platform_GetWindowFocus} p v.platform_GetWindowFocus
    #{poke ImGuiPlatformIO, Platform_GetWindowMinimized} p v.platform_GetWindowMinimized
    #{poke ImGuiPlatformIO, Platform_SetWindowTitle} p v.platform_SetWindowTitle
    #{poke ImGuiPlatformIO, Platform_SetWindowAlpha} p v.platform_SetWindowAlpha
    #{poke ImGuiPlatformIO, Platform_UpdateWindow} p v.platform_UpdateWindow
    #{poke ImGuiPlatformIO, Platform_RenderWindow} p v.platform_RenderWindow
    #{poke ImGuiPlatformIO, Platform_SwapBuffers} p v.platform_SwapBuffers
    #{poke ImGuiPlatformIO, Platform_GetWindowDpiScale} p v.platform_GetWindowDpiScale
    #{poke ImGuiPlatformIO, Platform_OnChangedViewport} p v.platform_OnChangedViewport
    #{poke ImGuiPlatformIO, Platform_GetWindowWorkAreaInsets} p v.platform_GetWindowWorkAreaInsets
    #{poke ImGuiPlatformIO, Platform_CreateVkSurface} p v.platform_CreateVkSurface
    #{poke ImGuiPlatformIO, Renderer_CreateWindow} p v.renderer_CreateWindow
    #{poke ImGuiPlatformIO, Renderer_DestroyWindow} p v.renderer_DestroyWindow
    #{poke ImGuiPlatformIO, Renderer_SetWindowSize} p v.renderer_SetWindowSize
    #{poke ImGuiPlatformIO, Renderer_RenderWindow} p v.renderer_RenderWindow
    #{poke ImGuiPlatformIO, Renderer_SwapBuffers} p v.renderer_SwapBuffers
    #{poke ImGuiPlatformIO, Monitors} p v.monitors
    #{poke ImGuiPlatformIO, Textures} p v.textures
    #{poke ImGuiPlatformIO, Viewports} p v.viewports

instance HasField "platform_GetClipboardTextFn" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiContext) -> IO CString))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetClipboardTextFn}

instance HasField "platform_SetClipboardTextFn" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiContext) -> CString -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetClipboardTextFn}

instance HasField "platform_ClipboardUserData" (Ptr ImGuiPlatformIO) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiPlatformIO, Platform_ClipboardUserData}

instance HasField "platform_OpenInShellFn" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiContext) -> CString -> IO CBool))) where
  getField = #{ptr ImGuiPlatformIO, Platform_OpenInShellFn}

instance HasField "platform_OpenInShellUserData" (Ptr ImGuiPlatformIO) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiPlatformIO, Platform_OpenInShellUserData}

instance HasField "platform_SetImeDataFn" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiViewport) -> (Ptr ImGuiPlatformImeData) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetImeDataFn}

instance HasField "platform_ImeUserData" (Ptr ImGuiPlatformIO) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiPlatformIO, Platform_ImeUserData}

instance HasField "platform_LocaleDecimalPoint" (Ptr ImGuiPlatformIO) (Ptr ImWchar) where
  getField = #{ptr ImGuiPlatformIO, Platform_LocaleDecimalPoint}

instance HasField "platform_SessionDate" (Ptr ImGuiPlatformIO) (Ptr CInt) where
  getField = #{ptr ImGuiPlatformIO, Platform_SessionDate}

instance HasField "renderer_TextureMaxWidth" (Ptr ImGuiPlatformIO) (Ptr CInt) where
  getField = #{ptr ImGuiPlatformIO, Renderer_TextureMaxWidth}

instance HasField "renderer_TextureMaxHeight" (Ptr ImGuiPlatformIO) (Ptr CInt) where
  getField = #{ptr ImGuiPlatformIO, Renderer_TextureMaxHeight}

instance HasField "renderer_RenderState" (Ptr ImGuiPlatformIO) (Ptr (Ptr ())) where
  getField = #{ptr ImGuiPlatformIO, Renderer_RenderState}

instance HasField "drawCallback_ResetRenderState" (Ptr ImGuiPlatformIO) (Ptr ImDrawCallback) where
  getField = #{ptr ImGuiPlatformIO, DrawCallback_ResetRenderState}

instance HasField "drawCallback_SetSamplerLinear" (Ptr ImGuiPlatformIO) (Ptr ImDrawCallback) where
  getField = #{ptr ImGuiPlatformIO, DrawCallback_SetSamplerLinear}

instance HasField "drawCallback_SetSamplerNearest" (Ptr ImGuiPlatformIO) (Ptr ImDrawCallback) where
  getField = #{ptr ImGuiPlatformIO, DrawCallback_SetSamplerNearest}

instance HasField "drawCallback_SetSamplerFromTex" (Ptr ImGuiPlatformIO) (Ptr ImDrawCallback) where
  getField = #{ptr ImGuiPlatformIO, DrawCallback_SetSamplerFromTex}

instance HasField "platform_CreateWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_CreateWindow}

instance HasField "platform_DestroyWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_DestroyWindow}

instance HasField "platform_ShowWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_ShowWindow}

instance HasField "platform_SetWindowPos" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> ImVec2 -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetWindowPos}

instance HasField "platform_GetWindowPos" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ImVec2))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowPos}

instance HasField "platform_SetWindowSize" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> ImVec2 -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetWindowSize}

instance HasField "platform_GetWindowSize" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ImVec2))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowSize}

instance HasField "platform_GetWindowFramebufferScale" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ImVec2))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowFramebufferScale}

instance HasField "platform_SetWindowFocus" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetWindowFocus}

instance HasField "platform_GetWindowFocus" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO CBool))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowFocus}

instance HasField "platform_GetWindowMinimized" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO CBool))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowMinimized}

instance HasField "platform_SetWindowTitle" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> CString -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetWindowTitle}

instance HasField "platform_SetWindowAlpha" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> Float -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SetWindowAlpha}

instance HasField "platform_UpdateWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_UpdateWindow}

instance HasField "platform_RenderWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_RenderWindow}

instance HasField "platform_SwapBuffers" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_SwapBuffers}

instance HasField "platform_GetWindowDpiScale" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO Float))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowDpiScale}

instance HasField "platform_OnChangedViewport" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Platform_OnChangedViewport}

instance HasField "platform_GetWindowWorkAreaInsets" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ImVec4))) where
  getField = #{ptr ImGuiPlatformIO, Platform_GetWindowWorkAreaInsets}

instance HasField "platform_CreateVkSurface" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> ImU64 -> (Ptr ()) -> (Ptr ImU64) -> IO CInt))) where
  getField = #{ptr ImGuiPlatformIO, Platform_CreateVkSurface}

instance HasField "renderer_CreateWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Renderer_CreateWindow}

instance HasField "renderer_DestroyWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Renderer_DestroyWindow}

instance HasField "renderer_SetWindowSize" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> ImVec2 -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Renderer_SetWindowSize}

instance HasField "renderer_RenderWindow" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Renderer_RenderWindow}

instance HasField "renderer_SwapBuffers" (Ptr ImGuiPlatformIO) (Ptr (FunPtr ((Ptr ImGuiViewport) -> (Ptr ()) -> IO ()))) where
  getField = #{ptr ImGuiPlatformIO, Renderer_SwapBuffers}

instance HasField "monitors" (Ptr ImGuiPlatformIO) (Ptr (ImVector ImGuiPlatformMonitor)) where
  getField = #{ptr ImGuiPlatformIO, Monitors}

instance HasField "textures" (Ptr ImGuiPlatformIO) (Ptr (ImVector (Ptr ImTextureData))) where
  getField = #{ptr ImGuiPlatformIO, Textures}

instance HasField "viewports" (Ptr ImGuiPlatformIO) (Ptr (ImVector (Ptr ImGuiViewport))) where
  getField = #{ptr ImGuiPlatformIO, Viewports}

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

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

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

-- functions

-- C: void ClearPlatformHandlers(ImGuiPlatformIO* self)
foreign import capi safe "dcimgui_nodefaultargfunctions.h ImGuiPlatformIO_ClearPlatformHandlers"
  clearPlatformHandlers
    :: (Ptr ImGuiPlatformIO) -- ^ self
    -> IO ()

-- C: void ClearRendererHandlers(ImGuiPlatformIO* self)
foreign import capi safe "dcimgui_nodefaultargfunctions.h ImGuiPlatformIO_ClearRendererHandlers"
  clearRendererHandlers
    :: (Ptr ImGuiPlatformIO) -- ^ self
    -> IO ()