1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Licensed to the Apache Software Foundation (ASF) under one or more 7 * contributor license agreements. See the NOTICE file distributed with 8 * this work for additional information regarding copyright ownership. 9 * The ASF licenses this file to You under the Apache License, Version 2.0 10 * (the "License"); you may not use this file except in compliance with 11 * the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22 package com.sun.org.apache.bcel.internal.generic; 23 24 /** 25 * Interface implementing the Visitor pattern programming style. 26 * I.e., a class that implements this interface can handle all types of 27 * instructions with the properly typed methods just by calling the accept() 28 * method. 29 * 30 */ 31 public interface Visitor { 32 33 void visitStackInstruction( StackInstruction obj ); 34 35 36 void visitLocalVariableInstruction( LocalVariableInstruction obj ); 37 38 39 void visitBranchInstruction( BranchInstruction obj ); 40 41 42 void visitLoadClass( LoadClass obj ); 43 44 45 void visitFieldInstruction( FieldInstruction obj ); 46 47 48 void visitIfInstruction( IfInstruction obj ); 49 50 51 void visitConversionInstruction( ConversionInstruction obj ); 52 53 54 void visitPopInstruction( PopInstruction obj ); 55 56 57 void visitStoreInstruction( StoreInstruction obj ); 58 59 60 void visitTypedInstruction( TypedInstruction obj ); 61 62 63 void visitSelect( Select obj ); 64 65 66 void visitJsrInstruction( JsrInstruction obj ); 67 68 69 void visitGotoInstruction( GotoInstruction obj ); 70 71 72 void visitUnconditionalBranch( UnconditionalBranch obj ); 73 74 75 void visitPushInstruction( PushInstruction obj ); 76 77 78 void visitArithmeticInstruction( ArithmeticInstruction obj ); 79 80 81 void visitCPInstruction( CPInstruction obj ); 82 83 84 void visitInvokeInstruction( InvokeInstruction obj ); 85 86 87 void visitArrayInstruction( ArrayInstruction obj ); 88 89 90 void visitAllocationInstruction( AllocationInstruction obj ); 91 92 93 void visitReturnInstruction( ReturnInstruction obj ); 94 95 96 void visitFieldOrMethod( FieldOrMethod obj ); 97 98 99 void visitConstantPushInstruction( ConstantPushInstruction obj ); 100 101 102 void visitExceptionThrower( ExceptionThrower obj ); 103 104 105 void visitLoadInstruction( LoadInstruction obj ); 106 107 108 void visitVariableLengthInstruction( VariableLengthInstruction obj ); 109 110 111 void visitStackProducer( StackProducer obj ); 112 113 114 void visitStackConsumer( StackConsumer obj ); 115 116 117 void visitACONST_NULL( ACONST_NULL obj ); 118 119 120 void visitGETSTATIC( GETSTATIC obj ); 121 122 123 void visitIF_ICMPLT( IF_ICMPLT obj ); 124 125 126 void visitMONITOREXIT( MONITOREXIT obj ); 127 128 129 void visitIFLT( IFLT obj ); 130 131 132 void visitLSTORE( LSTORE obj ); 133 134 135 void visitPOP2( POP2 obj ); 136 137 138 void visitBASTORE( BASTORE obj ); 139 140 141 void visitISTORE( ISTORE obj ); 142 143 144 void visitCHECKCAST( CHECKCAST obj ); 145 146 147 void visitFCMPG( FCMPG obj ); 148 149 150 void visitI2F( I2F obj ); 151 152 153 void visitATHROW( ATHROW obj ); 154 155 156 void visitDCMPL( DCMPL obj ); 157 158 159 void visitARRAYLENGTH( ARRAYLENGTH obj ); 160 161 162 void visitDUP( DUP obj ); 163 164 165 void visitINVOKESTATIC( INVOKESTATIC obj ); 166 167 168 void visitLCONST( LCONST obj ); 169 170 171 void visitDREM( DREM obj ); 172 173 174 void visitIFGE( IFGE obj ); 175 176 177 void visitCALOAD( CALOAD obj ); 178 179 180 void visitLASTORE( LASTORE obj ); 181 182 183 void visitI2D( I2D obj ); 184 185 186 void visitDADD( DADD obj ); 187 188 189 void visitINVOKESPECIAL( INVOKESPECIAL obj ); 190 191 192 void visitIAND( IAND obj ); 193 194 195 void visitPUTFIELD( PUTFIELD obj ); 196 197 198 void visitILOAD( ILOAD obj ); 199 200 201 void visitDLOAD( DLOAD obj ); 202 203 204 void visitDCONST( DCONST obj ); 205 206 207 void visitNEW( NEW obj ); 208 209 210 void visitIFNULL( IFNULL obj ); 211 212 213 void visitLSUB( LSUB obj ); 214 215 216 void visitL2I( L2I obj ); 217 218 219 void visitISHR( ISHR obj ); 220 221 222 void visitTABLESWITCH( TABLESWITCH obj ); 223 224 225 void visitIINC( IINC obj ); 226 227 228 void visitDRETURN( DRETURN obj ); 229 230 231 void visitFSTORE( FSTORE obj ); 232 233 234 void visitDASTORE( DASTORE obj ); 235 236 237 void visitIALOAD( IALOAD obj ); 238 239 240 void visitDDIV( DDIV obj ); 241 242 243 void visitIF_ICMPGE( IF_ICMPGE obj ); 244 245 246 void visitLAND( LAND obj ); 247 248 249 void visitIDIV( IDIV obj ); 250 251 252 void visitLOR( LOR obj ); 253 254 255 void visitCASTORE( CASTORE obj ); 256 257 258 void visitFREM( FREM obj ); 259 260 261 void visitLDC( LDC obj ); 262 263 264 void visitBIPUSH( BIPUSH obj ); 265 266 267 void visitDSTORE( DSTORE obj ); 268 269 270 void visitF2L( F2L obj ); 271 272 273 void visitFMUL( FMUL obj ); 274 275 276 void visitLLOAD( LLOAD obj ); 277 278 279 void visitJSR( JSR obj ); 280 281 282 void visitFSUB( FSUB obj ); 283 284 285 void visitSASTORE( SASTORE obj ); 286 287 288 void visitALOAD( ALOAD obj ); 289 290 291 void visitDUP2_X2( DUP2_X2 obj ); 292 293 294 void visitRETURN( RETURN obj ); 295 296 297 void visitDALOAD( DALOAD obj ); 298 299 300 void visitSIPUSH( SIPUSH obj ); 301 302 303 void visitDSUB( DSUB obj ); 304 305 306 void visitL2F( L2F obj ); 307 308 309 void visitIF_ICMPGT( IF_ICMPGT obj ); 310 311 312 void visitF2D( F2D obj ); 313 314 315 void visitI2L( I2L obj ); 316 317 318 void visitIF_ACMPNE( IF_ACMPNE obj ); 319 320 321 void visitPOP( POP obj ); 322 323 324 void visitI2S( I2S obj ); 325 326 327 void visitIFEQ( IFEQ obj ); 328 329 330 void visitSWAP( SWAP obj ); 331 332 333 void visitIOR( IOR obj ); 334 335 336 void visitIREM( IREM obj ); 337 338 339 void visitIASTORE( IASTORE obj ); 340 341 342 void visitNEWARRAY( NEWARRAY obj ); 343 344 345 void visitINVOKEINTERFACE( INVOKEINTERFACE obj ); 346 347 348 void visitINEG( INEG obj ); 349 350 351 void visitLCMP( LCMP obj ); 352 353 354 void visitJSR_W( JSR_W obj ); 355 356 357 void visitMULTIANEWARRAY( MULTIANEWARRAY obj ); 358 359 360 void visitDUP_X2( DUP_X2 obj ); 361 362 363 void visitSALOAD( SALOAD obj ); 364 365 366 void visitIFNONNULL( IFNONNULL obj ); 367 368 369 void visitDMUL( DMUL obj ); 370 371 372 void visitIFNE( IFNE obj ); 373 374 375 void visitIF_ICMPLE( IF_ICMPLE obj ); 376 377 378 void visitLDC2_W( LDC2_W obj ); 379 380 381 void visitGETFIELD( GETFIELD obj ); 382 383 384 void visitLADD( LADD obj ); 385 386 387 void visitNOP( NOP obj ); 388 389 390 void visitFALOAD( FALOAD obj ); 391 392 393 void visitINSTANCEOF( INSTANCEOF obj ); 394 395 396 void visitIFLE( IFLE obj ); 397 398 399 void visitLXOR( LXOR obj ); 400 401 402 void visitLRETURN( LRETURN obj ); 403 404 405 void visitFCONST( FCONST obj ); 406 407 408 void visitIUSHR( IUSHR obj ); 409 410 411 void visitBALOAD( BALOAD obj ); 412 413 414 void visitDUP2( DUP2 obj ); 415 416 417 void visitIF_ACMPEQ( IF_ACMPEQ obj ); 418 419 420 void visitIMPDEP1( IMPDEP1 obj ); 421 422 423 void visitMONITORENTER( MONITORENTER obj ); 424 425 426 void visitLSHL( LSHL obj ); 427 428 429 void visitDCMPG( DCMPG obj ); 430 431 432 void visitD2L( D2L obj ); 433 434 435 void visitIMPDEP2( IMPDEP2 obj ); 436 437 438 void visitL2D( L2D obj ); 439 440 441 void visitRET( RET obj ); 442 443 444 void visitIFGT( IFGT obj ); 445 446 447 void visitIXOR( IXOR obj ); 448 449 450 void visitINVOKEVIRTUAL( INVOKEVIRTUAL obj ); 451 452 453 /** 454 * @since 6.0 455 */ 456 void visitINVOKEDYNAMIC( INVOKEDYNAMIC obj ); 457 458 459 void visitFASTORE( FASTORE obj ); 460 461 462 void visitIRETURN( IRETURN obj ); 463 464 465 void visitIF_ICMPNE( IF_ICMPNE obj ); 466 467 468 void visitFLOAD( FLOAD obj ); 469 470 471 void visitLDIV( LDIV obj ); 472 473 474 void visitPUTSTATIC( PUTSTATIC obj ); 475 476 477 void visitAALOAD( AALOAD obj ); 478 479 480 void visitD2I( D2I obj ); 481 482 483 void visitIF_ICMPEQ( IF_ICMPEQ obj ); 484 485 486 void visitAASTORE( AASTORE obj ); 487 488 489 void visitARETURN( ARETURN obj ); 490 491 492 void visitDUP2_X1( DUP2_X1 obj ); 493 494 495 void visitFNEG( FNEG obj ); 496 497 498 void visitGOTO_W( GOTO_W obj ); 499 500 501 void visitD2F( D2F obj ); 502 503 504 void visitGOTO( GOTO obj ); 505 506 507 void visitISUB( ISUB obj ); 508 509 510 void visitF2I( F2I obj ); 511 512 513 void visitDNEG( DNEG obj ); 514 515 516 void visitICONST( ICONST obj ); 517 518 519 void visitFDIV( FDIV obj ); 520 521 522 void visitI2B( I2B obj ); 523 524 525 void visitLNEG( LNEG obj ); 526 527 528 void visitLREM( LREM obj ); 529 530 531 void visitIMUL( IMUL obj ); 532 533 534 void visitIADD( IADD obj ); 535 536 537 void visitLSHR( LSHR obj ); 538 539 540 void visitLOOKUPSWITCH( LOOKUPSWITCH obj ); 541 542 543 void visitDUP_X1( DUP_X1 obj ); 544 545 546 void visitFCMPL( FCMPL obj ); 547 548 549 void visitI2C( I2C obj ); 550 551 552 void visitLMUL( LMUL obj ); 553 554 555 void visitLUSHR( LUSHR obj ); 556 557 558 void visitISHL( ISHL obj ); 559 560 561 void visitLALOAD( LALOAD obj ); 562 563 564 void visitASTORE( ASTORE obj ); 565 566 567 void visitANEWARRAY( ANEWARRAY obj ); 568 569 570 void visitFRETURN( FRETURN obj ); 571 572 573 void visitFADD( FADD obj ); 574 575 576 void visitBREAKPOINT( BREAKPOINT obj ); 577 }