packages feed

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

{-# LANGUAGE CApiFFI #-}

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

module DearImGui.Raw.Internal.ImSpan
  ( ImSpan (..)
  ) where

import Foreign.Ptr (Ptr, castPtr)
import Foreign.Storable (Storable (..))

#include "dcimgui_nodefaultargfunctions_internal.h"

-- | Generic counterpart to dear_bindings's flattened
-- @ImSpan_T@ instantiations. Two pointers delimiting the span.
data ImSpan t = ImSpan
  { dataPtr :: Ptr t
  , dataEnd :: Ptr t
  }
  deriving (Eq, Show)

instance Storable (ImSpan t) where
  sizeOf _    = #{size ImSpan_ImGuiTableCellData}
  alignment _ = #{alignment ImSpan_ImGuiTableCellData}
  peek p = ImSpan
    <$> (castPtr <$> #{peek ImSpan_ImGuiTableCellData, Data} p)
    <*> (castPtr <$> #{peek ImSpan_ImGuiTableCellData, DataEnd} p)
  poke p v = do
    #{poke ImSpan_ImGuiTableCellData, Data} p (castPtr v.dataPtr)
    #{poke ImSpan_ImGuiTableCellData, DataEnd} p (castPtr v.dataEnd)