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.generic; 019 020/** 021 * Interface implementing the Visitor pattern programming style. 022 * I.e., a class that implements this interface can handle all types of 023 * instructions with the properly typed methods just by calling the accept() 024 * method. 025 * 026 * @version $Id: Visitor.java 1747278 2016-06-07 17:28:43Z britter $ 027 */ 028public interface Visitor { 029 030 void visitStackInstruction( StackInstruction obj ); 031 032 033 void visitLocalVariableInstruction( LocalVariableInstruction obj ); 034 035 036 void visitBranchInstruction( BranchInstruction obj ); 037 038 039 void visitLoadClass( LoadClass obj ); 040 041 042 void visitFieldInstruction( FieldInstruction obj ); 043 044 045 void visitIfInstruction( IfInstruction obj ); 046 047 048 void visitConversionInstruction( ConversionInstruction obj ); 049 050 051 void visitPopInstruction( PopInstruction obj ); 052 053 054 void visitStoreInstruction( StoreInstruction obj ); 055 056 057 void visitTypedInstruction( TypedInstruction obj ); 058 059 060 void visitSelect( Select obj ); 061 062 063 void visitJsrInstruction( JsrInstruction obj ); 064 065 066 void visitGotoInstruction( GotoInstruction obj ); 067 068 069 void visitUnconditionalBranch( UnconditionalBranch obj ); 070 071 072 void visitPushInstruction( PushInstruction obj ); 073 074 075 void visitArithmeticInstruction( ArithmeticInstruction obj ); 076 077 078 void visitCPInstruction( CPInstruction obj ); 079 080 081 void visitInvokeInstruction( InvokeInstruction obj ); 082 083 084 void visitArrayInstruction( ArrayInstruction obj ); 085 086 087 void visitAllocationInstruction( AllocationInstruction obj ); 088 089 090 void visitReturnInstruction( ReturnInstruction obj ); 091 092 093 void visitFieldOrMethod( FieldOrMethod obj ); 094 095 096 void visitConstantPushInstruction( ConstantPushInstruction obj ); 097 098 099 void visitExceptionThrower( ExceptionThrower obj ); 100 101 102 void visitLoadInstruction( LoadInstruction obj ); 103 104 105 void visitVariableLengthInstruction( VariableLengthInstruction obj ); 106 107 108 void visitStackProducer( StackProducer obj ); 109 110 111 void visitStackConsumer( StackConsumer obj ); 112 113 114 void visitACONST_NULL( ACONST_NULL obj ); 115 116 117 void visitGETSTATIC( GETSTATIC obj ); 118 119 120 void visitIF_ICMPLT( IF_ICMPLT obj ); 121 122 123 void visitMONITOREXIT( MONITOREXIT obj ); 124 125 126 void visitIFLT( IFLT obj ); 127 128 129 void visitLSTORE( LSTORE obj ); 130 131 132 void visitPOP2( POP2 obj ); 133 134 135 void visitBASTORE( BASTORE obj ); 136 137 138 void visitISTORE( ISTORE obj ); 139 140 141 void visitCHECKCAST( CHECKCAST obj ); 142 143 144 void visitFCMPG( FCMPG obj ); 145 146 147 void visitI2F( I2F obj ); 148 149 150 void visitATHROW( ATHROW obj ); 151 152 153 void visitDCMPL( DCMPL obj ); 154 155 156 void visitARRAYLENGTH( ARRAYLENGTH obj ); 157 158 159 void visitDUP( DUP obj ); 160 161 162 void visitINVOKESTATIC( INVOKESTATIC obj ); 163 164 165 void visitLCONST( LCONST obj ); 166 167 168 void visitDREM( DREM obj ); 169 170 171 void visitIFGE( IFGE obj ); 172 173 174 void visitCALOAD( CALOAD obj ); 175 176 177 void visitLASTORE( LASTORE obj ); 178 179 180 void visitI2D( I2D obj ); 181 182 183 void visitDADD( DADD obj ); 184 185 186 void visitINVOKESPECIAL( INVOKESPECIAL obj ); 187 188 189 void visitIAND( IAND obj ); 190 191 192 void visitPUTFIELD( PUTFIELD obj ); 193 194 195 void visitILOAD( ILOAD obj ); 196 197 198 void visitDLOAD( DLOAD obj ); 199 200 201 void visitDCONST( DCONST obj ); 202 203 204 void visitNEW( NEW obj ); 205 206 207 void visitIFNULL( IFNULL obj ); 208 209 210 void visitLSUB( LSUB obj ); 211 212 213 void visitL2I( L2I obj ); 214 215 216 void visitISHR( ISHR obj ); 217 218 219 void visitTABLESWITCH( TABLESWITCH obj ); 220 221 222 void visitIINC( IINC obj ); 223 224 225 void visitDRETURN( DRETURN obj ); 226 227 228 void visitFSTORE( FSTORE obj ); 229 230 231 void visitDASTORE( DASTORE obj ); 232 233 234 void visitIALOAD( IALOAD obj ); 235 236 237 void visitDDIV( DDIV obj ); 238 239 240 void visitIF_ICMPGE( IF_ICMPGE obj ); 241 242 243 void visitLAND( LAND obj ); 244 245 246 void visitIDIV( IDIV obj ); 247 248 249 void visitLOR( LOR obj ); 250 251 252 void visitCASTORE( CASTORE obj ); 253 254 255 void visitFREM( FREM obj ); 256 257 258 void visitLDC( LDC obj ); 259 260 261 void visitBIPUSH( BIPUSH obj ); 262 263 264 void visitDSTORE( DSTORE obj ); 265 266 267 void visitF2L( F2L obj ); 268 269 270 void visitFMUL( FMUL obj ); 271 272 273 void visitLLOAD( LLOAD obj ); 274 275 276 void visitJSR( JSR obj ); 277 278 279 void visitFSUB( FSUB obj ); 280 281 282 void visitSASTORE( SASTORE obj ); 283 284 285 void visitALOAD( ALOAD obj ); 286 287 288 void visitDUP2_X2( DUP2_X2 obj ); 289 290 291 void visitRETURN( RETURN obj ); 292 293 294 void visitDALOAD( DALOAD obj ); 295 296 297 void visitSIPUSH( SIPUSH obj ); 298 299 300 void visitDSUB( DSUB obj ); 301 302 303 void visitL2F( L2F obj ); 304 305 306 void visitIF_ICMPGT( IF_ICMPGT obj ); 307 308 309 void visitF2D( F2D obj ); 310 311 312 void visitI2L( I2L obj ); 313 314 315 void visitIF_ACMPNE( IF_ACMPNE obj ); 316 317 318 void visitPOP( POP obj ); 319 320 321 void visitI2S( I2S obj ); 322 323 324 void visitIFEQ( IFEQ obj ); 325 326 327 void visitSWAP( SWAP obj ); 328 329 330 void visitIOR( IOR obj ); 331 332 333 void visitIREM( IREM obj ); 334 335 336 void visitIASTORE( IASTORE obj ); 337 338 339 void visitNEWARRAY( NEWARRAY obj ); 340 341 342 void visitINVOKEINTERFACE( INVOKEINTERFACE obj ); 343 344 345 void visitINEG( INEG obj ); 346 347 348 void visitLCMP( LCMP obj ); 349 350 351 void visitJSR_W( JSR_W obj ); 352 353 354 void visitMULTIANEWARRAY( MULTIANEWARRAY obj ); 355 356 357 void visitDUP_X2( DUP_X2 obj ); 358 359 360 void visitSALOAD( SALOAD obj ); 361 362 363 void visitIFNONNULL( IFNONNULL obj ); 364 365 366 void visitDMUL( DMUL obj ); 367 368 369 void visitIFNE( IFNE obj ); 370 371 372 void visitIF_ICMPLE( IF_ICMPLE obj ); 373 374 375 void visitLDC2_W( LDC2_W obj ); 376 377 378 void visitGETFIELD( GETFIELD obj ); 379 380 381 void visitLADD( LADD obj ); 382 383 384 void visitNOP( NOP obj ); 385 386 387 void visitFALOAD( FALOAD obj ); 388 389 390 void visitINSTANCEOF( INSTANCEOF obj ); 391 392 393 void visitIFLE( IFLE obj ); 394 395 396 void visitLXOR( LXOR obj ); 397 398 399 void visitLRETURN( LRETURN obj ); 400 401 402 void visitFCONST( FCONST obj ); 403 404 405 void visitIUSHR( IUSHR obj ); 406 407 408 void visitBALOAD( BALOAD obj ); 409 410 411 void visitDUP2( DUP2 obj ); 412 413 414 void visitIF_ACMPEQ( IF_ACMPEQ obj ); 415 416 417 void visitIMPDEP1( IMPDEP1 obj ); 418 419 420 void visitMONITORENTER( MONITORENTER obj ); 421 422 423 void visitLSHL( LSHL obj ); 424 425 426 void visitDCMPG( DCMPG obj ); 427 428 429 void visitD2L( D2L obj ); 430 431 432 void visitIMPDEP2( IMPDEP2 obj ); 433 434 435 void visitL2D( L2D obj ); 436 437 438 void visitRET( RET obj ); 439 440 441 void visitIFGT( IFGT obj ); 442 443 444 void visitIXOR( IXOR obj ); 445 446 447 void visitINVOKEVIRTUAL( INVOKEVIRTUAL obj ); 448 449 450 /** 451 * @since 6.0 452 */ 453 void visitINVOKEDYNAMIC( INVOKEDYNAMIC obj ); 454 455 456 void visitFASTORE( FASTORE obj ); 457 458 459 void visitIRETURN( IRETURN obj ); 460 461 462 void visitIF_ICMPNE( IF_ICMPNE obj ); 463 464 465 void visitFLOAD( FLOAD obj ); 466 467 468 void visitLDIV( LDIV obj ); 469 470 471 void visitPUTSTATIC( PUTSTATIC obj ); 472 473 474 void visitAALOAD( AALOAD obj ); 475 476 477 void visitD2I( D2I obj ); 478 479 480 void visitIF_ICMPEQ( IF_ICMPEQ obj ); 481 482 483 void visitAASTORE( AASTORE obj ); 484 485 486 void visitARETURN( ARETURN obj ); 487 488 489 void visitDUP2_X1( DUP2_X1 obj ); 490 491 492 void visitFNEG( FNEG obj ); 493 494 495 void visitGOTO_W( GOTO_W obj ); 496 497 498 void visitD2F( D2F obj ); 499 500 501 void visitGOTO( GOTO obj ); 502 503 504 void visitISUB( ISUB obj ); 505 506 507 void visitF2I( F2I obj ); 508 509 510 void visitDNEG( DNEG obj ); 511 512 513 void visitICONST( ICONST obj ); 514 515 516 void visitFDIV( FDIV obj ); 517 518 519 void visitI2B( I2B obj ); 520 521 522 void visitLNEG( LNEG obj ); 523 524 525 void visitLREM( LREM obj ); 526 527 528 void visitIMUL( IMUL obj ); 529 530 531 void visitIADD( IADD obj ); 532 533 534 void visitLSHR( LSHR obj ); 535 536 537 void visitLOOKUPSWITCH( LOOKUPSWITCH obj ); 538 539 540 void visitDUP_X1( DUP_X1 obj ); 541 542 543 void visitFCMPL( FCMPL obj ); 544 545 546 void visitI2C( I2C obj ); 547 548 549 void visitLMUL( LMUL obj ); 550 551 552 void visitLUSHR( LUSHR obj ); 553 554 555 void visitISHL( ISHL obj ); 556 557 558 void visitLALOAD( LALOAD obj ); 559 560 561 void visitASTORE( ASTORE obj ); 562 563 564 void visitANEWARRAY( ANEWARRAY obj ); 565 566 567 void visitFRETURN( FRETURN obj ); 568 569 570 void visitFADD( FADD obj ); 571 572 573 void visitBREAKPOINT( BREAKPOINT obj ); 574}