summaryrefslogtreecommitdiff
path: root/xgb.go
diff options
context:
space:
mode:
authorAndrew Gallant (Ocelot) <[email protected]>2012-04-29 03:38:29 -0400
committerAndrew Gallant (Ocelot) <[email protected]>2012-04-29 03:38:29 -0400
commiteb4f8cde88068649a60c494168490cb66335944c (patch)
tree128604288a938c8465c4ba8f49bbf2aabdb7c2f5 /xgb.go
parent7d160ecc2dc688f032ef9e53a8a529821f445df9 (diff)
progress. still not working. this is incredibly difficult.
Diffstat (limited to 'xgb.go')
-rw-r--r--xgb.go22
1 files changed, 19 insertions, 3 deletions
diff --git a/xgb.go b/xgb.go
index 7e209a7..ce2cc54 100644
--- a/xgb.go
+++ b/xgb.go
@@ -87,9 +87,15 @@ func newCookie(id uint16) *Cookie {
}
}
-// Event is an interface that can contain any of the events returned by the server.
-// Use a type assertion switch to extract the Event structs.
-type Event interface{}
+// Event is an interface that can contain any of the events returned by the
+// server. Use a type assertion switch to extract the Event structs.
+type Event interface {
+ ImplementsEvent()
+}
+
+// newEventFuncs is a map from event numbers to functions that create
+// the corresponding event.
+var newEventFuncs map[int]func(buf []byte) Event
// Error contains protocol errors returned to us by the X server.
type Error struct {
@@ -100,6 +106,16 @@ type Error struct {
Id Id
}
+// Error2 is an interface that can contain any of the errors returned by
+// the server. Use a type assertion switch to extract the Error structs.
+type Error2 interface {
+ ImplementsError()
+}
+
+// newErrorFuncs is a map from error numbers to functions that create
+// the corresponding error.
+var newErrorFuncs map[int]func(buf []byte) Error2
+
func (e *Error) Error() string {
return fmt.Sprintf("Bad%s (major=%d minor=%d cookie=%d id=0x%x)",
errorNames[e.Detail], e.Major, e.Minor, e.Cookie, e.Id)