X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=xcbgen%2Fxtypes.py;h=35fcb91e690d5806a26f4b2f0832040c5dd1122d;hb=70e270182fd523a6ea2270d8cf9ad21960dd0f74;hp=d4b16e2b08fa1168b013e4c1212f3e505c01bac5;hpb=bf652a63fe0de259857ed174d7e921d645184634;p=free-sw%2Fxcb%2Fproto diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py index d4b16e2..35fcb91 100644 --- a/xcbgen/xtypes.py +++ b/xcbgen/xtypes.py @@ -114,10 +114,12 @@ class Enum(SimpleType): Public fields added: values contains a list of (name, value) tuples. value is empty, or a number. + bits contains a list of (name, bitnum) tuples. items only appear if specified as a bit. bitnum is a number. ''' def __init__(self, name, elt): SimpleType.__init__(self, name, 4) self.values = [] + self.bits = [] for item in list(elt): # First check if we're using a default value if len(list(item)) == 0: @@ -129,8 +131,8 @@ class Enum(SimpleType): if value.tag == 'value': self.values.append((item.get('name'), value.text)) elif value.tag == 'bit': - # XXX replace this with a simple number, please. - self.values.append((item.get('name'), '(1 << %s)' % value.text)) + self.values.append((item.get('name'), '%u' % (1 << int(value.text, 0)))) + self.bits.append((item.get('name'), value.text)) def resolve(self, module): self.resolved = True @@ -241,7 +243,7 @@ class PadType(Type): Type.__init__(self, tcard8.name) self.is_pad = True self.size = 1 - self.nmemb = 1 if (elt == None) else int(elt.get('bytes')) + self.nmemb = 1 if (elt == None) else int(elt.get('bytes'), 0) def resolve(self, module): self.resolved = True