1 34 35 package org.logicalcobwebs.asm.tree; 36 37 import org.logicalcobwebs.asm.ClassAdapter; 38 import org.logicalcobwebs.asm.CodeVisitor; 39 import org.logicalcobwebs.asm.ClassVisitor; 40 import org.logicalcobwebs.asm.Attribute; 41 42 63 64 public class TreeClassAdapter extends ClassAdapter { 65 66 69 70 public ClassNode classNode; 71 72 77 78 public TreeClassAdapter (final ClassVisitor cv) { 79 super(cv); 80 } 81 82 public void visit ( 83 final int access, 84 final String name, 85 final String superName, 86 final String [] interfaces, 87 final String sourceFile) 88 { 89 classNode = new ClassNode(access, name, superName, interfaces, sourceFile); 90 } 91 92 public void visitInnerClass ( 93 final String name, 94 final String outerName, 95 final String innerName, 96 final int access) 97 { 98 InnerClassNode icn = new InnerClassNode(name, outerName, innerName, access); 99 classNode.innerClasses.add(icn); 100 } 101 102 public void visitField ( 103 final int access, 104 final String name, 105 final String desc, 106 final Object value, 107 final Attribute attrs) 108 { 109 FieldNode fn = new FieldNode(access, name, desc, value, attrs); 110 classNode.fields.add(fn); 111 } 112 113 public CodeVisitor visitMethod ( 114 final int access, 115 final String name, 116 final String desc, 117 final String [] exceptions, 118 final Attribute attrs) 119 { 120 MethodNode mn = new MethodNode(access, name, desc, exceptions, attrs); 121 classNode.methods.add(mn); 122 return new TreeCodeAdapter(mn); 123 } 124 125 public void visitAttribute (final Attribute attr) { 126 attr.next = classNode.attrs; 127 classNode.attrs = attr; 128 } 129 130 public void visitEnd () { 131 classNode.accept(cv); 132 } 133 } 134 | Popular Tags |