[Mesa-dev] [PATCH v3 3/6] vulkan: enum generator: make registry more flexible

Chad Versace chadversary at chromium.org
Fri Sep 22 00:16:47 UTC 2017


On Thu 21 Sep 2017, Jason Ekstrand wrote:
> From: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> 
> It will be used to store extension numbers as well.
> 
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  src/vulkan/util/gen_enum_to_str.py | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/src/vulkan/util/gen_enum_to_str.py b/src/vulkan/util/gen_enum_to_str.py
> index efe5d4f..4a2d605 100644
> --- a/src/vulkan/util/gen_enum_to_str.py
> +++ b/src/vulkan/util/gen_enum_to_str.py
> @@ -115,18 +115,18 @@ FOREIGN_ENUM_VALUES = [
>  ]
>  
>  
> -class EnumFactory(object):
> +class NamedFactory(object):
>      """Factory for creating enums."""
>  
>      def __init__(self, type_):
>          self.registry = {}
>          self.type = type_
>  
> -    def __call__(self, name):
> +    def __call__(self, name, **kwargs):
>          try:
>              return self.registry[name]
>          except KeyError:
> -            n = self.registry[name] = self.type(name)
> +            n = self.registry[name] = self.type(name, **kwargs)
>          return n
>  
>  
> @@ -138,7 +138,7 @@ class VkEnum(object):
>          self.values = values or []
>  
>  
> -def parse_xml(efactory, filename):
> +def parse_xml(enum_factory, filename):
>      """Parse the XML file. Accumulate results into the efactory.
>  
>      This parser is a memory efficient iterative XML parser that returns a list
> @@ -157,15 +157,15 @@ def parse_xml(efactory, filename):
>              if event == 'end' and elem.tag == 'enums':
>                  type_ = elem.attrib.get('type')
>                  if type_ == 'enum':
> -                    enum = efactory(elem.attrib['name'])
> +                    enum = enum_factory(elem.attrib['name'])
>                      enum.values.extend([e.attrib['name'] for e in elem
>                                          if e.tag == 'enum'])
>              elif event == 'end' and elem.tag == 'extension':
>                  if elem.attrib['supported'] != 'vulkan':
>                      continue
>                  for e in elem.findall('.//enum[@extends][@offset]'):
> -                    enum = efactory(e.attrib['extends'])
> -                    enum.values.append(e.attrib['name'])
> +                    enum = enum_factory(e.attrib['extends'])
> +                    enum.values.append(e.attrib['name'],)

----------------------------------------------------------^ Stray comma in the arg list.

>  
>              root.clear()
>  
> @@ -182,10 +182,10 @@ def main():
>  
>      args = parser.parse_args()
>  
> -    efactory = EnumFactory(VkEnum)
> +    enum_factory = NamedFactory(VkEnum)
>      for filename in args.xml_files:
> -        parse_xml(efactory, filename)
> -    enums=sorted(efactory.registry.values(), key=lambda e: e.name)
> +        parse_xml(enum_factory, filename)
> +    enums=sorted(enum_factory.registry.values(), key=lambda e: e.name)

------------^ No spaces around the =
>  
>      for template, file_ in [(C_TEMPLATE, os.path.join(args.outdir, 'vk_enum_to_str.c')),
>                              (H_TEMPLATE, os.path.join(args.outdir, 'vk_enum_to_str.h'))]:
> -- 

With those minor things fixed,
Reviewed-by: Chad Versace <chadversary at chromium.org>



More information about the mesa-dev mailing list