30 lines
604 B
Haskell
30 lines
604 B
Haskell
module Language.Elna.Types
|
|
( Type(..)
|
|
, addressByteSize
|
|
, booleanType
|
|
, intType
|
|
) where
|
|
|
|
import Data.Text (Text)
|
|
import Data.Word (Word32)
|
|
import Language.Elna.Location (showArrayType)
|
|
|
|
addressByteSize :: Int
|
|
addressByteSize = 4
|
|
|
|
data Type
|
|
= PrimitiveType Text Int
|
|
| ArrayType Word32 Type
|
|
deriving Eq
|
|
|
|
instance Show Type
|
|
where
|
|
show (PrimitiveType typeName _) = show typeName
|
|
show (ArrayType elementCount typeName) = showArrayType elementCount typeName
|
|
|
|
intType :: Type
|
|
intType = PrimitiveType "int" 4
|
|
|
|
booleanType :: Type
|
|
booleanType = PrimitiveType "boolean" 1
|