001: /***
002: * ASM: a very small and fast Java bytecode manipulation framework
003: * Copyright (c) 2000,2002,2003 INRIA, France Telecom
004: * All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: * 1. Redistributions of source code must retain the above copyright
010: * notice, this list of conditions and the following disclaimer.
011: * 2. Redistributions in binary form must reproduce the above copyright
012: * notice, this list of conditions and the following disclaimer in the
013: * documentation and/or other materials provided with the distribution.
014: * 3. Neither the name of the copyright holders nor the names of its
015: * contributors may be used to endorse or promote products derived from
016: * this software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
022: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
024: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
025: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
026: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
027: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
028: * THE POSSIBILITY OF SUCH DAMAGE.
029: */package oracle.toplink.libraries.asm;
030:
031: /**
032: * An empty {@link CodeVisitor CodeVisitor} that delegates to another {@link
033: * CodeVisitor CodeVisitor}. This class can be used as a super class to quickly
034: * implement usefull code adapter classes, just by overriding the necessary
035: * methods.
036: *
037: * @author Eric Bruneton
038: */
039:
040: public class CodeAdapter implements CodeVisitor {
041:
042: /**
043: * The {@link CodeVisitor CodeVisitor} to which this adapter delegates calls.
044: */
045:
046: protected CodeVisitor cv;
047:
048: /**
049: * Constructs a new {@link CodeAdapter CodeAdapter} object.
050: *
051: * @param cv the code visitor to which this adapter must delegate calls.
052: */
053:
054: public CodeAdapter(final CodeVisitor cv) {
055: this .cv = cv;
056: }
057:
058: public void visitInsn(final int opcode) {
059: cv.visitInsn(opcode);
060: }
061:
062: public void visitIntInsn(final int opcode, final int operand) {
063: cv.visitIntInsn(opcode, operand);
064: }
065:
066: public void visitVarInsn(final int opcode, final int var) {
067: cv.visitVarInsn(opcode, var);
068: }
069:
070: public void visitTypeInsn(final int opcode, final String desc) {
071: cv.visitTypeInsn(opcode, desc);
072: }
073:
074: public void visitFieldInsn(final int opcode, final String owner,
075: final String name, final String desc) {
076: cv.visitFieldInsn(opcode, owner, name, desc);
077: }
078:
079: public void visitMethodInsn(final int opcode, final String owner,
080: final String name, final String desc) {
081: cv.visitMethodInsn(opcode, owner, name, desc);
082: }
083:
084: public void visitJumpInsn(final int opcode, final Label label) {
085: cv.visitJumpInsn(opcode, label);
086: }
087:
088: public void visitLabel(final Label label) {
089: cv.visitLabel(label);
090: }
091:
092: public void visitLdcInsn(final Object cst) {
093: cv.visitLdcInsn(cst);
094: }
095:
096: public void visitIincInsn(final int var, final int increment) {
097: cv.visitIincInsn(var, increment);
098: }
099:
100: public void visitTableSwitchInsn(final int min, final int max,
101: final Label dflt, final Label labels[]) {
102: cv.visitTableSwitchInsn(min, max, dflt, labels);
103: }
104:
105: public void visitLookupSwitchInsn(final Label dflt,
106: final int keys[], final Label labels[]) {
107: cv.visitLookupSwitchInsn(dflt, keys, labels);
108: }
109:
110: public void visitMultiANewArrayInsn(final String desc,
111: final int dims) {
112: cv.visitMultiANewArrayInsn(desc, dims);
113: }
114:
115: public void visitTryCatchBlock(final Label start, final Label end,
116: final Label handler, final String type) {
117: cv.visitTryCatchBlock(start, end, handler, type);
118: }
119:
120: public void visitMaxs(final int maxStack, final int maxLocals) {
121: cv.visitMaxs(maxStack, maxLocals);
122: }
123:
124: public void visitLocalVariable(final String name,
125: final String desc, final Label start, final Label end,
126: final int index) {
127: cv.visitLocalVariable(name, desc, start, end, index);
128: }
129:
130: public void visitLineNumber(final int line, final Label start) {
131: cv.visitLineNumber(line, start);
132: }
133:
134: public void visitAttribute(final Attribute attr) {
135: cv.visitAttribute(attr);
136: }
137: }
|