001: /*
002: * ProGuard -- shrinking, optimization, obfuscation, and preverification
003: * of Java bytecode.
004: *
005: * Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
006: *
007: * This program is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU General Public License as published by the Free
009: * Software Foundation; either version 2 of the License, or (at your option)
010: * any later version.
011: *
012: * This program is distributed in the hope that it will be useful, but WITHOUT
013: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
015: * more details.
016: *
017: * You should have received a copy of the GNU General Public License along
018: * with this program; if not, write to the Free Software Foundation, Inc.,
019: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: */
021: package proguard.classfile.util;
022:
023: import proguard.classfile.*;
024: import proguard.classfile.attribute.*;
025: import proguard.classfile.attribute.annotation.*;
026: import proguard.classfile.attribute.preverification.*;
027: import proguard.classfile.constant.*;
028: import proguard.classfile.instruction.*;
029:
030: /**
031: * This abstract utility class allows to implement various visitor interfaces
032: * with simplified methods. The provided methods delegate to other versions
033: * with fewer arguments or more general arguments.
034: *
035: * @author Eric Lafortune
036: * @noinspection AbstractClassWithoutAbstractMethods
037: */
038: public abstract class SimplifiedVisitor {
039: // Simplifications for ClassVisitor.
040:
041: /**
042: * Visits any type of class member of the given class.
043: */
044: public void visitAnyClass(Clazz Clazz) {
045: throw new UnsupportedOperationException(
046: "Method must be overridden in ["
047: + this .getClass().getName()
048: + "] if ever called");
049: }
050:
051: public void visitProgramClass(ProgramClass programClass) {
052: visitAnyClass(programClass);
053: }
054:
055: public void visitLibraryClass(LibraryClass libraryClass) {
056: visitAnyClass(libraryClass);
057: }
058:
059: // Simplifications for MemberVisitor.
060:
061: /**
062: * Visits any type of class member of the given class.
063: */
064: public void visitAnyMember(Clazz clazz, Member member) {
065: throw new UnsupportedOperationException(
066: "Method must be overridden in ["
067: + this .getClass().getName()
068: + "] if ever called");
069: }
070:
071: /**
072: * Visits any type of class member of the given program class.
073: */
074: public void visitProgramMember(ProgramClass programClass,
075: ProgramMember programMember) {
076: visitAnyMember(programClass, programMember);
077: }
078:
079: public void visitProgramField(ProgramClass programClass,
080: ProgramField programField) {
081: visitProgramMember(programClass, programField);
082: }
083:
084: public void visitProgramMethod(ProgramClass programClass,
085: ProgramMethod programMethod) {
086: visitProgramMember(programClass, programMethod);
087: }
088:
089: /**
090: * Visits any type of class member of the given library class.
091: */
092: public void visitLibraryMember(LibraryClass libraryClass,
093: LibraryMember libraryMember) {
094: visitAnyMember(libraryClass, libraryMember);
095: }
096:
097: public void visitLibraryField(LibraryClass libraryClass,
098: LibraryField libraryField) {
099: visitLibraryMember(libraryClass, libraryField);
100: }
101:
102: public void visitLibraryMethod(LibraryClass libraryClass,
103: LibraryMethod libraryMethod) {
104: visitLibraryMember(libraryClass, libraryMethod);
105: }
106:
107: // Simplifications for ConstantVisitor.
108:
109: public void visitAnyConstant(Clazz clazz, Constant constant) {
110: throw new UnsupportedOperationException(
111: "Method must be overridden in ["
112: + this .getClass().getName()
113: + "] if ever called");
114: }
115:
116: public void visitIntegerConstant(Clazz clazz,
117: IntegerConstant integerConstant) {
118: visitAnyConstant(clazz, integerConstant);
119: }
120:
121: public void visitLongConstant(Clazz clazz, LongConstant longConstant) {
122: visitAnyConstant(clazz, longConstant);
123: }
124:
125: public void visitFloatConstant(Clazz clazz,
126: FloatConstant floatConstant) {
127: visitAnyConstant(clazz, floatConstant);
128: }
129:
130: public void visitDoubleConstant(Clazz clazz,
131: DoubleConstant doubleConstant) {
132: visitAnyConstant(clazz, doubleConstant);
133: }
134:
135: public void visitStringConstant(Clazz clazz,
136: StringConstant stringConstant) {
137: visitAnyConstant(clazz, stringConstant);
138: }
139:
140: public void visitUtf8Constant(Clazz clazz, Utf8Constant utf8Constant) {
141: visitAnyConstant(clazz, utf8Constant);
142: }
143:
144: /**
145: * Visits any type of RefConstant of the given class.
146: */
147: public void visitAnyRefConstant(Clazz clazz, RefConstant refConstant) {
148: visitAnyConstant(clazz, refConstant);
149: }
150:
151: public void visitFieldrefConstant(Clazz clazz,
152: FieldrefConstant fieldrefConstant) {
153: visitAnyRefConstant(clazz, fieldrefConstant);
154: }
155:
156: /**
157: * Visits any type of method RefConstant of the given class.
158: */
159: public void visitAnyMethodrefConstant(Clazz clazz,
160: RefConstant refConstant) {
161: visitAnyRefConstant(clazz, refConstant);
162: }
163:
164: public void visitInterfaceMethodrefConstant(Clazz clazz,
165: InterfaceMethodrefConstant interfaceMethodrefConstant) {
166: visitAnyMethodrefConstant(clazz, interfaceMethodrefConstant);
167: }
168:
169: public void visitMethodrefConstant(Clazz clazz,
170: MethodrefConstant methodrefConstant) {
171: visitAnyMethodrefConstant(clazz, methodrefConstant);
172: }
173:
174: public void visitClassConstant(Clazz clazz,
175: ClassConstant classConstant) {
176: visitAnyConstant(clazz, classConstant);
177: }
178:
179: public void visitNameAndTypeConstant(Clazz clazz,
180: NameAndTypeConstant nameAndTypeConstant) {
181: visitAnyConstant(clazz, nameAndTypeConstant);
182: }
183:
184: // Simplifications for AttributeVisitor.
185:
186: /**
187: * Visit any type of attribute.
188: */
189: public void visitAnyAttribute(Clazz clazz, Attribute attribute) {
190: throw new UnsupportedOperationException(
191: "Method must be overridden in ["
192: + this .getClass().getName()
193: + "] if ever called");
194: }
195:
196: public void visitUnknownAttribute(Clazz clazz,
197: UnknownAttribute unknownAttribute) {
198: visitAnyAttribute(clazz, unknownAttribute);
199: }
200:
201: public void visitSourceFileAttribute(Clazz clazz,
202: SourceFileAttribute sourceFileAttribute) {
203: visitAnyAttribute(clazz, sourceFileAttribute);
204: }
205:
206: public void visitSourceDirAttribute(Clazz clazz,
207: SourceDirAttribute sourceDirAttribute) {
208: visitAnyAttribute(clazz, sourceDirAttribute);
209: }
210:
211: public void visitInnerClassesAttribute(Clazz clazz,
212: InnerClassesAttribute innerClassesAttribute) {
213: visitAnyAttribute(clazz, innerClassesAttribute);
214: }
215:
216: public void visitEnclosingMethodAttribute(Clazz clazz,
217: EnclosingMethodAttribute enclosingMethodAttribute) {
218: visitAnyAttribute(clazz, enclosingMethodAttribute);
219: }
220:
221: public void visitDeprecatedAttribute(Clazz clazz,
222: DeprecatedAttribute deprecatedAttribute) {
223: visitAnyAttribute(clazz, deprecatedAttribute);
224: }
225:
226: /**
227: * Visits the given DeprecatedAttribute of any type of class member.
228: */
229: public void visitDeprecatedAttribute(Clazz clazz, Member member,
230: DeprecatedAttribute deprecatedAttribute) {
231: visitDeprecatedAttribute(clazz, deprecatedAttribute);
232: }
233:
234: public void visitDeprecatedAttribute(Clazz clazz, Field field,
235: DeprecatedAttribute deprecatedAttribute) {
236: visitDeprecatedAttribute(clazz, (Member) field,
237: deprecatedAttribute);
238: }
239:
240: public void visitDeprecatedAttribute(Clazz clazz, Method method,
241: DeprecatedAttribute deprecatedAttribute) {
242: visitDeprecatedAttribute(clazz, (Member) method,
243: deprecatedAttribute);
244: }
245:
246: public void visitSyntheticAttribute(Clazz clazz,
247: SyntheticAttribute syntheticAttribute) {
248: visitAnyAttribute(clazz, syntheticAttribute);
249: }
250:
251: /**
252: * Visits the given SyntheticAttribute of any type of class member.
253: */
254: public void visitSyntheticAttribute(Clazz clazz, Member member,
255: SyntheticAttribute syntheticAttribute) {
256: visitSyntheticAttribute(clazz, syntheticAttribute);
257: }
258:
259: public void visitSyntheticAttribute(Clazz clazz, Field field,
260: SyntheticAttribute syntheticAttribute) {
261: visitSyntheticAttribute(clazz, (Member) field,
262: syntheticAttribute);
263: }
264:
265: public void visitSyntheticAttribute(Clazz clazz, Method method,
266: SyntheticAttribute syntheticAttribute) {
267: visitSyntheticAttribute(clazz, (Member) method,
268: syntheticAttribute);
269: }
270:
271: public void visitSignatureAttribute(Clazz clazz,
272: SignatureAttribute signatureAttribute) {
273: visitAnyAttribute(clazz, signatureAttribute);
274: }
275:
276: /**
277: * Visits the given SignatureAttribute of any type of class member.
278: */
279: public void visitSignatureAttribute(Clazz clazz, Member member,
280: SignatureAttribute signatureAttribute) {
281: visitSignatureAttribute(clazz, signatureAttribute);
282: }
283:
284: public void visitSignatureAttribute(Clazz clazz, Field field,
285: SignatureAttribute signatureAttribute) {
286: visitSignatureAttribute(clazz, (Member) field,
287: signatureAttribute);
288: }
289:
290: public void visitSignatureAttribute(Clazz clazz, Method method,
291: SignatureAttribute signatureAttribute) {
292: visitSignatureAttribute(clazz, (Member) method,
293: signatureAttribute);
294: }
295:
296: public void visitConstantValueAttribute(Clazz clazz, Field field,
297: ConstantValueAttribute constantValueAttribute) {
298: visitAnyAttribute(clazz, constantValueAttribute);
299: }
300:
301: public void visitExceptionsAttribute(Clazz clazz, Method method,
302: ExceptionsAttribute exceptionsAttribute) {
303: visitAnyAttribute(clazz, exceptionsAttribute);
304: }
305:
306: public void visitCodeAttribute(Clazz clazz, Method method,
307: CodeAttribute codeAttribute) {
308: visitAnyAttribute(clazz, codeAttribute);
309: }
310:
311: public void visitStackMapAttribute(Clazz clazz, Method method,
312: CodeAttribute codeAttribute,
313: StackMapAttribute stackMapAttribute) {
314: visitAnyAttribute(clazz, stackMapAttribute);
315: }
316:
317: public void visitStackMapTableAttribute(Clazz clazz, Method method,
318: CodeAttribute codeAttribute,
319: StackMapTableAttribute stackMapTableAttribute) {
320: visitAnyAttribute(clazz, stackMapTableAttribute);
321: }
322:
323: public void visitLineNumberTableAttribute(Clazz clazz,
324: Method method, CodeAttribute codeAttribute,
325: LineNumberTableAttribute lineNumberTableAttribute) {
326: visitAnyAttribute(clazz, lineNumberTableAttribute);
327: }
328:
329: public void visitLocalVariableTableAttribute(Clazz clazz,
330: Method method, CodeAttribute codeAttribute,
331: LocalVariableTableAttribute localVariableTableAttribute) {
332: visitAnyAttribute(clazz, localVariableTableAttribute);
333: }
334:
335: public void visitLocalVariableTypeTableAttribute(
336: Clazz clazz,
337: Method method,
338: CodeAttribute codeAttribute,
339: LocalVariableTypeTableAttribute localVariableTypeTableAttribute) {
340: visitAnyAttribute(clazz, localVariableTypeTableAttribute);
341: }
342:
343: /**
344: * Visits any type of AnnotationsAttribute of a class.
345: */
346: public void visitAnyAnnotationsAttribute(Clazz clazz,
347: AnnotationsAttribute annotationsAttribute) {
348: visitAnyAttribute(clazz, annotationsAttribute);
349: }
350:
351: public void visitRuntimeVisibleAnnotationsAttribute(
352: Clazz clazz,
353: RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) {
354: visitAnyAnnotationsAttribute(clazz,
355: runtimeVisibleAnnotationsAttribute);
356: }
357:
358: /**
359: * Visits the given RuntimeVisibleAnnotationsAttribute of any type of class member.
360: */
361: public void visitRuntimeVisibleAnnotationsAttribute(
362: Clazz clazz,
363: Member member,
364: RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) {
365: visitRuntimeVisibleAnnotationsAttribute(clazz,
366: runtimeVisibleAnnotationsAttribute);
367: }
368:
369: public void visitRuntimeVisibleAnnotationsAttribute(
370: Clazz clazz,
371: Field field,
372: RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) {
373: visitRuntimeVisibleAnnotationsAttribute(clazz, (Member) field,
374: runtimeVisibleAnnotationsAttribute);
375: }
376:
377: public void visitRuntimeVisibleAnnotationsAttribute(
378: Clazz clazz,
379: Method method,
380: RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) {
381: visitRuntimeVisibleAnnotationsAttribute(clazz, (Member) method,
382: runtimeVisibleAnnotationsAttribute);
383: }
384:
385: public void visitRuntimeInvisibleAnnotationsAttribute(
386: Clazz clazz,
387: RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) {
388: visitAnyAnnotationsAttribute(clazz,
389: runtimeInvisibleAnnotationsAttribute);
390: }
391:
392: /**
393: * Visits the given RuntimeInvisibleAnnotationsAttribute of any type of class member.
394: */
395: public void visitRuntimeInvisibleAnnotationsAttribute(
396: Clazz clazz,
397: Member member,
398: RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) {
399: visitRuntimeInvisibleAnnotationsAttribute(clazz,
400: runtimeInvisibleAnnotationsAttribute);
401: }
402:
403: public void visitRuntimeInvisibleAnnotationsAttribute(
404: Clazz clazz,
405: Field field,
406: RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) {
407: visitRuntimeInvisibleAnnotationsAttribute(clazz,
408: (Member) field, runtimeInvisibleAnnotationsAttribute);
409: }
410:
411: public void visitRuntimeInvisibleAnnotationsAttribute(
412: Clazz clazz,
413: Method method,
414: RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) {
415: visitRuntimeInvisibleAnnotationsAttribute(clazz,
416: (Member) method, runtimeInvisibleAnnotationsAttribute);
417: }
418:
419: /**
420: * Visits any type of ParameterAnnotationsAttribute.
421: */
422: public void visitAnyParameterAnnotationsAttribute(Clazz clazz,
423: Method method,
424: ParameterAnnotationsAttribute parameterAnnotationsAttribute) {
425: visitAnyAttribute(clazz, parameterAnnotationsAttribute);
426: }
427:
428: public void visitRuntimeVisibleParameterAnnotationsAttribute(
429: Clazz clazz,
430: Method method,
431: RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute) {
432: visitAnyParameterAnnotationsAttribute(clazz, method,
433: runtimeVisibleParameterAnnotationsAttribute);
434: }
435:
436: public void visitRuntimeInvisibleParameterAnnotationsAttribute(
437: Clazz clazz,
438: Method method,
439: RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute) {
440: visitAnyParameterAnnotationsAttribute(clazz, method,
441: runtimeInvisibleParameterAnnotationsAttribute);
442: }
443:
444: public void visitAnnotationDefaultAttribute(Clazz clazz,
445: Method method,
446: AnnotationDefaultAttribute annotationDefaultAttribute) {
447: visitAnyAttribute(clazz, annotationDefaultAttribute);
448: }
449:
450: // Simplifications for InstructionVisitor.
451:
452: /**
453: * Visits any type of Instruction.
454: */
455: public void visitAnyInstruction(Clazz clazz, Method method,
456: CodeAttribute codeAttribute, int offset,
457: Instruction instruction) {
458: throw new UnsupportedOperationException(
459: "Method must be overridden in ["
460: + this .getClass().getName()
461: + "] if ever called");
462: }
463:
464: public void visitSimpleInstruction(Clazz clazz, Method method,
465: CodeAttribute codeAttribute, int offset,
466: SimpleInstruction simpleInstruction) {
467: visitAnyInstruction(clazz, method, codeAttribute, offset,
468: simpleInstruction);
469: }
470:
471: public void visitVariableInstruction(Clazz clazz, Method method,
472: CodeAttribute codeAttribute, int offset,
473: VariableInstruction variableInstruction) {
474: visitAnyInstruction(clazz, method, codeAttribute, offset,
475: variableInstruction);
476: }
477:
478: public void visitConstantInstruction(Clazz clazz, Method method,
479: CodeAttribute codeAttribute, int offset,
480: ConstantInstruction constantInstruction) {
481: visitAnyInstruction(clazz, method, codeAttribute, offset,
482: constantInstruction);
483: }
484:
485: public void visitBranchInstruction(Clazz clazz, Method method,
486: CodeAttribute codeAttribute, int offset,
487: BranchInstruction branchInstruction) {
488: visitAnyInstruction(clazz, method, codeAttribute, offset,
489: branchInstruction);
490: }
491:
492: /**
493: * Visits either type of SwitchInstruction.
494: */
495: public void visitAnySwitchInstruction(Clazz clazz, Method method,
496: CodeAttribute codeAttribute, int offset,
497: SwitchInstruction switchInstruction) {
498: visitAnyInstruction(clazz, method, codeAttribute, offset,
499: switchInstruction);
500: }
501:
502: public void visitTableSwitchInstruction(Clazz clazz, Method method,
503: CodeAttribute codeAttribute, int offset,
504: TableSwitchInstruction tableSwitchInstruction) {
505: visitAnySwitchInstruction(clazz, method, codeAttribute, offset,
506: tableSwitchInstruction);
507: }
508:
509: public void visitLookUpSwitchInstruction(Clazz clazz,
510: Method method, CodeAttribute codeAttribute, int offset,
511: LookUpSwitchInstruction lookUpSwitchInstruction) {
512: visitAnySwitchInstruction(clazz, method, codeAttribute, offset,
513: lookUpSwitchInstruction);
514: }
515:
516: // Simplifications for StackMapFrameVisitor.
517:
518: /**
519: * Visits any type of VerificationType.
520: */
521: public void visitAnyStackMapFrame(Clazz clazz, Method method,
522: CodeAttribute codeAttribute, int offset,
523: StackMapFrame stackMapFrame) {
524: throw new UnsupportedOperationException(
525: "Method must be overridden in ["
526: + this .getClass().getName()
527: + "] if ever called");
528: }
529:
530: public void visitSameZeroFrame(Clazz clazz, Method method,
531: CodeAttribute codeAttribute, int offset,
532: SameZeroFrame sameZeroFrame) {
533: visitAnyStackMapFrame(clazz, method, codeAttribute, offset,
534: sameZeroFrame);
535: }
536:
537: public void visitSameOneFrame(Clazz clazz, Method method,
538: CodeAttribute codeAttribute, int offset,
539: SameOneFrame sameOneFrame) {
540: visitAnyStackMapFrame(clazz, method, codeAttribute, offset,
541: sameOneFrame);
542: }
543:
544: public void visitLessZeroFrame(Clazz clazz, Method method,
545: CodeAttribute codeAttribute, int offset,
546: LessZeroFrame lessZeroFrame) {
547: visitAnyStackMapFrame(clazz, method, codeAttribute, offset,
548: lessZeroFrame);
549: }
550:
551: public void visitMoreZeroFrame(Clazz clazz, Method method,
552: CodeAttribute codeAttribute, int offset,
553: MoreZeroFrame moreZeroFrame) {
554: visitAnyStackMapFrame(clazz, method, codeAttribute, offset,
555: moreZeroFrame);
556: }
557:
558: public void visitFullFrame(Clazz clazz, Method method,
559: CodeAttribute codeAttribute, int offset, FullFrame fullFrame) {
560: visitAnyStackMapFrame(clazz, method, codeAttribute, offset,
561: fullFrame);
562: }
563:
564: // Simplifications for VerificationTypeVisitor.
565:
566: /**
567: * Visits any type of VerificationType.
568: */
569: public void visitAnyVerificationType(Clazz clazz, Method method,
570: CodeAttribute codeAttribute, int offset,
571: VerificationType verificationType) {
572: throw new UnsupportedOperationException(
573: "Method must be overridden in ["
574: + this .getClass().getName()
575: + "] if ever called");
576: }
577:
578: public void visitIntegerType(Clazz clazz, Method method,
579: CodeAttribute codeAttribute, int offset,
580: IntegerType integerType) {
581: visitAnyVerificationType(clazz, method, codeAttribute, offset,
582: integerType);
583: }
584:
585: public void visitFloatType(Clazz clazz, Method method,
586: CodeAttribute codeAttribute, int offset, FloatType floatType) {
587: visitAnyVerificationType(clazz, method, codeAttribute, offset,
588: floatType);
589: }
590:
591: public void visitLongType(Clazz clazz, Method method,
592: CodeAttribute codeAttribute, int offset, LongType longType) {
593: visitAnyVerificationType(clazz, method, codeAttribute, offset,
594: longType);
595: }
596:
597: public void visitDoubleType(Clazz clazz, Method method,
598: CodeAttribute codeAttribute, int offset,
599: DoubleType doubleType) {
600: visitAnyVerificationType(clazz, method, codeAttribute, offset,
601: doubleType);
602: }
603:
604: public void visitTopType(Clazz clazz, Method method,
605: CodeAttribute codeAttribute, int offset, TopType topType) {
606: visitAnyVerificationType(clazz, method, codeAttribute, offset,
607: topType);
608: }
609:
610: public void visitObjectType(Clazz clazz, Method method,
611: CodeAttribute codeAttribute, int offset,
612: ObjectType objectType) {
613: visitAnyVerificationType(clazz, method, codeAttribute, offset,
614: objectType);
615: }
616:
617: public void visitNullType(Clazz clazz, Method method,
618: CodeAttribute codeAttribute, int offset, NullType nullType) {
619: visitAnyVerificationType(clazz, method, codeAttribute, offset,
620: nullType);
621: }
622:
623: public void visitUninitializedType(Clazz clazz, Method method,
624: CodeAttribute codeAttribute, int offset,
625: UninitializedType uninitializedType) {
626: visitAnyVerificationType(clazz, method, codeAttribute, offset,
627: uninitializedType);
628: }
629:
630: public void visitUninitializedThisType(Clazz clazz, Method method,
631: CodeAttribute codeAttribute, int offset,
632: UninitializedThisType uninitializedThisType) {
633: visitAnyVerificationType(clazz, method, codeAttribute, offset,
634: uninitializedThisType);
635: }
636:
637: public void visitStackIntegerType(Clazz clazz, Method method,
638: CodeAttribute codeAttribute, int offset, int index,
639: IntegerType integerType) {
640: visitIntegerType(clazz, method, codeAttribute, offset,
641: integerType);
642: }
643:
644: public void visitStackFloatType(Clazz clazz, Method method,
645: CodeAttribute codeAttribute, int offset, int index,
646: FloatType floatType) {
647: visitFloatType(clazz, method, codeAttribute, offset, floatType);
648: }
649:
650: public void visitStackLongType(Clazz clazz, Method method,
651: CodeAttribute codeAttribute, int offset, int index,
652: LongType longType) {
653: visitLongType(clazz, method, codeAttribute, offset, longType);
654: }
655:
656: public void visitStackDoubleType(Clazz clazz, Method method,
657: CodeAttribute codeAttribute, int offset, int index,
658: DoubleType doubleType) {
659: visitDoubleType(clazz, method, codeAttribute, offset,
660: doubleType);
661: }
662:
663: public void visitStackTopType(Clazz clazz, Method method,
664: CodeAttribute codeAttribute, int offset, int index,
665: TopType topType) {
666: visitTopType(clazz, method, codeAttribute, offset, topType);
667: }
668:
669: public void visitStackObjectType(Clazz clazz, Method method,
670: CodeAttribute codeAttribute, int offset, int index,
671: ObjectType objectType) {
672: visitObjectType(clazz, method, codeAttribute, offset,
673: objectType);
674: }
675:
676: public void visitStackNullType(Clazz clazz, Method method,
677: CodeAttribute codeAttribute, int offset, int index,
678: NullType nullType) {
679: visitNullType(clazz, method, codeAttribute, offset, nullType);
680: }
681:
682: public void visitStackUninitializedType(Clazz clazz, Method method,
683: CodeAttribute codeAttribute, int offset, int index,
684: UninitializedType uninitializedType) {
685: visitUninitializedType(clazz, method, codeAttribute, offset,
686: uninitializedType);
687: }
688:
689: public void visitStackUninitializedThisType(Clazz clazz,
690: Method method, CodeAttribute codeAttribute, int offset,
691: int index, UninitializedThisType uninitializedThisType) {
692: visitUninitializedThisType(clazz, method, codeAttribute,
693: offset, uninitializedThisType);
694: }
695:
696: public void visitVariablesIntegerType(Clazz clazz, Method method,
697: CodeAttribute codeAttribute, int offset, int index,
698: IntegerType integerType) {
699: visitIntegerType(clazz, method, codeAttribute, offset,
700: integerType);
701: }
702:
703: public void visitVariablesFloatType(Clazz clazz, Method method,
704: CodeAttribute codeAttribute, int offset, int index,
705: FloatType floatType) {
706: visitFloatType(clazz, method, codeAttribute, offset, floatType);
707: }
708:
709: public void visitVariablesLongType(Clazz clazz, Method method,
710: CodeAttribute codeAttribute, int offset, int index,
711: LongType longType) {
712: visitLongType(clazz, method, codeAttribute, offset, longType);
713: }
714:
715: public void visitVariablesDoubleType(Clazz clazz, Method method,
716: CodeAttribute codeAttribute, int offset, int index,
717: DoubleType doubleType) {
718: visitDoubleType(clazz, method, codeAttribute, offset,
719: doubleType);
720: }
721:
722: public void visitVariablesTopType(Clazz clazz, Method method,
723: CodeAttribute codeAttribute, int offset, int index,
724: TopType topType) {
725: visitTopType(clazz, method, codeAttribute, offset, topType);
726: }
727:
728: public void visitVariablesObjectType(Clazz clazz, Method method,
729: CodeAttribute codeAttribute, int offset, int index,
730: ObjectType objectType) {
731: visitObjectType(clazz, method, codeAttribute, offset,
732: objectType);
733: }
734:
735: public void visitVariablesNullType(Clazz clazz, Method method,
736: CodeAttribute codeAttribute, int offset, int index,
737: NullType nullType) {
738: visitNullType(clazz, method, codeAttribute, offset, nullType);
739: }
740:
741: public void visitVariablesUninitializedType(Clazz clazz,
742: Method method, CodeAttribute codeAttribute, int offset,
743: int index, UninitializedType uninitializedType) {
744: visitUninitializedType(clazz, method, codeAttribute, offset,
745: uninitializedType);
746: }
747:
748: public void visitVariablesUninitializedThisType(Clazz clazz,
749: Method method, CodeAttribute codeAttribute, int offset,
750: int index, UninitializedThisType uninitializedThisType) {
751: visitUninitializedThisType(clazz, method, codeAttribute,
752: offset, uninitializedThisType);
753: }
754:
755: // Simplifications for AnnotationVisitor.
756:
757: public void visitAnnotation(Clazz clazz, Annotation annotation) {
758: throw new UnsupportedOperationException(
759: "Method must be overridden in ["
760: + this .getClass().getName()
761: + "] if ever called");
762: }
763:
764: /**
765: * Visits the given Annotation of any type of class member.
766: */
767: public void visitAnnotation(Clazz clazz, Member member,
768: Annotation annotation) {
769: visitAnnotation(clazz, annotation);
770: }
771:
772: public void visitAnnotation(Clazz clazz, Field field,
773: Annotation annotation) {
774: visitAnnotation(clazz, (Member) field, annotation);
775: }
776:
777: public void visitAnnotation(Clazz clazz, Method method,
778: Annotation annotation) {
779: visitAnnotation(clazz, (Member) method, annotation);
780: }
781:
782: public void visitAnnotation(Clazz clazz, Method method,
783: int parameterIndex, Annotation annotation) {
784: visitAnnotation(clazz, method, annotation);
785: }
786:
787: // Simplifications for ElementValueVisitor.
788:
789: public void visitAnyElementValue(Clazz clazz,
790: Annotation annotation, ElementValue elementValue) {
791: throw new UnsupportedOperationException(
792: "Method must be overridden in ["
793: + this .getClass().getName()
794: + "] if ever called");
795: }
796:
797: public void visitConstantElementValue(Clazz clazz,
798: Annotation annotation,
799: ConstantElementValue constantElementValue) {
800: visitAnyElementValue(clazz, annotation, constantElementValue);
801: }
802:
803: public void visitEnumConstantElementValue(Clazz clazz,
804: Annotation annotation,
805: EnumConstantElementValue enumConstantElementValue) {
806: visitAnyElementValue(clazz, annotation,
807: enumConstantElementValue);
808: }
809:
810: public void visitClassElementValue(Clazz clazz,
811: Annotation annotation, ClassElementValue classElementValue) {
812: visitAnyElementValue(clazz, annotation, classElementValue);
813: }
814:
815: public void visitAnnotationElementValue(Clazz clazz,
816: Annotation annotation,
817: AnnotationElementValue annotationElementValue) {
818: visitAnyElementValue(clazz, annotation, annotationElementValue);
819: }
820:
821: public void visitArrayElementValue(Clazz clazz,
822: Annotation annotation, ArrayElementValue arrayElementValue) {
823: visitAnyElementValue(clazz, annotation, arrayElementValue);
824: }
825: }
|