module FlatBuffers.Internal.Compiler.ValidSyntaxTree
(
FlatBuffers.Internal.Compiler.SyntaxTree.Namespace(..)
, FlatBuffers.Internal.Compiler.SyntaxTree.Ident(..)
, FlatBuffers.Internal.Compiler.SyntaxTree.TypeRef(..)
, FlatBuffers.Internal.Compiler.SyntaxTree.HasIdent(..)
, EnumDecl(..)
, EnumVal(..)
, EnumType(..)
, StructDecl(..)
, StructField(..)
, StructFieldType(..)
, DefaultVal(..)
, Required(..)
, IsRoot(..)
, TableDecl(..)
, TableField(..)
, TableFieldType(..)
, VectorElementType(..)
, UnionDecl(..)
, UnionVal(..)
) where
import Data.Bits (Bits)
import Data.List.NonEmpty (NonEmpty)
import Data.Scientific (Scientific)
import Data.String (IsString(..))
import Data.Text (Text)
import Data.Word
import FlatBuffers.Internal.Compiler.SyntaxTree
(HasIdent(..), Ident(..), Namespace(..), TypeRef(..))
import FlatBuffers.Internal.Types
instance HasIdent EnumDecl where getIdent :: EnumDecl -> Ident
getIdent = EnumDecl -> Ident
enumIdent
instance HasIdent EnumVal where getIdent :: EnumVal -> Ident
getIdent = EnumVal -> Ident
enumValIdent
instance HasIdent StructDecl where getIdent :: StructDecl -> Ident
getIdent = StructDecl -> Ident
structIdent
instance HasIdent StructField where getIdent :: StructField -> Ident
getIdent = StructField -> Ident
structFieldIdent
instance HasIdent TableDecl where getIdent :: TableDecl -> Ident
getIdent = TableDecl -> Ident
tableIdent
instance HasIdent TableField where getIdent :: TableField -> Ident
getIdent = TableField -> Ident
tableFieldIdent
instance HasIdent UnionDecl where getIdent :: UnionDecl -> Ident
getIdent = UnionDecl -> Ident
unionIdent
instance HasIdent UnionVal where getIdent :: UnionVal -> Ident
getIdent = UnionVal -> Ident
unionValIdent
data EnumDecl = EnumDecl
{ EnumDecl -> Ident
enumIdent :: !Ident
, EnumDecl -> EnumType
enumType :: !EnumType
, EnumDecl -> Bool
enumBitFlags :: !Bool
, EnumDecl -> NonEmpty EnumVal
enumVals :: !(NonEmpty EnumVal)
} deriving (Int -> EnumDecl -> ShowS
[EnumDecl] -> ShowS
EnumDecl -> String
(Int -> EnumDecl -> ShowS)
-> (EnumDecl -> String) -> ([EnumDecl] -> ShowS) -> Show EnumDecl
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EnumDecl -> ShowS
showsPrec :: Int -> EnumDecl -> ShowS
$cshow :: EnumDecl -> String
show :: EnumDecl -> String
$cshowList :: [EnumDecl] -> ShowS
showList :: [EnumDecl] -> ShowS
Show, EnumDecl -> EnumDecl -> Bool
(EnumDecl -> EnumDecl -> Bool)
-> (EnumDecl -> EnumDecl -> Bool) -> Eq EnumDecl
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EnumDecl -> EnumDecl -> Bool
== :: EnumDecl -> EnumDecl -> Bool
$c/= :: EnumDecl -> EnumDecl -> Bool
/= :: EnumDecl -> EnumDecl -> Bool
Eq)
data EnumVal = EnumVal
{ EnumVal -> Ident
enumValIdent :: !Ident
, EnumVal -> Integer
enumValInt :: !Integer
} deriving (Int -> EnumVal -> ShowS
[EnumVal] -> ShowS
EnumVal -> String
(Int -> EnumVal -> ShowS)
-> (EnumVal -> String) -> ([EnumVal] -> ShowS) -> Show EnumVal
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EnumVal -> ShowS
showsPrec :: Int -> EnumVal -> ShowS
$cshow :: EnumVal -> String
show :: EnumVal -> String
$cshowList :: [EnumVal] -> ShowS
showList :: [EnumVal] -> ShowS
Show, EnumVal -> EnumVal -> Bool
(EnumVal -> EnumVal -> Bool)
-> (EnumVal -> EnumVal -> Bool) -> Eq EnumVal
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EnumVal -> EnumVal -> Bool
== :: EnumVal -> EnumVal -> Bool
$c/= :: EnumVal -> EnumVal -> Bool
/= :: EnumVal -> EnumVal -> Bool
Eq)
data EnumType
= EInt8
| EInt16
| EInt32
| EInt64
| EWord8
| EWord16
| EWord32
| EWord64
deriving (Int -> EnumType -> ShowS
[EnumType] -> ShowS
EnumType -> String
(Int -> EnumType -> ShowS)
-> (EnumType -> String) -> ([EnumType] -> ShowS) -> Show EnumType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EnumType -> ShowS
showsPrec :: Int -> EnumType -> ShowS
$cshow :: EnumType -> String
show :: EnumType -> String
$cshowList :: [EnumType] -> ShowS
showList :: [EnumType] -> ShowS
Show, EnumType -> EnumType -> Bool
(EnumType -> EnumType -> Bool)
-> (EnumType -> EnumType -> Bool) -> Eq EnumType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EnumType -> EnumType -> Bool
== :: EnumType -> EnumType -> Bool
$c/= :: EnumType -> EnumType -> Bool
/= :: EnumType -> EnumType -> Bool
Eq)
data StructDecl = StructDecl
{ StructDecl -> Ident
structIdent :: !Ident
, StructDecl -> Alignment
structAlignment :: !Alignment
, StructDecl -> InlineSize
structSize :: !InlineSize
, StructDecl -> NonEmpty StructField
structFields :: !(NonEmpty StructField)
} deriving (Int -> StructDecl -> ShowS
[StructDecl] -> ShowS
StructDecl -> String
(Int -> StructDecl -> ShowS)
-> (StructDecl -> String)
-> ([StructDecl] -> ShowS)
-> Show StructDecl
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StructDecl -> ShowS
showsPrec :: Int -> StructDecl -> ShowS
$cshow :: StructDecl -> String
show :: StructDecl -> String
$cshowList :: [StructDecl] -> ShowS
showList :: [StructDecl] -> ShowS
Show, StructDecl -> StructDecl -> Bool
(StructDecl -> StructDecl -> Bool)
-> (StructDecl -> StructDecl -> Bool) -> Eq StructDecl
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StructDecl -> StructDecl -> Bool
== :: StructDecl -> StructDecl -> Bool
$c/= :: StructDecl -> StructDecl -> Bool
/= :: StructDecl -> StructDecl -> Bool
Eq)
data StructField = StructField
{ StructField -> Ident
structFieldIdent :: !Ident
, StructField -> Word8
structFieldPadding :: !Word8
, StructField -> Word16
structFieldOffset :: !Word16
, StructField -> StructFieldType
structFieldType :: !StructFieldType
} deriving (Int -> StructField -> ShowS
[StructField] -> ShowS
StructField -> String
(Int -> StructField -> ShowS)
-> (StructField -> String)
-> ([StructField] -> ShowS)
-> Show StructField
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StructField -> ShowS
showsPrec :: Int -> StructField -> ShowS
$cshow :: StructField -> String
show :: StructField -> String
$cshowList :: [StructField] -> ShowS
showList :: [StructField] -> ShowS
Show, StructField -> StructField -> Bool
(StructField -> StructField -> Bool)
-> (StructField -> StructField -> Bool) -> Eq StructField
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StructField -> StructField -> Bool
== :: StructField -> StructField -> Bool
$c/= :: StructField -> StructField -> Bool
/= :: StructField -> StructField -> Bool
Eq)
data StructFieldType
= SInt8
| SInt16
| SInt32
| SInt64
| SWord8
| SWord16
| SWord32
| SWord64
| SFloat
| SDouble
| SBool
| SEnum
!TypeRef
!EnumType
| SStruct !(Namespace, StructDecl)
deriving (Int -> StructFieldType -> ShowS
[StructFieldType] -> ShowS
StructFieldType -> String
(Int -> StructFieldType -> ShowS)
-> (StructFieldType -> String)
-> ([StructFieldType] -> ShowS)
-> Show StructFieldType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StructFieldType -> ShowS
showsPrec :: Int -> StructFieldType -> ShowS
$cshow :: StructFieldType -> String
show :: StructFieldType -> String
$cshowList :: [StructFieldType] -> ShowS
showList :: [StructFieldType] -> ShowS
Show, StructFieldType -> StructFieldType -> Bool
(StructFieldType -> StructFieldType -> Bool)
-> (StructFieldType -> StructFieldType -> Bool)
-> Eq StructFieldType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StructFieldType -> StructFieldType -> Bool
== :: StructFieldType -> StructFieldType -> Bool
$c/= :: StructFieldType -> StructFieldType -> Bool
/= :: StructFieldType -> StructFieldType -> Bool
Eq)
newtype DefaultVal a = DefaultVal a
deriving newtype (DefaultVal a -> DefaultVal a -> Bool
(DefaultVal a -> DefaultVal a -> Bool)
-> (DefaultVal a -> DefaultVal a -> Bool) -> Eq (DefaultVal a)
forall a. Eq a => DefaultVal a -> DefaultVal a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => DefaultVal a -> DefaultVal a -> Bool
== :: DefaultVal a -> DefaultVal a -> Bool
$c/= :: forall a. Eq a => DefaultVal a -> DefaultVal a -> Bool
/= :: DefaultVal a -> DefaultVal a -> Bool
Eq, Int -> DefaultVal a -> ShowS
[DefaultVal a] -> ShowS
DefaultVal a -> String
(Int -> DefaultVal a -> ShowS)
-> (DefaultVal a -> String)
-> ([DefaultVal a] -> ShowS)
-> Show (DefaultVal a)
forall a. Show a => Int -> DefaultVal a -> ShowS
forall a. Show a => [DefaultVal a] -> ShowS
forall a. Show a => DefaultVal a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> DefaultVal a -> ShowS
showsPrec :: Int -> DefaultVal a -> ShowS
$cshow :: forall a. Show a => DefaultVal a -> String
show :: DefaultVal a -> String
$cshowList :: forall a. Show a => [DefaultVal a] -> ShowS
showList :: [DefaultVal a] -> ShowS
Show, Integer -> DefaultVal a
DefaultVal a -> DefaultVal a
DefaultVal a -> DefaultVal a -> DefaultVal a
(DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a)
-> (Integer -> DefaultVal a)
-> Num (DefaultVal a)
forall a. Num a => Integer -> DefaultVal a
forall a. Num a => DefaultVal a -> DefaultVal a
forall a. Num a => DefaultVal a -> DefaultVal a -> DefaultVal a
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: forall a. Num a => DefaultVal a -> DefaultVal a -> DefaultVal a
+ :: DefaultVal a -> DefaultVal a -> DefaultVal a
$c- :: forall a. Num a => DefaultVal a -> DefaultVal a -> DefaultVal a
- :: DefaultVal a -> DefaultVal a -> DefaultVal a
$c* :: forall a. Num a => DefaultVal a -> DefaultVal a -> DefaultVal a
* :: DefaultVal a -> DefaultVal a -> DefaultVal a
$cnegate :: forall a. Num a => DefaultVal a -> DefaultVal a
negate :: DefaultVal a -> DefaultVal a
$cabs :: forall a. Num a => DefaultVal a -> DefaultVal a
abs :: DefaultVal a -> DefaultVal a
$csignum :: forall a. Num a => DefaultVal a -> DefaultVal a
signum :: DefaultVal a -> DefaultVal a
$cfromInteger :: forall a. Num a => Integer -> DefaultVal a
fromInteger :: Integer -> DefaultVal a
Num, String -> DefaultVal a
(String -> DefaultVal a) -> IsString (DefaultVal a)
forall a. IsString a => String -> DefaultVal a
forall a. (String -> a) -> IsString a
$cfromString :: forall a. IsString a => String -> DefaultVal a
fromString :: String -> DefaultVal a
IsString, Eq (DefaultVal a)
Eq (DefaultVal a) =>
(DefaultVal a -> DefaultVal a -> Ordering)
-> (DefaultVal a -> DefaultVal a -> Bool)
-> (DefaultVal a -> DefaultVal a -> Bool)
-> (DefaultVal a -> DefaultVal a -> Bool)
-> (DefaultVal a -> DefaultVal a -> Bool)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> Ord (DefaultVal a)
DefaultVal a -> DefaultVal a -> Bool
DefaultVal a -> DefaultVal a -> Ordering
DefaultVal a -> DefaultVal a -> DefaultVal a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (DefaultVal a)
forall a. Ord a => DefaultVal a -> DefaultVal a -> Bool
forall a. Ord a => DefaultVal a -> DefaultVal a -> Ordering
forall a. Ord a => DefaultVal a -> DefaultVal a -> DefaultVal a
$ccompare :: forall a. Ord a => DefaultVal a -> DefaultVal a -> Ordering
compare :: DefaultVal a -> DefaultVal a -> Ordering
$c< :: forall a. Ord a => DefaultVal a -> DefaultVal a -> Bool
< :: DefaultVal a -> DefaultVal a -> Bool
$c<= :: forall a. Ord a => DefaultVal a -> DefaultVal a -> Bool
<= :: DefaultVal a -> DefaultVal a -> Bool
$c> :: forall a. Ord a => DefaultVal a -> DefaultVal a -> Bool
> :: DefaultVal a -> DefaultVal a -> Bool
$c>= :: forall a. Ord a => DefaultVal a -> DefaultVal a -> Bool
>= :: DefaultVal a -> DefaultVal a -> Bool
$cmax :: forall a. Ord a => DefaultVal a -> DefaultVal a -> DefaultVal a
max :: DefaultVal a -> DefaultVal a -> DefaultVal a
$cmin :: forall a. Ord a => DefaultVal a -> DefaultVal a -> DefaultVal a
min :: DefaultVal a -> DefaultVal a -> DefaultVal a
Ord, Int -> DefaultVal a
DefaultVal a -> Int
DefaultVal a -> [DefaultVal a]
DefaultVal a -> DefaultVal a
DefaultVal a -> DefaultVal a -> [DefaultVal a]
DefaultVal a -> DefaultVal a -> DefaultVal a -> [DefaultVal a]
(DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a)
-> (Int -> DefaultVal a)
-> (DefaultVal a -> Int)
-> (DefaultVal a -> [DefaultVal a])
-> (DefaultVal a -> DefaultVal a -> [DefaultVal a])
-> (DefaultVal a -> DefaultVal a -> [DefaultVal a])
-> (DefaultVal a -> DefaultVal a -> DefaultVal a -> [DefaultVal a])
-> Enum (DefaultVal a)
forall a. Enum a => Int -> DefaultVal a
forall a. Enum a => DefaultVal a -> Int
forall a. Enum a => DefaultVal a -> [DefaultVal a]
forall a. Enum a => DefaultVal a -> DefaultVal a
forall a. Enum a => DefaultVal a -> DefaultVal a -> [DefaultVal a]
forall a.
Enum a =>
DefaultVal a -> DefaultVal a -> DefaultVal a -> [DefaultVal a]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: forall a. Enum a => DefaultVal a -> DefaultVal a
succ :: DefaultVal a -> DefaultVal a
$cpred :: forall a. Enum a => DefaultVal a -> DefaultVal a
pred :: DefaultVal a -> DefaultVal a
$ctoEnum :: forall a. Enum a => Int -> DefaultVal a
toEnum :: Int -> DefaultVal a
$cfromEnum :: forall a. Enum a => DefaultVal a -> Int
fromEnum :: DefaultVal a -> Int
$cenumFrom :: forall a. Enum a => DefaultVal a -> [DefaultVal a]
enumFrom :: DefaultVal a -> [DefaultVal a]
$cenumFromThen :: forall a. Enum a => DefaultVal a -> DefaultVal a -> [DefaultVal a]
enumFromThen :: DefaultVal a -> DefaultVal a -> [DefaultVal a]
$cenumFromTo :: forall a. Enum a => DefaultVal a -> DefaultVal a -> [DefaultVal a]
enumFromTo :: DefaultVal a -> DefaultVal a -> [DefaultVal a]
$cenumFromThenTo :: forall a.
Enum a =>
DefaultVal a -> DefaultVal a -> DefaultVal a -> [DefaultVal a]
enumFromThenTo :: DefaultVal a -> DefaultVal a -> DefaultVal a -> [DefaultVal a]
Enum, Num (DefaultVal a)
Ord (DefaultVal a)
(Num (DefaultVal a), Ord (DefaultVal a)) =>
(DefaultVal a -> Rational) -> Real (DefaultVal a)
DefaultVal a -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
forall a. Real a => Num (DefaultVal a)
forall a. Real a => Ord (DefaultVal a)
forall a. Real a => DefaultVal a -> Rational
$ctoRational :: forall a. Real a => DefaultVal a -> Rational
toRational :: DefaultVal a -> Rational
Real, Enum (DefaultVal a)
Real (DefaultVal a)
(Real (DefaultVal a), Enum (DefaultVal a)) =>
(DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a))
-> (DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a))
-> (DefaultVal a -> Integer)
-> Integral (DefaultVal a)
DefaultVal a -> Integer
DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a)
DefaultVal a -> DefaultVal a -> DefaultVal a
forall a. Integral a => Enum (DefaultVal a)
forall a. Integral a => Real (DefaultVal a)
forall a. Integral a => DefaultVal a -> Integer
forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a)
forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
quot :: DefaultVal a -> DefaultVal a -> DefaultVal a
$crem :: forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
rem :: DefaultVal a -> DefaultVal a -> DefaultVal a
$cdiv :: forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
div :: DefaultVal a -> DefaultVal a -> DefaultVal a
$cmod :: forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
mod :: DefaultVal a -> DefaultVal a -> DefaultVal a
$cquotRem :: forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a)
quotRem :: DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a)
$cdivMod :: forall a.
Integral a =>
DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a)
divMod :: DefaultVal a -> DefaultVal a -> (DefaultVal a, DefaultVal a)
$ctoInteger :: forall a. Integral a => DefaultVal a -> Integer
toInteger :: DefaultVal a -> Integer
Integral, Num (DefaultVal a)
Num (DefaultVal a) =>
(DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a)
-> (Rational -> DefaultVal a)
-> Fractional (DefaultVal a)
Rational -> DefaultVal a
DefaultVal a -> DefaultVal a
DefaultVal a -> DefaultVal a -> DefaultVal a
forall a. Fractional a => Num (DefaultVal a)
forall a. Fractional a => Rational -> DefaultVal a
forall a. Fractional a => DefaultVal a -> DefaultVal a
forall a.
Fractional a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
forall a.
Num a =>
(a -> a -> a) -> (a -> a) -> (Rational -> a) -> Fractional a
$c/ :: forall a.
Fractional a =>
DefaultVal a -> DefaultVal a -> DefaultVal a
/ :: DefaultVal a -> DefaultVal a -> DefaultVal a
$crecip :: forall a. Fractional a => DefaultVal a -> DefaultVal a
recip :: DefaultVal a -> DefaultVal a
$cfromRational :: forall a. Fractional a => Rational -> DefaultVal a
fromRational :: Rational -> DefaultVal a
Fractional, Eq (DefaultVal a)
DefaultVal a
Eq (DefaultVal a) =>
(DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> DefaultVal a
-> (Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> Bool)
-> (DefaultVal a -> Maybe Int)
-> (DefaultVal a -> Int)
-> (DefaultVal a -> Bool)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int -> DefaultVal a)
-> (DefaultVal a -> Int)
-> Bits (DefaultVal a)
Int -> DefaultVal a
DefaultVal a -> Bool
DefaultVal a -> Int
DefaultVal a -> Maybe Int
DefaultVal a -> DefaultVal a
DefaultVal a -> Int -> Bool
DefaultVal a -> Int -> DefaultVal a
DefaultVal a -> DefaultVal a -> DefaultVal a
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
forall a. Bits a => Eq (DefaultVal a)
forall a. Bits a => DefaultVal a
forall a. Bits a => Int -> DefaultVal a
forall a. Bits a => DefaultVal a -> Bool
forall a. Bits a => DefaultVal a -> Int
forall a. Bits a => DefaultVal a -> Maybe Int
forall a. Bits a => DefaultVal a -> DefaultVal a
forall a. Bits a => DefaultVal a -> Int -> Bool
forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
forall a. Bits a => DefaultVal a -> DefaultVal a -> DefaultVal a
$c.&. :: forall a. Bits a => DefaultVal a -> DefaultVal a -> DefaultVal a
.&. :: DefaultVal a -> DefaultVal a -> DefaultVal a
$c.|. :: forall a. Bits a => DefaultVal a -> DefaultVal a -> DefaultVal a
.|. :: DefaultVal a -> DefaultVal a -> DefaultVal a
$cxor :: forall a. Bits a => DefaultVal a -> DefaultVal a -> DefaultVal a
xor :: DefaultVal a -> DefaultVal a -> DefaultVal a
$ccomplement :: forall a. Bits a => DefaultVal a -> DefaultVal a
complement :: DefaultVal a -> DefaultVal a
$cshift :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
shift :: DefaultVal a -> Int -> DefaultVal a
$crotate :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
rotate :: DefaultVal a -> Int -> DefaultVal a
$czeroBits :: forall a. Bits a => DefaultVal a
zeroBits :: DefaultVal a
$cbit :: forall a. Bits a => Int -> DefaultVal a
bit :: Int -> DefaultVal a
$csetBit :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
setBit :: DefaultVal a -> Int -> DefaultVal a
$cclearBit :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
clearBit :: DefaultVal a -> Int -> DefaultVal a
$ccomplementBit :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
complementBit :: DefaultVal a -> Int -> DefaultVal a
$ctestBit :: forall a. Bits a => DefaultVal a -> Int -> Bool
testBit :: DefaultVal a -> Int -> Bool
$cbitSizeMaybe :: forall a. Bits a => DefaultVal a -> Maybe Int
bitSizeMaybe :: DefaultVal a -> Maybe Int
$cbitSize :: forall a. Bits a => DefaultVal a -> Int
bitSize :: DefaultVal a -> Int
$cisSigned :: forall a. Bits a => DefaultVal a -> Bool
isSigned :: DefaultVal a -> Bool
$cshiftL :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
shiftL :: DefaultVal a -> Int -> DefaultVal a
$cunsafeShiftL :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
unsafeShiftL :: DefaultVal a -> Int -> DefaultVal a
$cshiftR :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
shiftR :: DefaultVal a -> Int -> DefaultVal a
$cunsafeShiftR :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
unsafeShiftR :: DefaultVal a -> Int -> DefaultVal a
$crotateL :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
rotateL :: DefaultVal a -> Int -> DefaultVal a
$crotateR :: forall a. Bits a => DefaultVal a -> Int -> DefaultVal a
rotateR :: DefaultVal a -> Int -> DefaultVal a
$cpopCount :: forall a. Bits a => DefaultVal a -> Int
popCount :: DefaultVal a -> Int
Bits)
data Required = Req | Opt
deriving (Required -> Required -> Bool
(Required -> Required -> Bool)
-> (Required -> Required -> Bool) -> Eq Required
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Required -> Required -> Bool
== :: Required -> Required -> Bool
$c/= :: Required -> Required -> Bool
/= :: Required -> Required -> Bool
Eq, Int -> Required -> ShowS
[Required] -> ShowS
Required -> String
(Int -> Required -> ShowS)
-> (Required -> String) -> ([Required] -> ShowS) -> Show Required
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Required -> ShowS
showsPrec :: Int -> Required -> ShowS
$cshow :: Required -> String
show :: Required -> String
$cshowList :: [Required] -> ShowS
showList :: [Required] -> ShowS
Show)
data IsRoot
= NotRoot
| IsRoot !(Maybe Text)
deriving (IsRoot -> IsRoot -> Bool
(IsRoot -> IsRoot -> Bool)
-> (IsRoot -> IsRoot -> Bool) -> Eq IsRoot
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IsRoot -> IsRoot -> Bool
== :: IsRoot -> IsRoot -> Bool
$c/= :: IsRoot -> IsRoot -> Bool
/= :: IsRoot -> IsRoot -> Bool
Eq, Int -> IsRoot -> ShowS
[IsRoot] -> ShowS
IsRoot -> String
(Int -> IsRoot -> ShowS)
-> (IsRoot -> String) -> ([IsRoot] -> ShowS) -> Show IsRoot
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IsRoot -> ShowS
showsPrec :: Int -> IsRoot -> ShowS
$cshow :: IsRoot -> String
show :: IsRoot -> String
$cshowList :: [IsRoot] -> ShowS
showList :: [IsRoot] -> ShowS
Show)
data TableDecl = TableDecl
{ TableDecl -> Ident
tableIdent :: !Ident
, TableDecl -> IsRoot
tableIsRoot :: !IsRoot
, TableDecl -> [TableField]
tableFields :: ![TableField]
} deriving (TableDecl -> TableDecl -> Bool
(TableDecl -> TableDecl -> Bool)
-> (TableDecl -> TableDecl -> Bool) -> Eq TableDecl
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TableDecl -> TableDecl -> Bool
== :: TableDecl -> TableDecl -> Bool
$c/= :: TableDecl -> TableDecl -> Bool
/= :: TableDecl -> TableDecl -> Bool
Eq, Int -> TableDecl -> ShowS
[TableDecl] -> ShowS
TableDecl -> String
(Int -> TableDecl -> ShowS)
-> (TableDecl -> String)
-> ([TableDecl] -> ShowS)
-> Show TableDecl
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TableDecl -> ShowS
showsPrec :: Int -> TableDecl -> ShowS
$cshow :: TableDecl -> String
show :: TableDecl -> String
$cshowList :: [TableDecl] -> ShowS
showList :: [TableDecl] -> ShowS
Show)
data TableField = TableField
{ TableField -> Integer
tableFieldId :: !Integer
, TableField -> Ident
tableFieldIdent :: !Ident
, TableField -> TableFieldType
tableFieldType :: !TableFieldType
, TableField -> Bool
tableFieldDeprecated :: !Bool
} deriving (TableField -> TableField -> Bool
(TableField -> TableField -> Bool)
-> (TableField -> TableField -> Bool) -> Eq TableField
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TableField -> TableField -> Bool
== :: TableField -> TableField -> Bool
$c/= :: TableField -> TableField -> Bool
/= :: TableField -> TableField -> Bool
Eq, Int -> TableField -> ShowS
[TableField] -> ShowS
TableField -> String
(Int -> TableField -> ShowS)
-> (TableField -> String)
-> ([TableField] -> ShowS)
-> Show TableField
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TableField -> ShowS
showsPrec :: Int -> TableField -> ShowS
$cshow :: TableField -> String
show :: TableField -> String
$cshowList :: [TableField] -> ShowS
showList :: [TableField] -> ShowS
Show)
data TableFieldType
= TInt8 !(DefaultVal Integer)
| TInt16 !(DefaultVal Integer)
| TInt32 !(DefaultVal Integer)
| TInt64 !(DefaultVal Integer)
| TWord8 !(DefaultVal Integer)
| TWord16 !(DefaultVal Integer)
| TWord32 !(DefaultVal Integer)
| TWord64 !(DefaultVal Integer)
| TFloat !(DefaultVal Scientific)
| TDouble !(DefaultVal Scientific)
| TBool !(DefaultVal Bool)
| TString !Required
| TEnum !TypeRef !EnumType !(DefaultVal Integer)
| TStruct !TypeRef !Required
| TTable !TypeRef !Required
| TUnion !TypeRef !Required
| TVector !Required !VectorElementType
deriving (TableFieldType -> TableFieldType -> Bool
(TableFieldType -> TableFieldType -> Bool)
-> (TableFieldType -> TableFieldType -> Bool) -> Eq TableFieldType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TableFieldType -> TableFieldType -> Bool
== :: TableFieldType -> TableFieldType -> Bool
$c/= :: TableFieldType -> TableFieldType -> Bool
/= :: TableFieldType -> TableFieldType -> Bool
Eq, Int -> TableFieldType -> ShowS
[TableFieldType] -> ShowS
TableFieldType -> String
(Int -> TableFieldType -> ShowS)
-> (TableFieldType -> String)
-> ([TableFieldType] -> ShowS)
-> Show TableFieldType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TableFieldType -> ShowS
showsPrec :: Int -> TableFieldType -> ShowS
$cshow :: TableFieldType -> String
show :: TableFieldType -> String
$cshowList :: [TableFieldType] -> ShowS
showList :: [TableFieldType] -> ShowS
Show)
data VectorElementType
= VInt8
| VInt16
| VInt32
| VInt64
| VWord8
| VWord16
| VWord32
| VWord64
| VFloat
| VDouble
| VBool
| VString
| VEnum !TypeRef !EnumType
| VStruct !TypeRef
| VTable !TypeRef
| VUnion !TypeRef
deriving (VectorElementType -> VectorElementType -> Bool
(VectorElementType -> VectorElementType -> Bool)
-> (VectorElementType -> VectorElementType -> Bool)
-> Eq VectorElementType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VectorElementType -> VectorElementType -> Bool
== :: VectorElementType -> VectorElementType -> Bool
$c/= :: VectorElementType -> VectorElementType -> Bool
/= :: VectorElementType -> VectorElementType -> Bool
Eq, Int -> VectorElementType -> ShowS
[VectorElementType] -> ShowS
VectorElementType -> String
(Int -> VectorElementType -> ShowS)
-> (VectorElementType -> String)
-> ([VectorElementType] -> ShowS)
-> Show VectorElementType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VectorElementType -> ShowS
showsPrec :: Int -> VectorElementType -> ShowS
$cshow :: VectorElementType -> String
show :: VectorElementType -> String
$cshowList :: [VectorElementType] -> ShowS
showList :: [VectorElementType] -> ShowS
Show)
data UnionDecl = UnionDecl
{ UnionDecl -> Ident
unionIdent :: !Ident
, UnionDecl -> NonEmpty UnionVal
unionVals :: !(NonEmpty UnionVal)
} deriving (Int -> UnionDecl -> ShowS
[UnionDecl] -> ShowS
UnionDecl -> String
(Int -> UnionDecl -> ShowS)
-> (UnionDecl -> String)
-> ([UnionDecl] -> ShowS)
-> Show UnionDecl
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnionDecl -> ShowS
showsPrec :: Int -> UnionDecl -> ShowS
$cshow :: UnionDecl -> String
show :: UnionDecl -> String
$cshowList :: [UnionDecl] -> ShowS
showList :: [UnionDecl] -> ShowS
Show, UnionDecl -> UnionDecl -> Bool
(UnionDecl -> UnionDecl -> Bool)
-> (UnionDecl -> UnionDecl -> Bool) -> Eq UnionDecl
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnionDecl -> UnionDecl -> Bool
== :: UnionDecl -> UnionDecl -> Bool
$c/= :: UnionDecl -> UnionDecl -> Bool
/= :: UnionDecl -> UnionDecl -> Bool
Eq)
data UnionVal = UnionVal
{ UnionVal -> Ident
unionValIdent :: !Ident
, UnionVal -> TypeRef
unionValTableRef :: !TypeRef
} deriving (Int -> UnionVal -> ShowS
[UnionVal] -> ShowS
UnionVal -> String
(Int -> UnionVal -> ShowS)
-> (UnionVal -> String) -> ([UnionVal] -> ShowS) -> Show UnionVal
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnionVal -> ShowS
showsPrec :: Int -> UnionVal -> ShowS
$cshow :: UnionVal -> String
show :: UnionVal -> String
$cshowList :: [UnionVal] -> ShowS
showList :: [UnionVal] -> ShowS
Show, UnionVal -> UnionVal -> Bool
(UnionVal -> UnionVal -> Bool)
-> (UnionVal -> UnionVal -> Bool) -> Eq UnionVal
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnionVal -> UnionVal -> Bool
== :: UnionVal -> UnionVal -> Bool
$c/= :: UnionVal -> UnionVal -> Bool
/= :: UnionVal -> UnionVal -> Bool
Eq)