packages feed

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

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

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

module DearImGui.Raw.Internal.ImGuiSettingsHandler
  ( ImGuiSettingsHandler (..)
  , destroy
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID)
import DearImGui.Raw.ImGuiTextBuffer (ImGuiTextBuffer)
import DearImGui.Raw.Internal.ImGuiContext (ImGuiContext)
import DearImGui.Raw.Internal.ImGuiSettingsCleanupArgs (ImGuiSettingsCleanupArgs)
import Foreign.C.String (CString)
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_internal.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions_internal.h" "ImGuiSettingsHandler" #-} ImGuiSettingsHandler = ImGuiSettingsHandler
  { typeName :: CString
  , typeHash :: ImGuiID
  , clearAllFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> IO ())
  , readInitFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> IO ())
  , readOpenFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> CString -> IO (Ptr ()))
  , readLineFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> (Ptr ()) -> CString -> IO ())
  , applyAllFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> IO ())
  , writeAllFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> (Ptr ImGuiTextBuffer) -> IO ())
  , cleanupFn :: FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> (Ptr ImGuiSettingsCleanupArgs) -> IO ())
  , userData :: Ptr ()
  }
  deriving (Eq, Show)
instance Storable ImGuiSettingsHandler where
  sizeOf _    = #{size ImGuiSettingsHandler}
  alignment _ = #{alignment ImGuiSettingsHandler}
  peek p = ImGuiSettingsHandler <$> #{peek ImGuiSettingsHandler, TypeName} p <*> #{peek ImGuiSettingsHandler, TypeHash} p <*> #{peek ImGuiSettingsHandler, ClearAllFn} p <*> #{peek ImGuiSettingsHandler, ReadInitFn} p <*> #{peek ImGuiSettingsHandler, ReadOpenFn} p <*> #{peek ImGuiSettingsHandler, ReadLineFn} p <*> #{peek ImGuiSettingsHandler, ApplyAllFn} p <*> #{peek ImGuiSettingsHandler, WriteAllFn} p <*> #{peek ImGuiSettingsHandler, CleanupFn} p <*> #{peek ImGuiSettingsHandler, UserData} p
  poke p v = do
    #{poke ImGuiSettingsHandler, TypeName} p v.typeName
    #{poke ImGuiSettingsHandler, TypeHash} p v.typeHash
    #{poke ImGuiSettingsHandler, ClearAllFn} p v.clearAllFn
    #{poke ImGuiSettingsHandler, ReadInitFn} p v.readInitFn
    #{poke ImGuiSettingsHandler, ReadOpenFn} p v.readOpenFn
    #{poke ImGuiSettingsHandler, ReadLineFn} p v.readLineFn
    #{poke ImGuiSettingsHandler, ApplyAllFn} p v.applyAllFn
    #{poke ImGuiSettingsHandler, WriteAllFn} p v.writeAllFn
    #{poke ImGuiSettingsHandler, CleanupFn} p v.cleanupFn
    #{poke ImGuiSettingsHandler, UserData} p v.userData

instance HasField "typeName" (Ptr ImGuiSettingsHandler) (Ptr CString) where
  getField = #{ptr ImGuiSettingsHandler, TypeName}

instance HasField "typeHash" (Ptr ImGuiSettingsHandler) (Ptr ImGuiID) where
  getField = #{ptr ImGuiSettingsHandler, TypeHash}

instance HasField "clearAllFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> IO ()))) where
  getField = #{ptr ImGuiSettingsHandler, ClearAllFn}

instance HasField "readInitFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> IO ()))) where
  getField = #{ptr ImGuiSettingsHandler, ReadInitFn}

instance HasField "readOpenFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> CString -> IO (Ptr ())))) where
  getField = #{ptr ImGuiSettingsHandler, ReadOpenFn}

instance HasField "readLineFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> (Ptr ()) -> CString -> IO ()))) where
  getField = #{ptr ImGuiSettingsHandler, ReadLineFn}

instance HasField "applyAllFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> IO ()))) where
  getField = #{ptr ImGuiSettingsHandler, ApplyAllFn}

instance HasField "writeAllFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> (Ptr ImGuiTextBuffer) -> IO ()))) where
  getField = #{ptr ImGuiSettingsHandler, WriteAllFn}

instance HasField "cleanupFn" (Ptr ImGuiSettingsHandler) (Ptr (FunPtr ((Ptr ImGuiContext) -> (Ptr ImGuiSettingsHandler) -> (Ptr ImGuiSettingsCleanupArgs) -> IO ()))) where
  getField = #{ptr ImGuiSettingsHandler, CleanupFn}

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

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

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

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