added documentation and did some slight restructuring. it's party time.
This commit is contained in:
41
nexgb/xgbgen/protocol.go
Normal file
41
nexgb/xgbgen/protocol.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Protocol is a type that encapsulates all information about one
|
||||
// particular XML file. It also contains links to other protocol types
|
||||
// if this protocol imports other other extensions. The import relationship
|
||||
// is recursive.
|
||||
type Protocol struct {
|
||||
Name string
|
||||
ExtXName string
|
||||
ExtName string
|
||||
MajorVersion string
|
||||
MinorVersion string
|
||||
|
||||
Imports []*Protocol
|
||||
Types []Type
|
||||
Requests []*Request
|
||||
}
|
||||
|
||||
// Initialize traverses all structures, looks for 'Translation' type,
|
||||
// and looks up the real type in the namespace. It also sets the source
|
||||
// name for all relevant fields/structures.
|
||||
// This is necessary because we don't traverse the XML in order initially.
|
||||
func (p *Protocol) Initialize() {
|
||||
for _, typ := range p.Types {
|
||||
typ.Initialize(p)
|
||||
}
|
||||
for _, req := range p.Requests {
|
||||
req.Initialize(p)
|
||||
}
|
||||
}
|
||||
|
||||
// isExt returns true if this protocol is an extension.
|
||||
// i.e., it's name isn't "xproto".
|
||||
func (p *Protocol) isExt() bool {
|
||||
return strings.ToLower(p.Name) == "xproto"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user