self.prefix = None
elif name == "value":
self.values.append(Value(attrs))
- elif name == "import":
+ elif name in ("import", "exclude"):
pass
else:
assert False
elif name == "enum":
self.emit_enum()
self.enum = None
- elif name in ("import", "value"):
+ elif name in ("import", "exclude", "value"):
pass
else:
assert False
GENXML_DESC = {
'genxml' : [ 'name', 'gen', ],
'import' : [ 'name', ],
+ 'exclude' : [ 'name', ],
'enum' : [ 'name', 'value', 'prefix', ],
'struct' : [ 'name', 'length', ],
'field' : [ 'name', 'start', 'end', 'type', 'default', 'prefix', 'nonzero' ],
if item.tag == 'import':
assert 'name' in item.attrib
filename = os.path.split(item.attrib['name'])
+ exceptions = set()
+ for e in item:
+ assert e.tag == 'exclude'
+ exceptions.add(e.attrib['name'])
# We should be careful to restrict loaded files to
# those under the source or build trees. For now, only
# allow siblings of the current xml file.
for i in imported_elements:
if i.tag not in orig_by_tag:
continue
+ if i.attrib['name'] in exceptions:
+ continue
if i.attrib['name'] in orig_by_tag[i.tag]:
# An item with this same name was defined in
# the genxml directly. There we should ignore