summaryrefslogtreecommitdiff
path: root/xgbgen/morph.go
diff options
context:
space:
mode:
authorAndrew Gallant (Ocelot) <[email protected]>2012-04-30 02:40:55 -0400
committerAndrew Gallant (Ocelot) <[email protected]>2012-04-30 02:40:55 -0400
commit91ec0c014823a869775575879de1f5585523fc39 (patch)
treefc768a53ff2bbe0bc2aaee737dd14f3e30bd1d6f /xgbgen/morph.go
parentf8f11e1419e4cf86189ccb9964b8235cef90eb4f (diff)
complete and total overhaul like i promised. things are much easier to reason about. still not working yet though.
Diffstat (limited to 'xgbgen/morph.go')
-rw-r--r--xgbgen/morph.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/xgbgen/morph.go b/xgbgen/morph.go
new file mode 100644
index 0000000..c39b333
--- /dev/null
+++ b/xgbgen/morph.go
@@ -0,0 +1,50 @@
+
+// Morph cascades down all of the XML and calls each type's corresponding
+// Morph function with itself as an argument (the context).
+func (x *XML) Morph(c *Context) {
+ // Start the header...
+ c.Putln("package xgb")
+ c.Putln("/*")
+ c.Putln("\tX protocol API for '%s.xml'.", c.xml.Header)
+ c.Putln("\tThis file is automatically generated. Edit at your own peril!")
+ c.Putln("\tGenerated on %s",
+ time.Now().Format("Jan 2, 2006 at 3:04:05pm MST"))
+ c.Putln("*/")
+ c.Putln("")
+
+ x.Imports.Morph(c)
+ c.Putln("")
+
+ x.Enums.Morph(c)
+ c.Putln("")
+
+ x.Xids.Morph(c)
+ c.Putln("")
+
+ x.XidUnions.Morph(c)
+ c.Putln("")
+
+ x.TypeDefs.Morph(c)
+ c.Putln("")
+
+ x.Structs.Morph(c)
+ c.Putln("")
+
+ x.Unions.Morph(c)
+ c.Putln("")
+
+ x.Requests.Morph(c)
+ c.Putln("")
+
+ x.Errors.Morph(c)
+ c.Putln("")
+
+ x.ErrorCopies.Morph(c)
+ c.Putln("")
+
+ x.Events.Morph(c)
+ c.Putln("")
+
+ x.EventCopies.Morph(c)
+ c.Putln("")
+}