/* * This file is part of JOP, the Java Optimized Processor * see <http://www.jopdesign.com/> * * Copyright (C) 2010, Stefan Hepp (stefan@stefant.org). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.jopdesign.common.graphutils; import com.jopdesign.common.ClassInfo; import com.jopdesign.common.FieldInfo; import com.jopdesign.common.MemberInfo; import com.jopdesign.common.MethodCode; import com.jopdesign.common.MethodInfo; import com.jopdesign.common.bcel.AnnotationAttribute; import com.jopdesign.common.bcel.CustomAttribute; import com.jopdesign.common.bcel.EnclosingMethod; import com.jopdesign.common.bcel.ParameterAnnotationAttribute; import com.jopdesign.common.bcel.StackMapTable; import org.apache.bcel.classfile.Code; import org.apache.bcel.classfile.ConstantClass; import org.apache.bcel.classfile.ConstantDouble; import org.apache.bcel.classfile.ConstantFieldref; import org.apache.bcel.classfile.ConstantFloat; import org.apache.bcel.classfile.ConstantInteger; import org.apache.bcel.classfile.ConstantInterfaceMethodref; import org.apache.bcel.classfile.ConstantLong; import org.apache.bcel.classfile.ConstantMethodref; import org.apache.bcel.classfile.ConstantNameAndType; import org.apache.bcel.classfile.ConstantString; import org.apache.bcel.classfile.ConstantUtf8; import org.apache.bcel.classfile.ConstantValue; import org.apache.bcel.classfile.Deprecated; import org.apache.bcel.classfile.ExceptionTable; import org.apache.bcel.classfile.InnerClasses; import org.apache.bcel.classfile.LineNumberTable; import org.apache.bcel.classfile.LocalVariableTable; import org.apache.bcel.classfile.Signature; import org.apache.bcel.classfile.SourceFile; import org.apache.bcel.classfile.StackMap; import org.apache.bcel.classfile.Synthetic; import org.apache.bcel.classfile.Unknown; import org.apache.bcel.generic.CodeExceptionGen; import org.apache.bcel.generic.ConstantPoolGen; import org.apache.bcel.generic.LineNumberGen; import org.apache.bcel.generic.LocalVariableGen; /** * This interface is used to visit a single element of a classInfo (including the class itself). * To visit all elements of a class, use a {@link DescendingClassTraverser}. * * @author Stefan Hepp (stefan@stefant.org) */ public interface ClassElementVisitor extends ClassVisitor { boolean visitMethod(MethodInfo methodInfo); void finishMethod(MethodInfo methodInfo); void visitMethodCode(MethodCode methodCode); boolean visitField(FieldInfo fieldInfo); void finishField(FieldInfo fieldInfo); boolean visitConstantPoolGen(ClassInfo classInfo, ConstantPoolGen cpg); void finishConstantPoolGen(ClassInfo classInfo, ConstantPoolGen cpg); void visitConstantClass(ClassInfo classInfo, ConstantClass constant); void visitConstantDouble(ClassInfo classInfo, ConstantDouble constant); void visitConstantField(ClassInfo classInfo, ConstantFieldref constant); void visitConstantFloat(ClassInfo classInfo, ConstantFloat constant); void visitConstantInteger(ClassInfo classInfo, ConstantInteger constant); void visitConstantLong(ClassInfo classInfo, ConstantLong constant); void visitConstantMethod(ClassInfo classInfo, ConstantMethodref constant); void visitConstantInterfaceMethod(ClassInfo classInfo, ConstantInterfaceMethodref constant); void visitConstantNameAndType(ClassInfo classInfo, ConstantNameAndType constant); void visitConstantString(ClassInfo classInfo, ConstantString constant); void visitConstantUtf8(ClassInfo classInfo, ConstantUtf8 constant); void visitInnerClasses(ClassInfo classInfo, InnerClasses obj ); void visitSourceFile(ClassInfo classInfo, SourceFile obj ); void visitEnclosingMethod(ClassInfo classInfo, EnclosingMethod obj ); void visitConstantValue(FieldInfo fieldInfo, ConstantValue obj ); void visitCodeException(MethodInfo methodInfo, CodeExceptionGen obj ); void visitLineNumber(MethodInfo methodInfo, LineNumberGen obj ); void visitLocalVariable(MethodInfo methodInfo, LocalVariableGen obj ); void visitStackMap(MethodInfo methodInfo, StackMap obj ); void visitStackMapTable(MethodInfo methodInfo, StackMapTable obj ); void visitSignature(MemberInfo memberInfo, Signature obj ); void visitDeprecated(MemberInfo memberInfo, Deprecated obj ); void visitSynthetic(MemberInfo memberInfo, Synthetic obj ); void visitAnnotation(MemberInfo memberInfo, AnnotationAttribute obj ); void visitParameterAnnotation(MemberInfo memberInfo, ParameterAnnotationAttribute obj ); void visitUnknown(MemberInfo memberInfo, Unknown obj, boolean isCodeAttribute ); void visitCustomAttribute(MemberInfo memberInfo, CustomAttribute obj, boolean isCodeAttribute ); void visitCode(MethodInfo methodInfo, Code code); void visitExceptionTable(MethodInfo methodInfo, ExceptionTable table); void visitLineNumberTable(MethodInfo methodInfo, LineNumberTable table); void visitLocalVariableTable(MethodInfo methodInfo, LocalVariableTable table); }