[Mesa-dev] [PATCH 04/15] vulkan: enum generator: make registry more flexible

Lionel Landwerlin lionel.g.landwerlin at intel.com
Tue Sep 19 14:21:23 UTC 2017


On 15/09/17 22:27, Jason Ekstrand wrote:
> On Fri, Sep 15, 2017 at 7:10 AM, Lionel Landwerlin 
> <lionel.g.landwerlin at intel.com <mailto:lionel.g.landwerlin at intel.com>> 
> wrote:
>
>     It will be used to store extension numbers as well.
>
>     Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com
>     <mailto:lionel.g.landwerlin at intel.com>>
>     ---
>      src/vulkan/util/gen_enum_to_str.py | 19 +++++++++----------
>      1 file changed, 9 insertions(+), 10 deletions(-)
>
>     diff --git a/src/vulkan/util/gen_enum_to_str.py
>     b/src/vulkan/util/gen_enum_to_str.py
>     index d09e256965f..28bfbfde235 100644
>     --- a/src/vulkan/util/gen_enum_to_str.py
>     +++ b/src/vulkan/util/gen_enum_to_str.py
>     @@ -98,19 +98,18 @@ H_TEMPLATE = Template(textwrap.dedent(u"""\
>          #endif"""),
>          output_encoding='utf-8')
>
>     -
>     -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, *args):
>              try:
>     -            return self.registry[name]
>     +            return self.registry[args[0]]
>              except KeyError:
>     -            n = self.registry[name] = self.type(name)
>     +            n = self.registry[args[0]] = self.type(*args)
>              return n
>
>
>     @@ -128,7 +127,7 @@ def xml_parser(filename):
>          This parser is a memory efficient iterative XML parser that
>     returns a list
>          of VkEnum objects.
>          """
>     -    efactory = EnumFactory(VkEnum)
>     +    enum_factory = NamedFactory(VkEnum)
>
>          with open(filename, 'rb') as f:
>              context = iter(et.iterparse(f, events=('start', 'end')))
>     @@ -142,19 +141,19 @@ def xml_parser(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'],)
>
>
> There's an extra comma here I don't think you need.

Fixed locally.

>
>                  root.clear()
>
>     -    return efactory.registry.values()
>     +    return enum_factory.registry.values()
>
>
>      def main():
>     --
>     2.14.1
>
>     _______________________________________________
>     mesa-dev mailing list
>     mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
>     https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>     <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170919/1bd5915b/attachment-0001.html>


More information about the mesa-dev mailing list