if (si.isJavaStaticImportable()) continue; String name = si.getName(); resolvedIds.put(id, name); Identifier pack = id.resolveAllButLastIdentifier();
List<String> getNames(Declaration d) { if (d instanceof StoredDeclarations) { List<String> ret = new ArrayList<String>(); for (Declarator declarator : ((StoredDeclarations) d).getDeclarators()) { ret.add(declarator.resolveName()); } return ret; } else if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRef tr = ((TaggedTypeRefDeclaration) d).getTaggedTypeRef(); Identifier id = tr.getTag(); if (id instanceof SimpleIdentifier) { return Collections.singletonList(((SimpleIdentifier) id).getName()); } } return Collections.EMPTY_LIST; }
List<String> getNames(Declaration d) { if (d instanceof StoredDeclarations) { List<String> ret = new ArrayList<String>(); for (Declarator declarator : ((StoredDeclarations) d).getDeclarators()) { ret.add(declarator.resolveName()); } return ret; } else if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRef tr = ((TaggedTypeRefDeclaration) d).getTaggedTypeRef(); Identifier id = tr.getTag(); if (id instanceof SimpleIdentifier) { return Collections.singletonList(((SimpleIdentifier) id).getName()); } } return Collections.EMPTY_LIST; }
TypeRef tr = findObjCClass(name); if (tr == null) { tr = findObjCClass(new Identifier.SimpleIdentifier(((Identifier.SimpleIdentifier) name).getName()));
TypeRef tr = findObjCClass(name); if (tr == null) { tr = findObjCClass(new Identifier.SimpleIdentifier(((Identifier.SimpleIdentifier) name).getName()));
i.setName((pre!=null?pre.getText():null) + i.getName()); identifier = i;
if (rawEnumName != null && rawEnumName.resolveLastSimpleIdentifier().getName() != null) { hasEnumClass = true;
if (rawEnumName != null && rawEnumName.resolveLastSimpleIdentifier().getName() != null) { hasEnumClass = true;
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 Declaration resolveDown(DeclarationsHolder dh, Iterator<SimpleIdentifier> simpleIds) { String nextId = simpleIds.next().getName(); for (Declaration d : dh.getDeclarations()) { List<String> names = getNames(d); if (names.contains(nextId)) { if (!simpleIds.hasNext()) { return d; } else { DeclarationsHolder sub = null; if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRef ttr = ((TaggedTypeRefDeclaration) d).getTaggedTypeRef(); if (ttr instanceof DeclarationsHolder) { sub = (DeclarationsHolder) ttr; } } if (sub == null) { return null; } return resolveDown(sub, simpleIds); } } } return null; }
public void convertEnum(Enum e, Signatures signatures, DeclarationsHolder out, Identifier libraryClassName) { if (e.isForwardDeclaration()) { return; } Identifier rawEnumName = getActualTaggedTypeName(e); Map<String, EnumItemResult> results = result.typeConverter.getEnumValuesAndCommentsByName(e, libraryClassName); boolean hasEnumClass = false; if (rawEnumName != null && rawEnumName.resolveLastSimpleIdentifier().getName() != null) { Identifier enumName = result.typeConverter.getValidJavaIdentifier(rawEnumName); if (!signatures.addClass(enumName)) { return; } hasEnumClass = true; Struct struct = publicStaticClass(enumName, null, Struct.Type.JavaInterface, e); out.addDeclaration(new TaggedTypeRefDeclaration(struct)); if (!result.config.noComments) { struct.addToCommentBefore("enum values"); } out = struct; signatures = new Signatures(); } outputEnumItemsAsConstants(results, out, signatures, libraryClassName, hasEnumClass); } Map<String, Pair<Function, List<Function>>> functionAlternativesByNativeSignature = new LinkedHashMap<String, Pair<Function, List<Function>>>();
public Declaration resolveDown(DeclarationsHolder dh, Iterator<SimpleIdentifier> simpleIds) { String nextId = simpleIds.next().getName(); for (Declaration d : dh.getDeclarations()) { List<String> names = getNames(d); if (names.contains(nextId)) { if (!simpleIds.hasNext()) { return d; } else { DeclarationsHolder sub = null; if (d instanceof TaggedTypeRefDeclaration) { TaggedTypeRef ttr = ((TaggedTypeRefDeclaration) d).getTaggedTypeRef(); if (ttr instanceof DeclarationsHolder) { sub = (DeclarationsHolder) ttr; } } if (sub == null) { return null; } return resolveDown(sub, simpleIds); } } } return null; }
public void convertEnum(Enum e, Signatures signatures, DeclarationsHolder out, Identifier libraryClassName) { if (e.isForwardDeclaration()) { return; } Identifier rawEnumName = getActualTaggedTypeName(e); Map<String, EnumItemResult> results = result.typeConverter.getEnumValuesAndCommentsByName(e, libraryClassName); boolean hasEnumClass = false; if (rawEnumName != null && rawEnumName.resolveLastSimpleIdentifier().getName() != null) { Identifier enumName = result.typeConverter.getValidJavaIdentifier(rawEnumName); if (!signatures.addClass(enumName)) { return; } hasEnumClass = true; Struct struct = publicStaticClass(enumName, null, Struct.Type.JavaInterface, e); out.addDeclaration(new TaggedTypeRefDeclaration(struct)); if (!result.config.noComments) { struct.addToCommentBefore("enum values"); } out = struct; signatures = new Signatures(); } outputEnumItemsAsConstants(results, out, signatures, libraryClassName, hasEnumClass); } Map<String, Pair<Function, List<Function>>> functionAlternativesByNativeSignature = new LinkedHashMap<String, Pair<Function, List<Function>>>();
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; }
@SuppressWarnings("unchecked") @Override public void visitIdentifier(Identifier e) { super.visitIdentifier(e); if (e.getParentElement() instanceof QualifiedIdentifier) { return; } Element parent = e.getParentElement(); if (!(parent instanceof TypeRef)) { return; } e = e.clone(); SimpleIdentifier si = e.resolveLastSimpleIdentifier(); si.setTemplateArguments(Collections.EMPTY_LIST); String name = si.getName(); Set<Identifier> ids = identifiersBySimpleName.get(name); if (ids == null) { identifiersBySimpleName.put(name, ids = new HashSet<Identifier>()); } ids.add(e); } });
static boolean isNull(Identifier i) { return i == null || i.resolveLastSimpleIdentifier() == null || i.resolveLastSimpleIdentifier().getName() == null; }
static boolean isNull(Identifier i) { return i == null || i.resolveLastSimpleIdentifier() == null || i.resolveLastSimpleIdentifier().getName() == null; }
public Identifier eraseTemplateArguments() { return new SimpleIdentifier(getName()); } public List<Expression> getTemplateArguments() {
public void visitSimpleIdentifier(SimpleIdentifier e) { append(e.getName()); if (!e.getTemplateArguments().isEmpty()) { append("<"); implode(e.getTemplateArguments(), ", "); append(" >"); } }