1/***
2 * ASM: a very small and fast Java bytecode manipulation framework
3 * Copyright (c) 2000-2005 INRIA, France Telecom
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of the copyright holders nor the names of its
15 *    contributors may be used to endorse or promote products derived from
16 *    this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
29 */
30package com.sleepycat.asm;
31
32/**
33 * An empty {@link ClassVisitor} that delegates to another {@link ClassVisitor}.
34 * This class can be used as a super class to quickly implement usefull class
35 * adapter classes, just by overriding the necessary methods.
36 *
37 * @author Eric Bruneton
38 */
39public class ClassAdapter implements ClassVisitor {
40
41    /**
42     * The {@link ClassVisitor} to which this adapter delegates calls.
43     */
44    protected ClassVisitor cv;
45
46    /**
47     * Constructs a new {@link ClassAdapter} object.
48     *
49     * @param cv the class visitor to which this adapter must delegate calls.
50     */
51    public ClassAdapter(final ClassVisitor cv) {
52        this.cv = cv;
53    }
54
55    public void visit(
56        final int version,
57        final int access,
58        final String name,
59        final String signature,
60        final String superName,
61        final String[] interfaces)
62    {
63        cv.visit(version, access, name, signature, superName, interfaces);
64    }
65
66    public void visitSource(final String source, final String debug) {
67        cv.visitSource(source, debug);
68    }
69
70    public void visitOuterClass(
71        final String owner,
72        final String name,
73        final String desc)
74    {
75        cv.visitOuterClass(owner, name, desc);
76    }
77
78    public AnnotationVisitor visitAnnotation(
79        final String desc,
80        final boolean visible)
81    {
82        return cv.visitAnnotation(desc, visible);
83    }
84
85    public void visitAttribute(final Attribute attr) {
86        cv.visitAttribute(attr);
87    }
88
89    public void visitInnerClass(
90        final String name,
91        final String outerName,
92        final String innerName,
93        final int access)
94    {
95        cv.visitInnerClass(name, outerName, innerName, access);
96    }
97
98    public FieldVisitor visitField(
99        final int access,
100        final String name,
101        final String desc,
102        final String signature,
103        final Object value)
104    {
105        return cv.visitField(access, name, desc, signature, value);
106    }
107
108    public MethodVisitor visitMethod(
109        final int access,
110        final String name,
111        final String desc,
112        final String signature,
113        final String[] exceptions)
114    {
115        return cv.visitMethod(access, name, desc, signature, exceptions);
116    }
117
118    public void visitEnd() {
119        cv.visitEnd();
120    }
121}
122