packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImS8)
import DearImGui.Raw.Internal.Enums.ImGuiTypingSelectFlags (ImGuiTypingSelectFlags)
import Foreign.C.String (CString)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)

#include "dcimgui_nodefaultargfunctions_internal.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions_internal.h" "ImGuiTypingSelectRequest" #-} ImGuiTypingSelectRequest = ImGuiTypingSelectRequest
  { flags :: ImGuiTypingSelectFlags
  , searchBufferLen :: CInt
  , searchBuffer :: CString
  , selectRequest :: CBool
  , singleCharMode :: CBool
  , singleCharSize :: ImS8
  }
  deriving (Eq, Show)
instance Storable ImGuiTypingSelectRequest where
  sizeOf _    = #{size ImGuiTypingSelectRequest}
  alignment _ = #{alignment ImGuiTypingSelectRequest}
  peek p = ImGuiTypingSelectRequest <$> #{peek ImGuiTypingSelectRequest, Flags} p <*> #{peek ImGuiTypingSelectRequest, SearchBufferLen} p <*> #{peek ImGuiTypingSelectRequest, SearchBuffer} p <*> #{peek ImGuiTypingSelectRequest, SelectRequest} p <*> #{peek ImGuiTypingSelectRequest, SingleCharMode} p <*> #{peek ImGuiTypingSelectRequest, SingleCharSize} p
  poke p v = do
    #{poke ImGuiTypingSelectRequest, Flags} p v.flags
    #{poke ImGuiTypingSelectRequest, SearchBufferLen} p v.searchBufferLen
    #{poke ImGuiTypingSelectRequest, SearchBuffer} p v.searchBuffer
    #{poke ImGuiTypingSelectRequest, SelectRequest} p v.selectRequest
    #{poke ImGuiTypingSelectRequest, SingleCharMode} p v.singleCharMode
    #{poke ImGuiTypingSelectRequest, SingleCharSize} p v.singleCharSize

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

instance HasField "searchBufferLen" (Ptr ImGuiTypingSelectRequest) (Ptr CInt) where
  getField = #{ptr ImGuiTypingSelectRequest, SearchBufferLen}

instance HasField "searchBuffer" (Ptr ImGuiTypingSelectRequest) (Ptr CString) where
  getField = #{ptr ImGuiTypingSelectRequest, SearchBuffer}

instance HasField "selectRequest" (Ptr ImGuiTypingSelectRequest) (Ptr CBool) where
  getField = #{ptr ImGuiTypingSelectRequest, SelectRequest}

instance HasField "singleCharMode" (Ptr ImGuiTypingSelectRequest) (Ptr CBool) where
  getField = #{ptr ImGuiTypingSelectRequest, SingleCharMode}

instance HasField "singleCharSize" (Ptr ImGuiTypingSelectRequest) (Ptr ImS8) where
  getField = #{ptr ImGuiTypingSelectRequest, SingleCharSize}

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

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

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