packages feed

spirv-reflect-types-0.1: lib/Data/SpirV/Reflect/InterfaceVariable.hs

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

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

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

data InterfaceVariable = InterfaceVariable
  { spirv_id         :: Maybe Word32
  , name             :: Maybe Text
  , location         :: Word32
  , storage_class    :: Enums.StorageClass
  , semantic         :: Maybe Text
  , decoration_flags :: Enums.DecorationFlags
  , built_in         :: Enums.BuiltIn
  , numeric          :: Traits.Numeric
  , array            :: Traits.Array
  , members          :: Vector TypeDescription
  , format           :: Enums.Format
  , type_description :: Maybe TypeDescription
  , word_offset      :: WordOffset
  }
  deriving (Eq, Show, Generic)

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