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()
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)
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)