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