projects
/
free-sw
/
xcb
/
proto
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
xcbgen: Add unop support
[free-sw/xcb/proto]
/
xcbgen
/
expr.py
diff --git
a/xcbgen/expr.py
b/xcbgen/expr.py
index
ed4b975
..
79ad8f6
100644
(file)
--- a/
xcbgen/expr.py
+++ b/
xcbgen/expr.py
@@
-26,7
+26,7
@@
class Expression(object):
Represents a mathematical expression for a list length or exprfield.
Public fields:
Represents a mathematical expression for a list length or exprfield.
Public fields:
- op is the operation (text +,*,/,<<) or None.
+ op is the operation (text +,*,/,<<
,~
) or None.
lhs and rhs are the sub-Expressions if op is set.
lenfield_name is the name of the length field, or None for request lists.
lenfield is the Field object for the length field, or None.
lhs and rhs are the sub-Expressions if op is set.
lenfield_name is the name of the length field, or None for request lists.
lenfield is the Field object for the length field, or None.
@@
-75,6
+75,13
@@
class Expression(object):
if self.lenfield_name == None:
self.lenfield_name = self.rhs.lenfield_name
if self.lenfield_name == None:
self.lenfield_name = self.rhs.lenfield_name
+ elif elt.tag == 'unop':
+ # Op field. Need to recurse.
+ self.op = elt.get('op')
+ self.rhs = Expression(list(elt)[0], parent)
+
+ self.lenfield_name = self.rhs.lenfield_name
+
elif elt.tag == 'value':
# Constant expression
self.nmemb = int(elt.text, 0)
elif elt.tag == 'value':
# Constant expression
self.nmemb = int(elt.text, 0)