On 05/26/2015 04:15 AM, Jose Fonseca wrote:
argparse type is a nice type saver for simple data types, but it doesn't
look a good fit for the input XML file:

- Certain implementations of argparse (particularly python 2.7.3's)
   invoke the type constructor for the default argument even when an
   option is passed in the command line.  Causing `No such file or
   directory: 'gl_API.xml'` when the current dir is not
   src/mapi/glapi/gen.

- The parser takes multiple arguments.  This is currently worked around
   using lambdas, but that unnecessarily complex and hard to read.
   Furthermore it's odd to have a side-effect as heavy as parsing XML
   happening deep inside the argument parsing.
---
  src/mapi/glapi/gen/gl_procs.py     | 7 +++----
  src/mapi/glapi/gen/gl_table.py     | 9 +++++----
  src/mapi/glapi/gen/remap_helper.py | 8 ++++----
  3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/mapi/glapi/gen/gl_procs.py b/src/mapi/glapi/gen/gl_procs.py
index cf6d2de..685e2fa 100644
--- a/src/mapi/glapi/gen/gl_procs.py
+++ b/src/mapi/glapi/gen/gl_procs.py
@@ -165,14 +165,12 @@ typedef struct {

  def _parser():
      """Parse arguments and return a namepsace."""
-    api_type = lambda x: gl_XML.parse_GL_API(x, glX_XML.glx_item_factory())

      parser = argparse.ArgumentParser()
      parser.add_argument('-f', '--filename',
-                        type=api_type,
                          default='gl_API.xml',
                          metavar="input_file_name",
-                        dest='api',
+                        dest='file_name',
                          help="Path to an XML description of OpenGL API.")
      parser.add_argument('-c', '--es-version',
                          dest='es',
@@ -184,7 +182,8 @@ def _parser():
  def main():
      """Main function."""
      args = _parser()
-    PrintGlProcs(args.es).Print(args.api)
+    api = gl_XML.parse_GL_API(args.file_name, glX_XML.glx_item_factory())
+    PrintGlProcs(args.es).Print(api)


  if __name__ == '__main__':
diff --git a/src/mapi/glapi/gen/gl_table.py b/src/mapi/glapi/gen/gl_table.py
index 30903fd..3f02902 100644
--- a/src/mapi/glapi/gen/gl_table.py
+++ b/src/mapi/glapi/gen/gl_table.py
@@ -206,10 +206,9 @@ def _parser():
      """Parse arguments and return a namespace."""
      parser = argparse.ArgumentParser()
      parser.add_argument('-f', '--filename',
-                        type=gl_XML.parse_GL_API,
                          default='gl_API.xml',
                          metavar="input_file_name",
-                        dest='api',
+                        dest='file_name',
                          help="Path to an XML description of OpenGL API.")
      parser.add_argument('-m', '--mode',
                          choices=['table', 'remap_table'],
@@ -229,15 +228,17 @@ def main():
      """Main function."""
      args = _parser()

+    api = gl_XML.parse_GL_API(args.file_name)
+
      if args.mode == "table":
          printer = PrintGlTable(args.es)
      elif args.mode == "remap_table":
          printer = PrintRemapTable(args.es)

      if args.es is not None:
-        args.api.filter_functions_by_api(args.es)
+        api.filter_functions_by_api(args.es)

-    printer.Print(args.api)
+    printer.Print(api)


  if __name__ == '__main__':
diff --git a/src/mapi/glapi/gen/remap_helper.py 
b/src/mapi/glapi/gen/remap_helper.py
index 9e3c390..94ae193 100644
--- a/src/mapi/glapi/gen/remap_helper.py
+++ b/src/mapi/glapi/gen/remap_helper.py
@@ -170,10 +170,9 @@ def _parser():
      """Parse input options and return a namsepace."""
      parser = argparse.ArgumentParser()
      parser.add_argument('-f', '--filename',
-                        type=gl_XML.parse_GL_API,
                          default="gl_API.xml",
                          metavar="input_file_name",
-                        dest='api',
+                        dest='file_name',
                          help="An xml description file.")
      parser.add_argument('-c', '--es-version',
                          choices=[None, 'es1', 'es2'],
@@ -188,11 +187,12 @@ def main():
      """Main function."""
      args = _parser()

+    api = gl_XML.parse_GL_API(args.file_name)
      if args.es is not None:
-        args.api.filter_functions_by_api(args.es)
+        api.filter_functions_by_api(args.es)

      printer = PrintGlRemap()
-    printer.Print(args.api)
+    printer.Print(api)


  if __name__ == '__main__':


Reviewed-by: Brian Paul <bri...@vmware.com>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to