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 }