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

2017-09-21 Thread Jason Ekstrand
On Thu, Sep 21, 2017 at 10:25 AM, Dylan Baker  wrote:

> Quoting Jason Ekstrand (2017-09-21 08:32:20)
> > From: Lionel Landwerlin 
> >
> > It will be used to store extension numbers as well.
> >
> > Signed-off-by: Lionel Landwerlin 
> > Reviewed-by: Jason Ekstrand 
> > ---
> >  src/vulkan/util/gen_enum_to_str.py | 22 +++---
> >  1 file changed, 11 insertions(+), 11 deletions(-)
> >
> > diff --git a/src/vulkan/util/gen_enum_to_str.py
> b/src/vulkan/util/gen_enum_to_str.py
> > index efe5d4f..5281e89 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, *args):
>
> This is pretty ugly and clunky. What about
> __call__(self, name, **kwargs), and pass kwargs directly to the type?
>

Fine with me.


> >  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
> >
> >
> > @@ -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'],)
> >
> >  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)
> >
> >  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'))]:
> > --
> > 2.5.0.400.gff86faf
> >
> > ___
> > mesa-dev mailing list
> > mesa-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-09-21 Thread Dylan Baker
Quoting Jason Ekstrand (2017-09-21 08:32:20)
> From: Lionel Landwerlin 
> 
> It will be used to store extension numbers as well.
> 
> Signed-off-by: Lionel Landwerlin 
> Reviewed-by: Jason Ekstrand 
> ---
>  src/vulkan/util/gen_enum_to_str.py | 22 +++---
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/src/vulkan/util/gen_enum_to_str.py 
> b/src/vulkan/util/gen_enum_to_str.py
> index efe5d4f..5281e89 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, *args):

This is pretty ugly and clunky. What about
__call__(self, name, **kwargs), and pass kwargs directly to the type?

>  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
>  
>  
> @@ -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'],)
>  
>  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)
>  
>  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'))]:
> -- 
> 2.5.0.400.gff86faf
> 
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


signature.asc
Description: signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-09-21 Thread Jason Ekstrand
From: Lionel Landwerlin 

It will be used to store extension numbers as well.

Signed-off-by: Lionel Landwerlin 
Reviewed-by: Jason Ekstrand 
---
 src/vulkan/util/gen_enum_to_str.py | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/vulkan/util/gen_enum_to_str.py 
b/src/vulkan/util/gen_enum_to_str.py
index efe5d4f..5281e89 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, *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
 
 
@@ -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'],)
 
 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)
 
 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'))]:
-- 
2.5.0.400.gff86faf

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev