def __init__(self, fp=None, prefix=None, ns=None, verbose=False, defsfilter=None): if not fp: fp = sys.stdout self.fp = fp self.prefix = prefix self.namespace = ns self.verbose = verbose self._enums = {} self._objects = {} self._functions = {} if defsfilter: filter = defsparser.DefsParser(defsfilter) filter.startParsing() for func in filter.functions + filter.methods.values(): self._functions[func.c_name] = func for obj in filter.objects + filter.boxes + filter.interfaces: self._objects[obj.c_name] = obj for obj in filter.enums: self._enums[obj.c_name] = obj
def __init__(self, defs, fp=None, prefix=None, verbose=False, defsfiles=None, defines={}, genpropgetsets=False): self.defs = defs self.objnames = reduce(list.__add__, [[o.name for o in defs[base]] for base in defkeys.split()[:3]]) self.othernames = reduce(list.__add__, [[o.name for o in defs[base]] for base in defkeys.split()[3:]]) self.objifacedefs = dict( reduce(list.__add__, [[(o.name, o) for o in defs[base]] for base in defkeys.split()[1:3]])) self.fp = (fp, sys.stdout)[not fp] self.prefix = prefix self.verbose = verbose self.genpropgetsets = genpropgetsets self._c_names = {} for defsfile in defsfiles: filter = defsparser.DefsParser(defsfile, defines) filter.startParsing() self._c_names.update(filter.c_name) for vdef in filter.virtuals: self._c_names[vdef.of_object + '.' + vdef.name] = None return
def __init__(self): self._fp = None # parse the defs file self.parser = defsparser.DefsParser(()) self.overrides = override.Overrides() self.classmap = {} self.docs = {}
def main(argv): defines = {} p = defsparser.DefsParser(argv[1], defines) p.startParsing() p.writeDefs()
#!/usr/bin/env python # -*- Mode: Python; py-indent-offset: 4 -*- import sys import defsparser from optparse import OptionParser parser = OptionParser(usage="usage: %prog [options] generated-defs old-defs") parser.add_option("-p", "--merge-parameters", help="Merge changes in function/methods parameter lists", action="store_true", dest="parmerge", default=False) (options, args) = parser.parse_args() if len(args) != 2: parser.error("wrong number of arguments") newp = defsparser.DefsParser(args[0]) oldp = defsparser.DefsParser(args[1]) newp.startParsing() oldp.startParsing() newp.merge(oldp, options.parmerge) newp.write_defs()
def read_overrides(filename): rexp = re.compile('_wrap_([a-zA-Z0-9_]*),') input = open(filename) while 1: line = input.readline() if not line: break match = rexp.search(line) if match: overrides.append(match.group(1)) input.close() return overrides if __name__ == '__main__': import tempfile # Convert the new defs into old defs. overrides = read_overrides('gtkextramodule.c') parser = defsparser.DefsParser('gtkextra.defs') parser.startParsing() defsname = tempfile.mktemp() defs = open(defsname, "w") write_defs(parser, overrides, defs) defs.close() # Create gtkextramodule_defs.h and gtkextramodule_impl.h. p = generate.FilteringParser(input=defsname, prefix='gtkextramodule') generate.TypesParser.define_object(p, "GtkWidget") generate.TypesParser.define_object(p, "GtkAdjustment") p.startParsing() os.unlink(defsname)
elif arg.startswith('--codegendir='): codegendir = arg.split('=', 2)[1] del sys.argv[i] else: i += 1 if codegendir: sys.path.insert(0, codegendir) del codegendir # Load it import docextract, defsparser, override, definitions, string docs = docextract.extract(doc_dirs) p = defsparser.DefsParser(defs_file) p.startParsing() # create list of class c_class_list = [] for obj in p.objects: c_class_list.append(get_c_name(obj.c_name)) add_override_methods(p) f = file(wrap_file) wrap_file_cont = f.read() override_file_cont = "" override = override.Overrides() #enums
#!/usr/bin/env python # -*- Mode: Python; py-indent-offset: 4 -*- import sys import defsparser if len(sys.argv) < 3: sys.stderr.write("Usage: missingdefs.py generated-defs old-defs\n") sys.exit(1) newp = defsparser.DefsParser(sys.argv[1]) oldp = defsparser.DefsParser(sys.argv[2]) newp.startParsing() oldp.startParsing() newp.printMissing(oldp)
], [True]) extended_parameters = {} #extended_parameters['gwy_interpolation_resolve_coeffs_1d'] = [['data'],['data|n']] #extended_parameters['gwy_selection_get_data'] = [['data'],['data|ret']] if len(sys.argv) < 2: sys.stderr.write( "pygwy-fix-defs.py: Codegen location required as first parameter and first parameter not provided. Exiting.\n" ) exit(1) sys.path.insert(0, sys.argv[1]) # fix: "/usr/share/pygtk/2.0/codegen") import defsparser, definitions parser = defsparser.DefsParser("pygwy.defs.tmp") parser.startParsing() for f in parser.functions: if f.name.endswith("_wrap"): f.name = f.name.replace("_wrap", "") #function name cannot start by number in Python if f.name[0] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']: f.name = "a_" + f.name if extra_method_type.has_key(f.c_name): for p in f.params: for i in range(len(extra_method_type[f.c_name][0])): if p.pname == extra_method_type[f.c_name][0][i]: p.ptype = extra_method_type[f.c_name][1][i] if len(extra_method_type[f.c_name]) == 3: p.pnull = extra_method_type[f.c_name][2][i]