public void outputObjectiveCClass(Struct in) throws IOException { Identifier fullClassName = getFullClassName(in); Signatures signatures = new Signatures(); Struct s = generateObjectiveCClass(in, signatures); result.notifyBeforeWritingClass(fullClassName, s, signatures, result.getLibrary(in)); PrintWriter out = result.classOutputter.getClassSourceWriter(fullClassName.toString()); result.printJavaClass(getPackageName(in), s, out); out.close(); } static Identifier NSObjectIdent = ident(NSObject.class),
public void generateObjectiveCClasses() throws IOException { for (Struct in : Result.getMap(result.classes, Type.ObjCClass).values()) { outputObjectiveCClass(in); } for (Struct protocol : Result.getMap(result.classes, Type.ObjCProtocol).values()) { for (String parent : getForcedProtocolParents(String.valueOf(protocol.getTag()))) { protocol.addParent(ident(parent)); } outputObjectiveCClass(protocol); } }
Identifier catId = getFullClassName(catIn); if (add(instanceStruct, createCastMethod(ident(categName), catId, false), signatures)) { classStruct.addDeclaration(createCastMethod(ident(categName), ident(catId, classInterfaceNameInCategoriesAndProtocols), true)); outputObjectiveCClass(catIn); Identifier id = getFullClassName(getStruct(p.getName(), Type.ObjCProtocol)); if (id != null) { interfacesForInstance.add(typeRef(id)); addAllocIfMissing(in, "alloc"); addAllocIfMissing(in, "new_"); Identifier fullClassName = getFullClassName(in); outputMembers(signatures, in, instanceStruct, structThatReceivesStaticMethods, in.getDeclarations(), isProtocol || isCategory);
private void outputMembers(Signatures signatures, Struct in, Struct instanceStruct, Struct classStruct, List<Declaration> declarations, boolean isProtocol) throws IOException { Identifier fullClassName = getFullClassName(in); instanceStruct.setResolvedJavaIdentifier(fullClassName); if (!add(classStruct, decl, signatures, objSigs, clasSigs)) { continue; instanceStruct.addDeclaration(createProxyCopy(f, (Function) decl)); signatures.addMethod((Function) decl); if (!add(instanceStruct, decl, signatures, objSigs)) { continue; Function addedF = createCreateCopyFromInit((Function) decl, instanceStruct); signatures.addMethod((Function) decl); instanceStruct.addDeclaration(addedF);
objectiveCGenerator = new ObjectiveCGenerator(this); universalReconciliator = new UniversalReconciliator();
public SimpleTypeRef findStructRef(Struct s, Identifier libraryClassName) { if (s == null) { return null; } switch (s.getType()) { case ObjCClass: case ObjCProtocol: return typeRef(result.objectiveCGenerator.getFullClassName(s)); default: return findStructRef(s, result.declarationsConverter.getActualTaggedTypeName(s), libraryClassName); } } // public String find(String name, Element e, String callerLibraryClass) {
result.objectiveCGenerator.generateObjectiveCClasses();
Identifier catId = getFullClassName(catIn); if (add(instanceStruct, createCastMethod(ident(categName), catId, false), signatures)) { classStruct.addDeclaration(createCastMethod(ident(categName), ident(catId, classInterfaceNameInCategoriesAndProtocols), true)); outputObjectiveCClass(catIn); Identifier id = getFullClassName(getStruct(p.getName(), Type.ObjCProtocol)); if (id != null) { interfacesForInstance.add(typeRef(id)); addAllocIfMissing(in, "alloc"); addAllocIfMissing(in, "new_"); Identifier fullClassName = getFullClassName(in); outputMembers(signatures, in, instanceStruct, structThatReceivesStaticMethods, in.getDeclarations(), isProtocol || isCategory);
private void outputMembers(Signatures signatures, Struct in, Struct instanceStruct, Struct classStruct, List<Declaration> declarations, boolean isProtocol) throws IOException { Identifier fullClassName = getFullClassName(in); instanceStruct.setResolvedJavaIdentifier(fullClassName); if (!add(classStruct, decl, signatures, objSigs, clasSigs)) { continue; instanceStruct.addDeclaration(createProxyCopy(f, (Function) decl)); signatures.addMethod((Function) decl); if (!add(instanceStruct, decl, signatures, objSigs)) { continue; Function addedF = createCreateCopyFromInit((Function) decl, instanceStruct); signatures.addMethod((Function) decl); instanceStruct.addDeclaration(addedF);
public void init() { declarationsConverter = config.runtime.createDeclarationsConverter(this); globalsGenerator = config.runtime.createGlobalsGenerator(this); typeConverter = config.runtime.createTypeConversion(this); reifier = new Reifier(this); objectiveCGenerator = new ObjectiveCGenerator(this); universalReconciliator = new UniversalReconciliator(); bridjer = new BridJer(this); } Set<Identifier> javaPackages = new TreeSet<Identifier>();
public SimpleTypeRef findStructRef(Struct s, Identifier libraryClassName) { if (s == null) { return null; } switch (s.getType()) { case ObjCClass: case ObjCProtocol: return typeRef(result.objectiveCGenerator.getFullClassName(s)); default: return findStructRef(s, result.declarationsConverter.getActualTaggedTypeName(s), libraryClassName); } } // public String find(String name, Element e, String callerLibraryClass) {
result.objectiveCGenerator.generateObjectiveCClasses();
public void outputObjectiveCClass(Struct in) throws IOException { Identifier fullClassName = getFullClassName(in); Signatures signatures = new Signatures(); Struct s = generateObjectiveCClass(in, signatures); result.notifyBeforeWritingClass(fullClassName, s, signatures, result.getLibrary(in)); PrintWriter out = result.classOutputter.getClassSourceWriter(fullClassName.toString()); result.printJavaClass(getPackageName(in), s, out); out.close(); } static Identifier NSObjectIdent = ident(NSObject.class),
public void init() { declarationsConverter = config.runtime.createDeclarationsConverter(this); globalsGenerator = config.runtime.createGlobalsGenerator(this); typeConverter = config.runtime.createTypeConversion(this); reifier = new Reifier(this); objectiveCGenerator = new ObjectiveCGenerator(this); universalReconciliator = new UniversalReconciliator(); bridjer = new BridJer(this); } Set<Identifier> javaPackages = new TreeSet<Identifier>();
public void generateObjectiveCClasses() throws IOException { for (Struct in : Result.getMap(result.classes, Type.ObjCClass).values()) { outputObjectiveCClass(in); } for (Struct protocol : Result.getMap(result.classes, Type.ObjCProtocol).values()) { for (String parent : getForcedProtocolParents(String.valueOf(protocol.getTag()))) { protocol.addParent(ident(parent)); } outputObjectiveCClass(protocol); } }
public Identifier findObjCClassIdent(Identifier name) { if (name instanceof SimpleIdentifier) { SimpleIdentifier sname = (SimpleIdentifier) name; String n = sname.getName(); if (n.equals("id") && sname.getTemplateArguments().size() == 1/* && conversionMode != TypeConversionMode.NativeParameter && conversionMode != TypeConversionMode.NativeParameterWithStructsPtrPtrs*/) { Expression x = sname.getTemplateArguments().get(0); TypeRefExpression trx = x instanceof TypeRefExpression ? (TypeRefExpression) x : null; SimpleTypeRef str = trx.getType() instanceof SimpleTypeRef ? (SimpleTypeRef) trx.getType() : null; if (str != null) { name = str.getName(); } } } Class<?> class1 = predefObjCClasses.get(name.toString()); if (class1 != null) { return ident(class1); } Struct s = result.resolveObjCClass(name); if (s != null) { return result.objectiveCGenerator.getFullClassName(s); } return null; }
public Identifier findObjCClassIdent(Identifier name) { if (name instanceof SimpleIdentifier) { SimpleIdentifier sname = (SimpleIdentifier) name; String n = sname.getName(); if (n.equals("id") && sname.getTemplateArguments().size() == 1/* && conversionMode != TypeConversionMode.NativeParameter && conversionMode != TypeConversionMode.NativeParameterWithStructsPtrPtrs*/) { Expression x = sname.getTemplateArguments().get(0); TypeRefExpression trx = x instanceof TypeRefExpression ? (TypeRefExpression) x : null; SimpleTypeRef str = trx.getType() instanceof SimpleTypeRef ? (SimpleTypeRef) trx.getType() : null; if (str != null) { name = str.getName(); } } } Class<?> class1 = predefObjCClasses.get(name.toString()); if (class1 != null) { return ident(class1); } Struct s = result.resolveObjCClass(name); if (s != null) { return result.objectiveCGenerator.getFullClassName(s); } return null; }
Identifier fullName = objectiveCGenerator.getFullClassName(struct); objectiveCClassesFullNames.add(fullName); struct.setResolvedJavaIdentifier(fullName);
Identifier fullName = objectiveCGenerator.getFullClassName(struct); objectiveCClassesFullNames.add(fullName); struct.setResolvedJavaIdentifier(fullName);