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 that implements this interface can 022 * traverse the contents of a Java class just by calling the `accept' method which all classes have. 023 */ 024public interface Visitor { 025 /** 026 * @since 6.0 027 */ 028 void visitAnnotation(Annotations obj); 029 030 /** 031 * @since 6.0 032 */ 033 void visitAnnotationDefault(AnnotationDefault obj); 034 035 /** 036 * @since 6.0 037 */ 038 void visitAnnotationEntry(AnnotationEntry obj); 039 040 /** 041 * @since 6.0 042 */ 043 void visitBootstrapMethods(BootstrapMethods obj); 044 045 void visitCode(Code obj); 046 047 void visitCodeException(CodeException obj); 048 049 void visitConstantClass(ConstantClass obj); 050 051 void visitConstantDouble(ConstantDouble obj); 052 053 /** 054 * @since 6.3 055 */ 056 default void visitConstantDynamic(final ConstantDynamic constantDynamic) { 057 // empty 058 } 059 060 void visitConstantFieldref(ConstantFieldref obj); 061 062 void visitConstantFloat(ConstantFloat obj); 063 064 void visitConstantInteger(ConstantInteger obj); 065 066 void visitConstantInterfaceMethodref(ConstantInterfaceMethodref obj); 067 068 void visitConstantInvokeDynamic(ConstantInvokeDynamic obj); 069 070 void visitConstantLong(ConstantLong obj); 071 072 /** 073 * @since 6.0 074 */ 075 void visitConstantMethodHandle(ConstantMethodHandle obj); 076 077 void visitConstantMethodref(ConstantMethodref obj); 078 079 /** 080 * @since 6.0 081 */ 082 void visitConstantMethodType(ConstantMethodType obj); 083 084 /** 085 * @since 6.1 086 */ 087 void visitConstantModule(ConstantModule constantModule); 088 089 void visitConstantNameAndType(ConstantNameAndType obj); 090 091 /** 092 * @since 6.1 093 */ 094 void visitConstantPackage(ConstantPackage constantPackage); 095 096 void visitConstantPool(ConstantPool obj); 097 098 void visitConstantString(ConstantString obj); 099 100 void visitConstantUtf8(ConstantUtf8 obj); 101 102 void visitConstantValue(ConstantValue obj); 103 104 void visitDeprecated(Deprecated obj); 105 106 /** 107 * @since 6.0 108 */ 109 void visitEnclosingMethod(EnclosingMethod obj); 110 111 void visitExceptionTable(ExceptionTable obj); 112 113 void visitField(Field obj); 114 115 void visitInnerClass(InnerClass obj); 116 117 void visitInnerClasses(InnerClasses obj); 118 119 void visitJavaClass(JavaClass obj); 120 121 void visitLineNumber(LineNumber obj); 122 123 void visitLineNumberTable(LineNumberTable obj); 124 125 void visitLocalVariable(LocalVariable obj); 126 127 void visitLocalVariableTable(LocalVariableTable obj); 128 129 /** 130 * @since 6.0 131 */ 132 void visitLocalVariableTypeTable(LocalVariableTypeTable obj); 133 134 void visitMethod(Method obj); 135 136 /** 137 * @since 6.4.0 138 */ 139 default void visitMethodParameter(final MethodParameter obj) { 140 // empty 141 } 142 143 /** 144 * @since 6.0 145 */ 146 void visitMethodParameters(MethodParameters obj); 147 148 /** 149 * @since 6.4.0 150 */ 151 default void visitModule(final Module constantModule) { 152 // empty 153 } 154 155 /** 156 * @since 6.4.0 157 */ 158 default void visitModuleExports(final ModuleExports constantModule) { 159 // empty 160 } 161 162 /** 163 * @since 6.4.0 164 */ 165 default void visitModuleMainClass(final ModuleMainClass obj) { 166 // empty 167 } 168 169 /** 170 * @since 6.4.0 171 */ 172 default void visitModuleOpens(final ModuleOpens constantModule) { 173 // empty 174 } 175 176 /** 177 * @since 6.4.0 178 */ 179 default void visitModulePackages(final ModulePackages constantModule) { 180 // empty 181 } 182 183 /** 184 * @since 6.4.0 185 */ 186 default void visitModuleProvides(final ModuleProvides constantModule) { 187 // empty 188 } 189 190 /** 191 * @since 6.4.0 192 */ 193 default void visitModuleRequires(final ModuleRequires constantModule) { 194 // empty 195 } 196 197 /** 198 * @since 6.4.0 199 */ 200 default void visitNestHost(final NestHost obj) { 201 // empty 202 } 203 204 /** 205 * @since 6.4.0 206 */ 207 default void visitNestMembers(final NestMembers obj) { 208 // empty 209 } 210 211 /** 212 * @since 6.0 213 */ 214 void visitParameterAnnotation(ParameterAnnotations obj); 215 216 /** 217 * @since 6.0 218 */ 219 void visitParameterAnnotationEntry(ParameterAnnotationEntry obj); 220 221 void visitSignature(Signature obj); 222 223 void visitSourceFile(SourceFile obj); 224 225 void visitStackMap(StackMap obj); 226 227 void visitStackMapEntry(StackMapEntry obj); 228 229 void visitSynthetic(Synthetic obj); 230 231 void visitUnknown(Unknown obj); 232}