packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID, ImU16)
import DearImGui.Raw.Internal (ImGuiKeyRoutingIndex)
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" "ImGuiKeyRoutingData" #-} ImGuiKeyRoutingData = ImGuiKeyRoutingData
  { nextEntryIndex :: ImGuiKeyRoutingIndex
  , mods :: ImU16
  , routingCurrScore :: ImU16
  , routingNextScore :: ImU16
  , routingCurr :: ImGuiID
  , routingNext :: ImGuiID
  }
  deriving (Eq, Show)
instance Storable ImGuiKeyRoutingData where
  sizeOf _    = #{size ImGuiKeyRoutingData}
  alignment _ = #{alignment ImGuiKeyRoutingData}
  peek p = ImGuiKeyRoutingData <$> #{peek ImGuiKeyRoutingData, NextEntryIndex} p <*> #{peek ImGuiKeyRoutingData, Mods} p <*> #{peek ImGuiKeyRoutingData, RoutingCurrScore} p <*> #{peek ImGuiKeyRoutingData, RoutingNextScore} p <*> #{peek ImGuiKeyRoutingData, RoutingCurr} p <*> #{peek ImGuiKeyRoutingData, RoutingNext} p
  poke p v = do
    #{poke ImGuiKeyRoutingData, NextEntryIndex} p v.nextEntryIndex
    #{poke ImGuiKeyRoutingData, Mods} p v.mods
    #{poke ImGuiKeyRoutingData, RoutingCurrScore} p v.routingCurrScore
    #{poke ImGuiKeyRoutingData, RoutingNextScore} p v.routingNextScore
    #{poke ImGuiKeyRoutingData, RoutingCurr} p v.routingCurr
    #{poke ImGuiKeyRoutingData, RoutingNext} p v.routingNext

instance HasField "nextEntryIndex" (Ptr ImGuiKeyRoutingData) (Ptr ImGuiKeyRoutingIndex) where
  getField = #{ptr ImGuiKeyRoutingData, NextEntryIndex}

instance HasField "mods" (Ptr ImGuiKeyRoutingData) (Ptr ImU16) where
  getField = #{ptr ImGuiKeyRoutingData, Mods}

instance HasField "routingCurrScore" (Ptr ImGuiKeyRoutingData) (Ptr ImU16) where
  getField = #{ptr ImGuiKeyRoutingData, RoutingCurrScore}

instance HasField "routingNextScore" (Ptr ImGuiKeyRoutingData) (Ptr ImU16) where
  getField = #{ptr ImGuiKeyRoutingData, RoutingNextScore}

instance HasField "routingCurr" (Ptr ImGuiKeyRoutingData) (Ptr ImGuiID) where
  getField = #{ptr ImGuiKeyRoutingData, RoutingCurr}

instance HasField "routingNext" (Ptr ImGuiKeyRoutingData) (Ptr ImGuiID) where
  getField = #{ptr ImGuiKeyRoutingData, RoutingNext}

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

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

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