001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 */ 018package org.apache.bcel.classfile; 019 020/** 021 * Interface to make use of the Visitor pattern programming style. I.e. a class 022 * that implements this interface can traverse the contents of a Java class just 023 * by calling the `accept' method which all classes have. 024 * 025 */ 026public interface Visitor 027{ 028 void visitCode(Code obj); 029 030 void visitCodeException(CodeException obj); 031 032 void visitConstantClass(ConstantClass obj); 033 034 void visitConstantDouble(ConstantDouble obj); 035 036 void visitConstantFieldref(ConstantFieldref obj); 037 038 void visitConstantFloat(ConstantFloat obj); 039 040 void visitConstantInteger(ConstantInteger obj); 041 042 void visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj); 043 044 void visitConstantInvokeDynamic(ConstantInvokeDynamic obj); 045 046 void visitConstantLong(ConstantLong obj); 047 048 void visitConstantMethodref(ConstantMethodref obj); 049 050 void visitConstantNameAndType(ConstantNameAndType obj); 051 052 void visitConstantPool(ConstantPool obj); 053 054 void visitConstantString(ConstantString obj); 055 056 void visitConstantUtf8(ConstantUtf8 obj); 057 058 void visitConstantValue(ConstantValue obj); 059 060 void visitDeprecated(Deprecated obj); 061 062 void visitExceptionTable(ExceptionTable obj); 063 064 void visitField(Field obj); 065 066 void visitInnerClass(InnerClass obj); 067 068 void visitInnerClasses(InnerClasses obj); 069 070 void visitJavaClass(JavaClass obj); 071 072 void visitLineNumber(LineNumber obj); 073 074 void visitLineNumberTable(LineNumberTable obj); 075 076 void visitLocalVariable(LocalVariable obj); 077 078 void visitLocalVariableTable(LocalVariableTable obj); 079 080 void visitMethod(Method obj); 081 082 void visitSignature(Signature obj); 083 084 void visitSourceFile(SourceFile obj); 085 086 void visitSynthetic(Synthetic obj); 087 088 void visitUnknown(Unknown obj); 089 090 void visitStackMap(StackMap obj); 091 092 void visitStackMapEntry(StackMapEntry obj); 093 094 /** 095 * @since 6.0 096 */ 097 void visitAnnotation(Annotations obj); 098 099 /** 100 * @since 6.0 101 */ 102 void visitParameterAnnotation(ParameterAnnotations obj); 103 104 /** 105 * @since 6.0 106 */ 107 void visitAnnotationEntry(AnnotationEntry obj); 108 109 /** 110 * @since 6.0 111 */ 112 void visitAnnotationDefault(AnnotationDefault obj); 113 114 /** 115 * @since 6.0 116 */ 117 void visitLocalVariableTypeTable(LocalVariableTypeTable obj); 118 119 /** 120 * @since 6.0 121 */ 122 void visitEnclosingMethod(EnclosingMethod obj); 123 124 /** 125 * @since 6.0 126 */ 127 void visitBootstrapMethods(BootstrapMethods obj); 128 129 /** 130 * @since 6.0 131 */ 132 void visitMethodParameters(MethodParameters obj); 133 134 /** 135 * @since 6.4.0 136 */ 137 default void visitMethodParameter(final MethodParameter obj) { 138 // empty 139 } 140 141 /** 142 * @since 6.0 143 */ 144 void visitConstantMethodType(ConstantMethodType obj); 145 146 /** 147 * @since 6.0 148 */ 149 void visitConstantMethodHandle(ConstantMethodHandle obj); 150 151 /** 152 * @since 6.0 153 */ 154 void visitParameterAnnotationEntry(ParameterAnnotationEntry obj); 155 156 /** 157 * @since 6.1 158 */ 159 void visitConstantPackage(ConstantPackage constantPackage); 160 161 /** 162 * @since 6.1 163 */ 164 void visitConstantModule(ConstantModule constantModule); 165 166 /** 167 * @since 6.3 168 */ 169 default void visitConstantDynamic(final ConstantDynamic constantDynamic) { 170 // empty 171 } 172 173 /** 174 * @since 6.4.0 175 */ 176 default void visitModule(final Module constantModule) { 177 // empty 178 } 179 180 /** 181 * @since 6.4.0 182 */ 183 default void visitModuleRequires(final ModuleRequires constantModule) { 184 // empty 185 } 186 187 /** 188 * @since 6.4.0 189 */ 190 default void visitModuleExports(final ModuleExports constantModule) { 191 // empty 192 } 193 194 /** 195 * @since 6.4.0 196 */ 197 default void visitModuleOpens(final ModuleOpens constantModule) { 198 // empty 199 } 200 201 /** 202 * @since 6.4.0 203 */ 204 default void visitModuleProvides(final ModuleProvides constantModule) { 205 // empty 206 } 207 208 /** 209 * @since 6.4.0 210 */ 211 default void visitModulePackages(final ModulePackages constantModule) { 212 // empty 213 } 214 215 /** 216 * @since 6.4.0 217 */ 218 default void visitModuleMainClass(final ModuleMainClass obj) { 219 // empty 220 } 221 222 /** 223 * @since 6.4.0 224 */ 225 default void visitNestHost(final NestHost obj) { 226 // empty 227 } 228 229 /** 230 * @since 6.4.0 231 */ 232 default void visitNestMembers(final NestMembers obj) { 233 // empty 234 } 235}