packages feed

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

module Data.SpirV.Reflect.TypeDescription 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

data TypeDescription = TypeDescription
  { id                 :: Maybe Word32
  , op                 :: Maybe Enums.Op
  , type_name          :: Maybe Text
  , struct_member_name :: Maybe Text
  , storage_class      :: Enums.StorageClass
  , type_flags         :: Enums.TypeFlags
  , traits             :: Maybe Traits
  , members            :: Vector TypeDescription
  }
  deriving (Eq, Show, Generic)

data Traits = Traits
  { numeric :: Traits.Numeric
  , image   :: Traits.Image
  , array   :: Traits.Array
  }
  deriving (Eq, Show, Generic)