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 org.objectweb.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 useful 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    //jaime
86    public TypeAnnotationVisitor visitTypeAnnotation(String desc,
87        boolean visible,
88        boolean inCode)
89    {
90        return cv.visitTypeAnnotation(desc, visible, inCode);
91    }
92    // end jaime
93
94    public void visitAttribute(final Attribute attr) {
95        cv.visitAttribute(attr);
96    }
97
98    public void visitInnerClass(
99        final String name,
100        final String outerName,
101        final String innerName,
102        final int access)
103    {
104        cv.visitInnerClass(name, outerName, innerName, access);
105    }
106
107    public FieldVisitor visitField(
108        final int access,
109        final String name,
110        final String desc,
111        final String signature,
112        final Object value)
113    {
114        return cv.visitField(access, name, desc, signature, value);
115    }
116
117    public MethodVisitor visitMethod(
118        final int access,
119        final String name,
120        final String desc,
121        final String signature,
122        final String[] exceptions)
123    {
124        return cv.visitMethod(access, name, desc, signature, exceptions);
125    }
126
127    public void visitEnd() {
128        cv.visitEnd();
129    }
130}
131