From 9f57d30ebc834e3f45008283349387303d9d29d5 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 14 Jan 2010 16:18:42 +0000 Subject: Tools: add script to generate a listing of Lasso ABI * tools/api.py: use parser from the binding generator to output a list of symbols * bindings/bindings.py; add private flags to not clobber 'private' fields of structures or methods not exported in bindings like _get_type. --- tools/api.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tools/api.py (limited to 'tools') diff --git a/tools/api.py b/tools/api.py new file mode 100644 index 00000000..d1593b32 --- /dev/null +++ b/tools/api.py @@ -0,0 +1,46 @@ +import sys +import os.path +sys.path.append(os.path.join(os.path.dirname(__file__),'../bindings')) +import bindings + + + +def main(args): + class opt(): + pass + options = opt() + srcdir = args[1] + options.srcdir = srcdir + options.idwsf = None + options.language = None + options.exception_doc = None + bindings.binding = bindings.BindingData(options) + bindings.exclude_private = False + bindings.parse_headers(srcdir) + binding = bindings.binding + d = {} + for x in binding.constants: + d[x[1]] = x + for x in binding.enums: + d[x] = None + for x in binding.functions: + d[x.name] = x + for x in binding.structs: + d[x.name] = x + l = d.keys() + l.sort() + for x in l: + if isinstance(d[x], bindings.Function): + print d[x].return_type, " ", + print x, + print '(', ', '.join(map(lambda x: x[0] + ' ' + x[1], d[x].args)), ')' + elif isinstance(d[x], bindings.Struct): + print 'struct', x, '{ ', + print ', '.join(map(lambda x: x[0] + ' ' + x[1], d[x].members)), + print ' }' + else: + print x + +if __name__ == "__main__": + main(sys.argv) + -- cgit