packages feed

spirv-reflect-types-0.3: lib/Data/SpirV/Reflect/BlockVariable.hs

module Data.SpirV.Reflect.BlockVariable
  ( BlockVariable(..)
  , WordOffset(..)
  ) where

import Data.Text (Text)
import Data.Vector (Vector)
import GHC.Generics (Generic)
import Data.Word (Word32)

import Data.SpirV.Reflect.Enums qualified as Enums
import Data.SpirV.Reflect.Traits qualified as Traits
import Data.SpirV.Reflect.TypeDescription (TypeDescription)

data BlockVariable = BlockVariable
  { spirv_id         :: Maybe Word32
  , name             :: Maybe Text
  , offset           :: Word32
  , absolute_offset  :: Word32
  , size             :: Word32
  , padded_size      :: Word32
  , decorations      :: Enums.DecorationFlags
  , numeric          :: Traits.Numeric
  , array            :: Traits.Array
  , members          :: Vector BlockVariable
  , type_description :: Maybe TypeDescription
  , word_offset      :: Maybe WordOffset
  }
  deriving (Eq, Show, Generic)

newtype WordOffset = WordOffset
  { offset :: Word32
  }
  deriving (Eq, Show, Generic)