Exemplo n.º 1
0
    def dumpFuncs(self):
        meths = []
        cases = []

        args = ["PyObject", ("PyFrame", "frame")]
        access = "private static"

        callargs = [jast.Identifier("frame")]

        for name, funcid, code in self.funccodes:
            funcname = self.uniquename(name)
            meths.append(jast.Method(funcname, access, args, clean(code)))

            body = jast.Return(jast.InvokeStatic(self.name, funcname,
                                                 callargs))
            cases.append(
                [jast.IntegerConstant(funcid),
                 jast.FreeBlock([body])])

        defaultCase = jast.FreeBlock([jast.Return(jast.Null)])
        switch = jast.Block(
            [jast.Switch(jast.Identifier('index'), cases, defaultCase)])

        meths.insert(
            0,
            jast.Method("call_function", "public",
                        ["PyObject", ("int", "index"),
                         ("PyFrame", "frame")], switch))
        self.superclass = "PyFunctionTable"
        return meths
Exemplo n.º 2
0
 def makeClassFile(self):
     header = []
     if self.package is not None:
         header.append(jast.Identifier("package %s" % self.package))
         header.append(jast.Blank)
     header.append(jast.Import("org.python.core.*"))
     header.append(jast.Blank)
     return jast.FreeBlock([header, self.makeClass()])