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