Portability | portable |
---|---|
Stability | provisional |
Maintainer | Antoine Latter <aslatter@gmail.com> |
Defines types inteneded to be equivalent to the schema used by the XCB project in their XML protocol description.
- data GenXHeader typ = XHeader {}
- mapTypes :: (a -> b) -> GenXHeader a -> GenXHeader b
- type XHeader = GenXHeader Type
- type XDecl = GenXDecl Type
- type StructElem = GenStructElem Type
- type XidUnionElem = GenXidUnionElem Type
- type XReply = GenXReply Type
- data GenXDecl typ
- = XStruct Name [GenStructElem typ]
- | XTypeDef Name typ
- | XEvent Name Int [GenStructElem typ] (Maybe Bool)
- | XRequest Name Int [GenStructElem typ] (Maybe (GenXReply typ))
- | XidType Name
- | XidUnion Name [GenXidUnionElem typ]
- | XEnum Name [EnumElem]
- | XUnion Name [GenStructElem typ]
- | XImport Name
- | XError Name Int [GenStructElem typ]
- mapDecls :: (a -> b) -> GenXDecl a -> GenXDecl b
- data GenStructElem typ
- type AltEnumVals typ = typ
- type EnumVals typ = typ
- type MaskVals typ = typ
- type Name = String
- type GenXReply typ = [GenStructElem typ]
- type Ref = String
- type MaskName = Name
- type ListName = Name
- type MaskPadding = Int
- data Type
- = UnQualType Name
- | QualType Name Name
- data GenXidUnionElem typ = XidUnionElem typ
- data EnumElem = EnumElem Name (Maybe Expression)
- data Expression
- = Value Int
- | Bit Int
- | FieldRef Name
- | Op Binop Expression Expression
- data Binop
Documentation
data GenXHeader typ Source
This is what a single XML file maps to. It contains some meta-data then declarations.
XHeader | |
|
Show typ => Show (GenXHeader typ) | |
Pretty a => Pretty (GenXHeader a) |
mapTypes :: (a -> b) -> GenXHeader a -> GenXHeader bSource
type XHeader = GenXHeader TypeSource
type StructElem = GenStructElem TypeSource
The different types of declarations which can be made in one of the XML files.
XStruct Name [GenStructElem typ] | |
XTypeDef Name typ | |
XEvent Name Int [GenStructElem typ] (Maybe Bool) | The boolean indicates if the event includes a sequence number. |
XRequest Name Int [GenStructElem typ] (Maybe (GenXReply typ)) | |
XidType Name | |
XidUnion Name [GenXidUnionElem typ] | |
XEnum Name [EnumElem] | |
XUnion Name [GenStructElem typ] | |
XImport Name | |
XError Name Int [GenStructElem typ] |
data GenStructElem typ Source
Pad Int | |
List Name typ (Maybe Expression) (Maybe (EnumVals typ)) | |
SField Name typ (Maybe (EnumVals typ)) (Maybe (MaskVals typ)) | |
ExprField Name typ Expression | |
ValueParam typ Name (Maybe MaskPadding) ListName |
Show typ => Show (GenStructElem typ) | |
Pretty a => Pretty (GenStructElem a) |
type AltEnumVals typ = typSource
type GenXReply typ = [GenStructElem typ]Source
type MaskPadding = IntSource
Types may include a reference to the containing module.
data GenXidUnionElem typ Source
XidUnionElem typ |
Show typ => Show (GenXidUnionElem typ) | |
Pretty a => Pretty (GenXidUnionElem a) |
data Expression Source
Declarations may contain expressions from this small language
Value Int | A literal value |
Bit Int | A log-base-2 literal value |
FieldRef Name | A reference to a field in the same declaration |
Op Binop Expression Expression | A binary opeation |