packages feed

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

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

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

module DearImGui.Raw.ImTextureRef
  ( ImTextureRef (..)
  , destroy
  , getTexID
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImTextureID)
import {-# SOURCE #-} DearImGui.Raw.ImTextureData (ImTextureData)
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.h"

-- structs (opaque)

-- by-value
data {-# CTYPE "dcimgui_nodefaultargfunctions.h" "ImTextureRef" #-} ImTextureRef = ImTextureRef
  { _TexData :: Ptr ImTextureData
  , _TexID :: ImTextureID
  }
  deriving (Eq, Show)
instance Storable ImTextureRef where
  sizeOf _    = #{size ImTextureRef}
  alignment _ = #{alignment ImTextureRef}
  peek p = ImTextureRef <$> #{peek ImTextureRef, _TexData} p <*> #{peek ImTextureRef, _TexID} p
  poke p v = do
    #{poke ImTextureRef, _TexData} p v._TexData
    #{poke ImTextureRef, _TexID} p v._TexID

instance HasField "_TexData" (Ptr ImTextureRef) (Ptr (Ptr ImTextureData)) where
  getField = #{ptr ImTextureRef, _TexData}

instance HasField "_TexID" (Ptr ImTextureRef) (Ptr ImTextureID) where
  getField = #{ptr ImTextureRef, _TexID}

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

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

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

-- functions

-- C: ImTextureID GetTexID(const ImTextureRef* self)
foreign import capi unsafe "dcimgui_nodefaultargfunctions.h ImTextureRef_GetTexID"
  getTexID
    :: (Ptr ImTextureRef) -- ^ self
    -> IO ImTextureID