/** * Visits an enumeration value of the annotation. * * @param name * the value name. * @param desc * the class descriptor of the enumeration class. * @param value * the actual enumeration value. */ public void visitEnum(String name, String desc, String value) { if (this.visitor != null) { visitor.visitEnum(name, desc, value); } }
public static void doAccept(DexAnnotationVisitor dexAnnotationVisitor, String k, Object value) { if (value instanceof ArrayList) { DexAnnotationVisitor a = dexAnnotationVisitor.visitArray(k); for (Object o : (ArrayList) value) { doAccept(a, null, o); } a.visitEnd(); } else if (value instanceof Ann) { Ann ann = (Ann) value; DexAnnotationVisitor a = dexAnnotationVisitor.visitAnnotation(k, ann.name); for (Map.Entry<String, Object> e : ann.elements) { doAccept(a, e.getKey(), e.getValue()); } a.visitEnd(); } else if (value instanceof Field) { Field f = (Field) value; dexAnnotationVisitor.visitEnum(k, f.getOwner(), f.getName()); } else { dexAnnotationVisitor.visit(k, value); } }
public static void acceptAnnotationItem(DexAnnotationVisitor dav, String name, Object o) { if (o instanceof Object[]) { DexAnnotationVisitor arrayVisitor = dav.visitArray(name); if (arrayVisitor != null) { Object[] array = (Object[]) o; for (Object e : array) { acceptAnnotationItem(arrayVisitor, null, e); } arrayVisitor.visitEnd(); } } else if (o instanceof DexAnnotationNode) { DexAnnotationNode ann = (DexAnnotationNode) o; DexAnnotationVisitor av = dav.visitAnnotation(name, ann.type); if (av != null) { for (DexAnnotationNode.Item item : ann.items) { acceptAnnotationItem(av, item.name, item.value); } av.visitEnd(); } } else if (o instanceof Field) { Field f = (Field) o; dav.visitEnum(name, f.getType(), f.getName()); } else { dav.visit(name, o); } }
/** * Visits an enumeration value of the annotation. * * @param name * the value name. * @param desc * the class descriptor of the enumeration class. * @param value * the actual enumeration value. */ public void visitEnum(String name, String desc, String value) { if (this.visitor != null) { visitor.visitEnum(name, desc, value); } }
public static void acceptAnnotationItem(DexAnnotationVisitor dav, String name, Object o) { if (o instanceof Object[]) { DexAnnotationVisitor arrayVisitor = dav.visitArray(name); if (arrayVisitor != null) { Object[] array = (Object[]) o; for (Object e : array) { acceptAnnotationItem(arrayVisitor, null, e); } arrayVisitor.visitEnd(); } } else if (o instanceof DexAnnotationNode) { DexAnnotationNode ann = (DexAnnotationNode) o; DexAnnotationVisitor av = dav.visitAnnotation(name, ann.type); if (av != null) { for (DexAnnotationNode.Item item : ann.items) { acceptAnnotationItem(av, item.name, item.value); } av.visitEnd(); } } else if (o instanceof Field) { Field f = (Field) o; dav.visitEnum(name, f.getType(), f.getName()); } else { dav.visit(name, o); } }
private void writeAnnotationArrayValue(DexAnnotationVisitor aw, EncodedArray array) { for (EncodedValue value : array.values) { String name = null; Object decodeValue = decodeValue(value); if (value.valueType == VALUE_ENUM) { Field field = (Field) decodeValue; aw.visitEnum(name, field.getOwner(), field.getName()); } else if (decodeValue instanceof EncodedAnnotation) { EncodedAnnotation aannotation = (EncodedAnnotation) decodeValue; DexAnnotationVisitor aaw = aw.visitAnnotation(name, aannotation.type.descriptor.stringData.string); writeAnnotation(aaw, aannotation); aaw.visitEnd(); } else if (decodeValue instanceof EncodedArray) { DexAnnotationVisitor aaw = aw.visitArray(name); writeAnnotationArrayValue(aaw, (EncodedArray) decodeValue); aaw.visitEnd(); } else if (decodeValue instanceof Object[]) { Object[] values = (Object[]) decodeValue; EncodedArray aarray = new EncodedArray(); for (Object avalue : values) { aarray.values.add(EncodedValue.wrap(mFw.cp.wrapEncodedItem(avalue))); } DexAnnotationVisitor aaw = aw.visitArray(name); writeAnnotationArrayValue(aaw, aarray); aaw.visitEnd(); } else { aw.visit(name, decodeValue); } } }
if (element.value.valueType == VALUE_ENUM) { Field field = (Field) decodeValue; aw.visitEnum(name, field.getOwner(), field.getName()); } else if (decodeValue instanceof EncodedAnnotation) { EncodedAnnotation aannotation = (EncodedAnnotation) decodeValue;