Track pad count at the module level

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>
This commit is contained in:
Peter Harris 2014-01-14 14:45:15 -05:00
parent 0d8f09b646
commit a05a510635
2 changed files with 5 additions and 4 deletions

View 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

View 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)