Ejemplo n.º 1
0
    def emitCode(self, gen):
        log.write('emit', 'emitCode class ', self, self.name)

        subGen = CodeGenerator(gen)
        subGen.typeBuilder = self.builder

        for decl in self.body.decls:
            decl.emitCode(subGen)

        self.builder.CreateType()
Ejemplo n.º 2
0
    def emitDeclaration(self, gen):
        from nine.codegenerator import CodeGenerator

        if self.__emitDecls: return
        self.__emitDecls = True

        log.write('emit', 'emitDeclaration iface ', self, self.name)

        subGen = CodeGenerator(gen)
        subGen.typeBuilder = self.builder

        for decl in self.body.decls:
            decl.emitDeclaration(subGen)
Ejemplo n.º 3
0
    def emitDeclaration(self, gen):
        from CLR.System.Reflection.Emit import CustomAttributeBuilder

        if self.__declsBuilt: return
        self.__declsBuilt = True

        log.write('emit', 'emitDeclaration class ', self, self.name)

        for attr in self.attributes:
            ctorInfo = attr.className.builder.GetConstructor([])
            attrBuilder = CustomAttributeBuilder(ctorInfo, [])
            self.builder.SetCustomAttribute(attrBuilder)

        # Be sure base classes get their stuff done before us.
        self.baseClass.emitDeclaration(gen)
        for iface in self.baseInterfaces:
            iface.emitDeclaration(gen)

        subGen = CodeGenerator(gen)
        subGen.typeBuilder = self.builder

        for decl in self.body.decls:
            decl.emitDeclaration(subGen)