Commit 539a0aec authored by Jason Ekstrand's avatar Jason Ekstrand

vulkan/enum_to_str: Add a add_value_from_xml helper to VkEnum

Reviewed-by: Samuel Iglesias Gonsálvez's avatarSamuel Iglesias Gonsálvez <siglesias@igalia.com>
parent eb23ca06
......@@ -165,6 +165,18 @@ class VkEnum(object):
if value not in self.values:
self.values[value] = name
def add_value_from_xml(self, elem, extension=None):
if 'value' in elem.attrib:
self.add_value(elem.attrib['name'],
value=int(elem.attrib['value']))
else:
error = 'dir' in elem.attrib and elem.attrib['dir'] == '-'
print(elem.attrib['name'])
self.add_value(elem.attrib['name'],
extension=extension,
offset=int(elem.attrib['offset']),
error=error)
def parse_xml(enum_factory, ext_factory, filename):
"""Parse the XML file. Accumulate results into the factories.
......@@ -178,8 +190,7 @@ def parse_xml(enum_factory, ext_factory, filename):
for enum_type in xml.findall('./enums[@type="enum"]'):
enum = enum_factory(enum_type.attrib['name'])
for value in enum_type.findall('./enum'):
enum.add_value(value.attrib['name'],
value=int(value.attrib['value']))
enum.add_value_from_xml(value)
for ext_elem in xml.findall('./extensions/extension[@supported="vulkan"]'):
extension = ext_factory(ext_elem.attrib['name'],
......@@ -187,17 +198,8 @@ def parse_xml(enum_factory, ext_factory, filename):
for value in ext_elem.findall('./require/enum[@extends]'):
enum = enum_factory.get(value.attrib['extends'])
if enum is None:
continue
if 'value' in value.attrib:
enum.add_value(value.attrib['name'],
value=int(value.attrib['value']))
else:
error = 'dir' in value.attrib and value.attrib['dir'] == '-'
enum.add_value(value.attrib['name'],
extension=extension,
offset=int(value.attrib['offset']),
error=error)
if enum is not None:
enum.add_value_from_xml(value, extension)
def main():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment