packages feed

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

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

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

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

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID, ImGuiSelectionUserData)
import DearImGui.Raw.Enums.ImGuiItemFlags (ImGuiItemFlags)
import {-# SOURCE #-} DearImGui.Raw.Internal.ImGuiWindow (ImGuiWindow)
import DearImGui.Raw.Internal.ImRect (ImRect)
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" "ImGuiNavItemData" #-} ImGuiNavItemData = ImGuiNavItemData
  { window :: Ptr ImGuiWindow
  , iD :: ImGuiID
  , focusScopeId :: ImGuiID
  , rectRel :: ImRect
  , itemFlags :: ImGuiItemFlags
  , distBox :: Float
  , distCenter :: Float
  , distAxial :: Float
  , selectionUserData :: ImGuiSelectionUserData
  }
  deriving (Eq, Show)
instance Storable ImGuiNavItemData where
  sizeOf _    = #{size ImGuiNavItemData}
  alignment _ = #{alignment ImGuiNavItemData}
  peek p = ImGuiNavItemData <$> #{peek ImGuiNavItemData, Window} p <*> #{peek ImGuiNavItemData, ID} p <*> #{peek ImGuiNavItemData, FocusScopeId} p <*> #{peek ImGuiNavItemData, RectRel} p <*> #{peek ImGuiNavItemData, ItemFlags} p <*> #{peek ImGuiNavItemData, DistBox} p <*> #{peek ImGuiNavItemData, DistCenter} p <*> #{peek ImGuiNavItemData, DistAxial} p <*> #{peek ImGuiNavItemData, SelectionUserData} p
  poke p v = do
    #{poke ImGuiNavItemData, Window} p v.window
    #{poke ImGuiNavItemData, ID} p v.iD
    #{poke ImGuiNavItemData, FocusScopeId} p v.focusScopeId
    #{poke ImGuiNavItemData, RectRel} p v.rectRel
    #{poke ImGuiNavItemData, ItemFlags} p v.itemFlags
    #{poke ImGuiNavItemData, DistBox} p v.distBox
    #{poke ImGuiNavItemData, DistCenter} p v.distCenter
    #{poke ImGuiNavItemData, DistAxial} p v.distAxial
    #{poke ImGuiNavItemData, SelectionUserData} p v.selectionUserData

instance HasField "window" (Ptr ImGuiNavItemData) (Ptr (Ptr ImGuiWindow)) where
  getField = #{ptr ImGuiNavItemData, Window}

instance HasField "iD" (Ptr ImGuiNavItemData) (Ptr ImGuiID) where
  getField = #{ptr ImGuiNavItemData, ID}

instance HasField "focusScopeId" (Ptr ImGuiNavItemData) (Ptr ImGuiID) where
  getField = #{ptr ImGuiNavItemData, FocusScopeId}

instance HasField "rectRel" (Ptr ImGuiNavItemData) (Ptr ImRect) where
  getField = #{ptr ImGuiNavItemData, RectRel}

instance HasField "itemFlags" (Ptr ImGuiNavItemData) (Ptr ImGuiItemFlags) where
  getField = #{ptr ImGuiNavItemData, ItemFlags}

instance HasField "distBox" (Ptr ImGuiNavItemData) (Ptr Float) where
  getField = #{ptr ImGuiNavItemData, DistBox}

instance HasField "distCenter" (Ptr ImGuiNavItemData) (Ptr Float) where
  getField = #{ptr ImGuiNavItemData, DistCenter}

instance HasField "distAxial" (Ptr ImGuiNavItemData) (Ptr Float) where
  getField = #{ptr ImGuiNavItemData, DistAxial}

instance HasField "selectionUserData" (Ptr ImGuiNavItemData) (Ptr ImGuiSelectionUserData) where
  getField = #{ptr ImGuiNavItemData, SelectionUserData}

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

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

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

-- functions

-- C: void Clear(ImGuiNavItemData* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions_internal.h ImGuiNavItemData_Clear"
  clear
    :: (Ptr ImGuiNavItemData) -- ^ self
    -> IO ()