Track pad count at the module level
authorPeter Harris <pharris@opentext.com>
Tue, 14 Jan 2014 19:45:15 +0000 (14:45 -0500)
committerPeter Harris <pharris@opentext.com>
Tue, 21 Jan 2014 20:22:43 +0000 (15:22 -0500)
If the pad count is reset for each bitcase, the names will collide
in the encompasing switch struct.

Reviewed-By: Ran Benita <ran234@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
xcbgen/state.py
xcbgen/xtypes.py

index 10a8722..52b8d8d 100644 (file)
@@ -93,6 +93,7 @@ class Module(object):
     # Recursively resolve all types
     def resolve(self):
         for (name, item) in self.all:
+            self.pads = 0
             item.resolve(self)
 
     # Call all the output methods
index 5f45723..e9596a9 100644 (file)
@@ -296,16 +296,15 @@ class ComplexType(Type):
     def resolve(self, module):
         if self.resolved:
             return
-        pads = 0
         enum = None
 
         # Resolve all of our field datatypes.
         for child in list(self.elt):
             if child.tag == 'pad':
-                field_name = 'pad' + str(pads)
+                field_name = 'pad' + str(module.pads)
                 fkey = 'CARD8'
                 type = PadType(child)
-                pads = pads + 1
+                module.pads = module.pads + 1
                 visible = False
             elif child.tag == 'field':
                 field_name = child.get('name')
@@ -397,7 +396,6 @@ class SwitchType(ComplexType):
     def resolve(self, module):
         if self.resolved:
             return
-#        pads = 0
 
         parents = list(self.parents) + [self]
 
@@ -560,6 +558,8 @@ class Reply(ComplexType):
     def resolve(self, module):
         if self.resolved:
             return
+        # Reset pads count
+        module.pads = 0
         # Add the automatic protocol fields
         self.fields.append(Field(tcard8, tcard8.name, 'response_type', False, True, True))
         self.fields.append(_placeholder_byte)