summaryrefslogtreecommitdiff
path: root/xcbgen/expr.py
diff options
context:
space:
mode:
Diffstat (limited to 'xcbgen/expr.py')
-rw-r--r--xcbgen/expr.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/xcbgen/expr.py b/xcbgen/expr.py
index ed4b975..79ad8f6 100644
--- 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:
- 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.
@@ -75,6 +75,13 @@ class Expression(object):
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)