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