glapi: glX_proto_size.py: use argparse instead of getopt
This is roughly equivalent to the original getopt, except that it removes the '-h' short option, which argparse reserves for auto-generated help messages. It does retain the long option specified by the getopt version, and changes the makefile to use that. Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com> Acked-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
1c7cc67778
commit
9ace0b5422
|
@ -290,7 +290,7 @@ $(MESA_GLX_DIR)/indirect_init.c: glX_proto_send.py $(COMMON_GLX)
|
|||
|
||||
$(MESA_GLX_DIR)/indirect_size.h $(XORG_GLX_DIR)/indirect_size.h: glX_proto_size.py $(COMMON_GLX)
|
||||
$(PYTHON_GEN) $< -f $(srcdir)/gl_API.xml -m size_h --only-set \
|
||||
-h _INDIRECT_SIZE_H_ \
|
||||
--header-tag _INDIRECT_SIZE_H_ \
|
||||
| $(INDENT) $(INDENT_FLAGS) > $@
|
||||
|
||||
$(MESA_GLX_DIR)/indirect_size.c: glX_proto_size.py $(COMMON_GLX)
|
||||
|
|
|
@ -25,9 +25,11 @@
|
|||
# Authors:
|
||||
# Ian Romanick <idr@us.ibm.com>
|
||||
|
||||
import argparse
|
||||
import sys, string
|
||||
|
||||
import gl_XML, glX_XML
|
||||
import license
|
||||
import sys, getopt, copy, string
|
||||
|
||||
|
||||
class glx_enum_function(object):
|
||||
|
@ -650,54 +652,52 @@ class PrintGlxReqSize_c(PrintGlxReqSize_common):
|
|||
return alias
|
||||
|
||||
|
||||
def show_usage():
|
||||
print "Usage: %s [-f input_file_name] -m output_mode [--only-get | --only-set] [--get-alias-set]" % sys.argv[0]
|
||||
print " -m output_mode Output mode can be one of 'size_c' or 'size_h'."
|
||||
print " --only-get Only emit 'get'-type functions."
|
||||
print " --only-set Only emit 'set'-type functions."
|
||||
print ""
|
||||
print "By default, both 'get' and 'set'-type functions are emitted."
|
||||
sys.exit(1)
|
||||
def _parser():
|
||||
"""Parse arguments and return a namespace."""
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.set_defaults(which_functions=(PrintGlxSizeStubs_common.do_get |
|
||||
PrintGlxSizeStubs_common.do_set))
|
||||
parser.add_argument('-f',
|
||||
dest='filename',
|
||||
default='gl_API.xml',
|
||||
help='an XML file describing an OpenGL API.')
|
||||
parser.add_argument('-m',
|
||||
dest='mode',
|
||||
choices=['size_c', 'size_h', 'reqsize_c', 'reqsize_h'],
|
||||
help='Which file to generate')
|
||||
getset = parser.add_mutually_exclusive_group()
|
||||
getset.add_argument('--only-get',
|
||||
dest='which_functions',
|
||||
action='store_const',
|
||||
const=PrintGlxSizeStubs_common.do_get,
|
||||
help='only emit "get-type" functions')
|
||||
getset.add_argument('--only-set',
|
||||
dest='which_functions',
|
||||
action='store_const',
|
||||
const=PrintGlxSizeStubs_common.do_set,
|
||||
help='only emit "set-type" functions')
|
||||
parser.add_argument('--header-tag',
|
||||
dest='header_tag',
|
||||
action='store',
|
||||
default=None,
|
||||
help='set header tag value')
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
file_name = "gl_API.xml"
|
||||
args = _parser()
|
||||
|
||||
try:
|
||||
(args, trail) = getopt.getopt(sys.argv[1:], "f:m:h:", ["only-get", "only-set", "header-tag"])
|
||||
except Exception,e:
|
||||
show_usage()
|
||||
|
||||
mode = None
|
||||
header_tag = None
|
||||
which_functions = PrintGlxSizeStubs_common.do_get | PrintGlxSizeStubs_common.do_set
|
||||
|
||||
for (arg,val) in args:
|
||||
if arg == "-f":
|
||||
file_name = val
|
||||
elif arg == "-m":
|
||||
mode = val
|
||||
elif arg == "--only-get":
|
||||
which_functions = PrintGlxSizeStubs_common.do_get
|
||||
elif arg == "--only-set":
|
||||
which_functions = PrintGlxSizeStubs_common.do_set
|
||||
elif (arg == '-h') or (arg == "--header-tag"):
|
||||
header_tag = val
|
||||
|
||||
if mode == "size_c":
|
||||
printer = PrintGlxSizeStubs_c( which_functions )
|
||||
elif mode == "size_h":
|
||||
printer = PrintGlxSizeStubs_h( which_functions )
|
||||
if header_tag:
|
||||
printer.header_tag = header_tag
|
||||
elif mode == "reqsize_c":
|
||||
if args.mode == "size_c":
|
||||
printer = PrintGlxSizeStubs_c(args.which_functions)
|
||||
elif args.mode == "size_h":
|
||||
printer = PrintGlxSizeStubs_h(args.which_functions)
|
||||
if args.header_tag is not None:
|
||||
printer.header_tag = args.header_tag
|
||||
elif args.mode == "reqsize_c":
|
||||
printer = PrintGlxReqSize_c()
|
||||
elif mode == "reqsize_h":
|
||||
elif args.mode == "reqsize_h":
|
||||
printer = PrintGlxReqSize_h()
|
||||
else:
|
||||
show_usage()
|
||||
|
||||
api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
|
||||
api = gl_XML.parse_GL_API(args.filename, glX_XML.glx_item_factory())
|
||||
|
||||
|
||||
printer.Print( api )
|
||||
printer.Print(api)
|
||||
|
|
Loading…
Reference in New Issue