public void convertEnums(List<Enum> enums, Signatures signatures, DeclarationsHolder out) { Identifier libraryClassName = out.getResolvedJavaIdentifier(); if (enums != null) { //out.println("public static class ENUMS {"); for (com.ochafik.lang.jnaerator.parser.Enum e : enums) { if (e.findParentOfType(Struct.class) != null) { continue; } if (skip(e.getTag() + "", result.config.skippedEnumNames)) continue; convertEnum(e, signatures, out, libraryClassName); } //out.println("}"); } } Map<String, Pair<Function, List<Function>>> functionAlternativesByNativeSignature = new LinkedHashMap<String, Pair<Function, List<Function>>>();
public void convertEnums(List<Enum> enums, Signatures signatures, DeclarationsHolder out) { Identifier libraryClassName = out.getResolvedJavaIdentifier(); if (enums != null) { //out.println("public static class ENUMS {"); for (com.ochafik.lang.jnaerator.parser.Enum e : enums) { if (e.findParentOfType(Struct.class) != null) { continue; } if (skip(e.getTag() + "", result.config.skippedEnumNames)) continue; convertEnum(e, signatures, out, libraryClassName); } //out.println("}"); } } Map<String, Pair<Function, List<Function>>> functionAlternativesByNativeSignature = new LinkedHashMap<String, Pair<Function, List<Function>>>();
@Override public Expression getEnumItemValue(Enum.EnumItem enumItem, boolean forceConstants) { Enum e = (Enum) enumItem.getParentElement(); if (forceConstants) { Map<String, EnumItemResult> values = getEnumValuesAndCommentsByName(e, null); EnumItemResult enumResult = values.get(enumItem.getName()); if (enumResult != null) { return enumResult.constantValue; } } Expression enumValue = findEnumItem(enumItem); if (e.getTag() != null) { enumValue = methodCall(enumValue, "value"); } return cast(typeRef(int.class), enumValue.setParenthesis(true)); }
@Override public Expression getEnumItemValue(Enum.EnumItem enumItem, boolean forceConstants) { Enum e = (Enum) enumItem.getParentElement(); if (forceConstants) { Map<String, EnumItemResult> values = getEnumValuesAndCommentsByName(e, null); EnumItemResult enumResult = values.get(enumItem.getName()); if (enumResult != null) { return enumResult.constantValue; } } Expression enumValue = findEnumItem(enumItem); if (e.getTag() != null) { enumValue = methodCall(enumValue, "value"); } return cast(typeRef(int.class), enumValue.setParenthesis(true)); }
@Override public void visitEnum(Enum e) { Element parent = e.getParentElement(); if (e.getTag() == null && !(parent instanceof TypeDef)) { // Hack to infer the enum name from the next typedef NSUInteger NSSomethingThatLooksLikeTheEnumsIdentifiers Element base = parent instanceof Declaration ? e.getParentElement() : e; Element next = base.getNextSibling(); if (!handleAppleEnumTypeDef(next, e)) { Element previous = base.getPreviousSibling(); Element beforePrevious = previous == null ? null : previous.getPreviousSibling(); if (previous != null && !(beforePrevious instanceof TaggedTypeRefDeclaration && ((TaggedTypeRefDeclaration) beforePrevious).getTaggedTypeRef() instanceof Enum)) { handleAppleEnumTypeDef(previous, e); } } } String comment = e.getCommentBefore(); if (comment != null) { // TODO parse cocoa comments here } super.visitEnum(e); }
@Override public void visitEnum(Enum e) { Element parent = e.getParentElement(); if (e.getTag() == null && !(parent instanceof TypeDef)) { // Hack to infer the enum name from the next typedef NSUInteger NSSomethingThatLooksLikeTheEnumsIdentifiers Element base = parent instanceof Declaration ? e.getParentElement() : e; Element next = base.getNextSibling(); if (!handleAppleEnumTypeDef(next, e)) { Element previous = base.getPreviousSibling(); Element beforePrevious = previous == null ? null : previous.getPreviousSibling(); if (previous != null && !(beforePrevious instanceof TaggedTypeRefDeclaration && ((TaggedTypeRefDeclaration) beforePrevious).getTaggedTypeRef() instanceof Enum)) { handleAppleEnumTypeDef(previous, e); } } } String comment = e.getCommentBefore(); if (comment != null) { // TODO parse cocoa comments here } super.visitEnum(e); }
defineTypeIdentifierInParentScope(e.getTag());