aboutsummaryrefslogtreecommitdiff
path: root/nexgb/xgbgen/xml.go
diff options
context:
space:
mode:
Diffstat (limited to 'nexgb/xgbgen/xml.go')
-rw-r--r--nexgb/xgbgen/xml.go64
1 files changed, 27 insertions, 37 deletions
diff --git a/nexgb/xgbgen/xml.go b/nexgb/xgbgen/xml.go
index 1b2f89a..df21433 100644
--- a/nexgb/xgbgen/xml.go
+++ b/nexgb/xgbgen/xml.go
@@ -18,19 +18,19 @@ type XML struct {
// Types for all top-level elements.
// First are the simple ones.
Imports XMLImports `xml:"import"`
- Enums XMLEnums `xml:"enum"`
- Xids XMLXids `xml:"xidtype"`
- XidUnions XMLXids `xml:"xidunion"`
- TypeDefs XMLTypeDefs `xml:"typedef"`
- EventCopies XMLEventCopies `xml:"eventcopy"`
- ErrorCopies XMLErrorCopies `xml:"errorcopy"`
+ Enums []*XMLEnum `xml:"enum"`
+ Xids []*XMLXid `xml:"xidtype"`
+ XidUnions []*XMLXid `xml:"xidunion"`
+ TypeDefs []*XMLTypeDef `xml:"typedef"`
+ EventCopies []*XMLEventCopy `xml:"eventcopy"`
+ ErrorCopies []*XMLErrorCopy `xml:"errorcopy"`
// Here are the complex ones, i.e., anything with "structure contents"
- Structs XMLStructs `xml:"struct"`
- Unions XMLUnions `xml:"union"`
- Requests XMLRequests `xml:"request"`
- Events XMLEvents `xml:"event"`
- Errors XMLErrors `xml:"error"`
+ Structs []*XMLStruct `xml:"struct"`
+ Unions []*XMLUnion `xml:"union"`
+ Requests []*XMLRequest `xml:"request"`
+ Events []*XMLEvent `xml:"event"`
+ Errors []*XMLError `xml:"error"`
}
type XMLImports []*XMLImport
@@ -60,8 +60,6 @@ type XMLImport struct {
xml *XML `xml:"-"`
}
-type XMLEnums []XMLEnum
-
type XMLEnum struct {
Name string `xml:"name,attr"`
Items []*XMLEnumItem `xml:"item"`
@@ -72,77 +70,69 @@ type XMLEnumItem struct {
Expr *XMLExpression `xml:",any"`
}
-type XMLXids []*XMLXid
-
type XMLXid struct {
XMLName xml.Name
Name string `xml:"name,attr"`
}
-type XMLTypeDefs []*XMLTypeDef
-
type XMLTypeDef struct {
Old string `xml:"oldname,attr"`
New string `xml:"newname,attr"`
}
-type XMLEventCopies []*XMLEventCopy
-
type XMLEventCopy struct {
Name string `xml:"name,attr"`
Number int `xml:"number,attr"`
Ref string `xml:"ref,attr"`
}
-type XMLErrorCopies []*XMLErrorCopy
-
type XMLErrorCopy struct {
Name string `xml:"name,attr"`
Number int `xml:"number,attr"`
Ref string `xml:"ref,attr"`
}
-type XMLStructs []*XMLStruct
-
type XMLStruct struct {
Name string `xml:"name,attr"`
- Fields XMLFields `xml:",any"`
+ Fields []*XMLField `xml:",any"`
}
-type XMLUnions []*XMLUnion
-
type XMLUnion struct {
Name string `xml:"name,attr"`
- Fields XMLFields `xml:",any"`
+ Fields []*XMLField `xml:",any"`
}
-type XMLRequests []*XMLRequest
-
type XMLRequest struct {
Name string `xml:"name,attr"`
Opcode int `xml:"opcode,attr"`
Combine bool `xml:"combine-adjacent,attr"`
- Fields XMLFields `xml:",any"`
+ Fields []*XMLField `xml:",any"`
Reply *XMLReply `xml:"reply"`
}
type XMLReply struct {
- Fields XMLFields `xml:",any"`
+ Fields []*XMLField `xml:",any"`
}
-type XMLEvents []*XMLEvent
-
type XMLEvent struct {
Name string `xml:"name,attr"`
Number int `xml:"number,attr"`
NoSequence bool `xml:"no-sequence-number,attr"`
- Fields XMLFields `xml:",any"`
+ Fields []*XMLField `xml:",any"`
}
-type XMLErrors []*XMLError
-
type XMLError struct {
Name string `xml:"name,attr"`
Number int `xml:"number,attr"`
- Fields XMLFields `xml:",any"`
+ Fields []*XMLField `xml:",any"`
+}
+
+type XMLExpression struct {
+ XMLName xml.Name
+
+ Exprs []*XMLExpression `xml:",any"`
+
+ Data string `xml:",chardata"`
+ Op string `xml:"op,attr"`
+ Ref string `xml:"ref,attr"`
}