public DexAnnotationAble visitParameterAnnotation(int index) { if (visitor == null) { return null; } return visitor.visitParameterAnnotation(index); }
private void read_annotation_set_ref_list(int parameter_annotation_offset, DexMethodVisitor dmv) { ByteBuffer in = annotationSetRefListIn; in.position(parameter_annotation_offset); int size = in.getInt(); for (int j = 0; j < size; j++) { int param_annotation_offset = in.getInt(); if (param_annotation_offset == 0) { continue; } DexAnnotationAble dpav = dmv.visitParameterAnnotation(j); try { if (dpav != null) { read_annotation_set_item(param_annotation_offset, dpav); } } catch (Exception e) { throw new DexException(e, "while accept parameter annotation in parameter:[%d]", j); } } }
acceptAnnotations(annotationContexts, dexMethodVisitor.visitParameterAnnotation(index));
public void accept(DexMethodVisitor mv) { if (anns != null) { for (DexAnnotationNode ann : anns) { ann.accept(mv); } } if (parameterAnns != null) { for (int i = 0; i < parameterAnns.length; i++) { List<DexAnnotationNode> ps = parameterAnns[i]; if (ps != null) { DexAnnotationAble av = mv.visitParameterAnnotation(i); if (av != null) { for (DexAnnotationNode p : ps) { p.accept(av); } } } } } if (codeNode != null) { codeNode.accept(mv); } }
@Test public void test() { ASMifierFileV fv = new ASMifierFileV(new File("target/asmftest").toPath(), "a.b"); DexClassVisitor cv = fv.visit(ACC_PUBLIC, "La/f;", "Ljava/lang/Object;", null); DexFieldVisitor f2v = cv.visitField(ACC_PUBLIC, new Field("La/f;", "abc", "I"), null); f2v.visitEnd(); DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La/f;", "zz", new String[0], "I")); DexAnnotationAble pv = mv.visitParameterAnnotation(2); DexAnnotationVisitor dav = pv.visitAnnotation("Leeeff;", Visibility.BUILD); dav.visitEnd(); DexCodeVisitor dcv = mv.visitCode(); dcv.visitConstStmt(Op.FILL_ARRAY_DATA, 0, new int[] { 1, 2, 3 }); dcv.visitStmt0R(Op.RETURN_VOID); dcv.visitEnd(); mv.visitEnd(); cv.visitEnd(); fv.visitEnd(); } }
@Test public void test3() { DexFileWriter w = new DexFileWriter(); DexClassVisitor cv = w.visit(0x1, "La/c;", null, new String[]{"Ljava/lang/Comparable;"}); cv.visitSource("c.java"); cv.visitAnnotation("LAnn;", Visibility.SYSTEM).visitEnd(); DexFieldVisitor fv = cv.visitField(ACC_PUBLIC | ACC_STATIC, new Field("La/c;", "a", "I"), 55); fv.visitAnnotation("LE;", Visibility.RUNTIME).visitEnd(); fv.visitEnd(); DexMethodVisitor mv = cv.visitMethod(ACC_STATIC, new Method("La/c;", "bb", new String[]{"I"}, "V")); mv.visitAnnotation("Laaa;", Visibility.RUNTIME).visitEnd(); DexAnnotationVisitor dav = mv.visitParameterAnnotation(0).visitAnnotation("Laaa;", Visibility.RUNTIME); dav.visit("abc", true); DexAnnotationVisitor dav2 = dav.visitArray("efg"); dav2.visit("", "123"); dav2.visit("", "456"); dav2.visitEnd(); dav.visitEnd(); DexCodeVisitor code = mv.visitCode(); code.visitRegister(2); code.visitStmt0R(Op.RETURN_VOID); code.visitEnd(); mv.visitEnd(); cv.visitEnd(); w.visitEnd(); w.toByteArray(); }
public DexAnnotationAble visitParameterAnnotation(int index) { if (visitor == null) { return null; } return visitor.visitParameterAnnotation(index); }
private void read_annotation_set_ref_list(int parameter_annotation_offset, DexMethodVisitor dmv) { ByteBuffer in = annotationSetRefListIn; in.position(parameter_annotation_offset); int size = in.getInt(); for (int j = 0; j < size; j++) { int param_annotation_offset = in.getInt(); if (param_annotation_offset == 0) { continue; } DexAnnotationAble dpav = dmv.visitParameterAnnotation(j); try { if (dpav != null) { read_annotation_set_item(param_annotation_offset, dpav); } } catch (Exception e) { throw new DexException(e, "while accept parameter annotation in parameter:[%d]", j); } } }
public void accept(DexMethodVisitor mv) { if (anns != null) { for (DexAnnotationNode ann : anns) { ann.accept(mv); } } if (parameterAnns != null) { for (int i = 0; i < parameterAnns.length; i++) { List<DexAnnotationNode> ps = parameterAnns[i]; if (ps != null) { DexAnnotationAble av = mv.visitParameterAnnotation(i); if (av != null) { for (DexAnnotationNode p : ps) { p.accept(av); } } } } } if (codeNode != null) { codeNode.accept(mv); } }
for (int i = 0; i < annotationSetItems.length; ++i) { AnnotationSetItem annotationSetItem = annotationSetItems[i]; DexAnnotationAble parameterAw = mw.visitParameterAnnotation(i); if (null != annotationSetItem && null != annotationSetItem.annotations) { for (AnnotationItem annotationItem : annotationSetItem.annotations) {