示例#1
0
    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
示例#2
0
 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
示例#3
0
 def __init__(self):
     self._fp = None
     # parse the defs file
     self.parser = defsparser.DefsParser(())
     self.overrides = override.Overrides()
     self.classmap = {}
     self.docs = {}
示例#4
0
def main(argv):
    defines = {}

    p = defsparser.DefsParser(argv[1], defines)

    p.startParsing()

    p.writeDefs()
示例#5
0
#!/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()
示例#6
0
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)
示例#7
0
    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
示例#8
0
#!/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)
示例#9
0
                                                              ], [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]