annotate src/clojure/asm/MethodAdapter.java @ 10:ef7dbbd6452c

added clojure source goodness
author Robert McIntyre <rlm@mit.edu>
date Sat, 21 Aug 2010 06:25:44 -0400
parents
children
rev   line source
rlm@10 1 /***
rlm@10 2 * ASM: a very small and fast Java bytecode manipulation framework
rlm@10 3 * Copyright (c) 2000-2005 INRIA, France Telecom
rlm@10 4 * All rights reserved.
rlm@10 5 *
rlm@10 6 * Redistribution and use in source and binary forms, with or without
rlm@10 7 * modification, are permitted provided that the following conditions
rlm@10 8 * are met:
rlm@10 9 * 1. Redistributions of source code must retain the above copyright
rlm@10 10 * notice, this list of conditions and the following disclaimer.
rlm@10 11 * 2. Redistributions in binary form must reproduce the above copyright
rlm@10 12 * notice, this list of conditions and the following disclaimer in the
rlm@10 13 * documentation and/or other materials provided with the distribution.
rlm@10 14 * 3. Neither the name of the copyright holders nor the names of its
rlm@10 15 * contributors may be used to endorse or promote products derived from
rlm@10 16 * this software without specific prior written permission.
rlm@10 17 *
rlm@10 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rlm@10 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rlm@10 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
rlm@10 21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
rlm@10 22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
rlm@10 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
rlm@10 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
rlm@10 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
rlm@10 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
rlm@10 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
rlm@10 28 * THE POSSIBILITY OF SUCH DAMAGE.
rlm@10 29 */
rlm@10 30 package clojure.asm;
rlm@10 31
rlm@10 32 /**
rlm@10 33 * An empty {@link MethodVisitor} that delegates to another
rlm@10 34 * {@link MethodVisitor}. This class can be used as a super class to quickly
rlm@10 35 * implement usefull method adapter classes, just by overriding the necessary
rlm@10 36 * methods.
rlm@10 37 *
rlm@10 38 * @author Eric Bruneton
rlm@10 39 */
rlm@10 40 public class MethodAdapter implements MethodVisitor{
rlm@10 41
rlm@10 42 /**
rlm@10 43 * The {@link MethodVisitor} to which this adapter delegates calls.
rlm@10 44 */
rlm@10 45 protected MethodVisitor mv;
rlm@10 46
rlm@10 47 /**
rlm@10 48 * Constructs a new {@link MethodAdapter} object.
rlm@10 49 *
rlm@10 50 * @param mv the code visitor to which this adapter must delegate calls.
rlm@10 51 */
rlm@10 52 public MethodAdapter(final MethodVisitor mv){
rlm@10 53 this.mv = mv;
rlm@10 54 }
rlm@10 55
rlm@10 56 public AnnotationVisitor visitAnnotationDefault(){
rlm@10 57 return mv.visitAnnotationDefault();
rlm@10 58 }
rlm@10 59
rlm@10 60 public AnnotationVisitor visitAnnotation(
rlm@10 61 final String desc,
rlm@10 62 final boolean visible){
rlm@10 63 return mv.visitAnnotation(desc, visible);
rlm@10 64 }
rlm@10 65
rlm@10 66 public AnnotationVisitor visitParameterAnnotation(
rlm@10 67 final int parameter,
rlm@10 68 final String desc,
rlm@10 69 final boolean visible){
rlm@10 70 return mv.visitParameterAnnotation(parameter, desc, visible);
rlm@10 71 }
rlm@10 72
rlm@10 73 public void visitAttribute(final Attribute attr){
rlm@10 74 mv.visitAttribute(attr);
rlm@10 75 }
rlm@10 76
rlm@10 77 public void visitCode(){
rlm@10 78 mv.visitCode();
rlm@10 79 }
rlm@10 80
rlm@10 81 public void visitFrame(
rlm@10 82 final int type,
rlm@10 83 final int nLocal,
rlm@10 84 final Object[] local,
rlm@10 85 final int nStack,
rlm@10 86 final Object[] stack){
rlm@10 87 mv.visitFrame(type, nLocal, local, nStack, stack);
rlm@10 88 }
rlm@10 89
rlm@10 90 public void visitInsn(final int opcode){
rlm@10 91 mv.visitInsn(opcode);
rlm@10 92 }
rlm@10 93
rlm@10 94 public void visitIntInsn(final int opcode, final int operand){
rlm@10 95 mv.visitIntInsn(opcode, operand);
rlm@10 96 }
rlm@10 97
rlm@10 98 public void visitVarInsn(final int opcode, final int var){
rlm@10 99 mv.visitVarInsn(opcode, var);
rlm@10 100 }
rlm@10 101
rlm@10 102 public void visitTypeInsn(final int opcode, final String desc){
rlm@10 103 mv.visitTypeInsn(opcode, desc);
rlm@10 104 }
rlm@10 105
rlm@10 106 public void visitFieldInsn(
rlm@10 107 final int opcode,
rlm@10 108 final String owner,
rlm@10 109 final String name,
rlm@10 110 final String desc){
rlm@10 111 mv.visitFieldInsn(opcode, owner, name, desc);
rlm@10 112 }
rlm@10 113
rlm@10 114 public void visitMethodInsn(
rlm@10 115 final int opcode,
rlm@10 116 final String owner,
rlm@10 117 final String name,
rlm@10 118 final String desc){
rlm@10 119 mv.visitMethodInsn(opcode, owner, name, desc);
rlm@10 120 }
rlm@10 121
rlm@10 122 public void visitJumpInsn(final int opcode, final Label label){
rlm@10 123 mv.visitJumpInsn(opcode, label);
rlm@10 124 }
rlm@10 125
rlm@10 126 public void visitLabel(final Label label){
rlm@10 127 mv.visitLabel(label);
rlm@10 128 }
rlm@10 129
rlm@10 130 public void visitLdcInsn(final Object cst){
rlm@10 131 mv.visitLdcInsn(cst);
rlm@10 132 }
rlm@10 133
rlm@10 134 public void visitIincInsn(final int var, final int increment){
rlm@10 135 mv.visitIincInsn(var, increment);
rlm@10 136 }
rlm@10 137
rlm@10 138 public void visitTableSwitchInsn(
rlm@10 139 final int min,
rlm@10 140 final int max,
rlm@10 141 final Label dflt,
rlm@10 142 final Label labels[]){
rlm@10 143 mv.visitTableSwitchInsn(min, max, dflt, labels);
rlm@10 144 }
rlm@10 145
rlm@10 146 public void visitLookupSwitchInsn(
rlm@10 147 final Label dflt,
rlm@10 148 final int keys[],
rlm@10 149 final Label labels[]){
rlm@10 150 mv.visitLookupSwitchInsn(dflt, keys, labels);
rlm@10 151 }
rlm@10 152
rlm@10 153 public void visitMultiANewArrayInsn(final String desc, final int dims){
rlm@10 154 mv.visitMultiANewArrayInsn(desc, dims);
rlm@10 155 }
rlm@10 156
rlm@10 157 public void visitTryCatchBlock(
rlm@10 158 final Label start,
rlm@10 159 final Label end,
rlm@10 160 final Label handler,
rlm@10 161 final String type){
rlm@10 162 mv.visitTryCatchBlock(start, end, handler, type);
rlm@10 163 }
rlm@10 164
rlm@10 165 public void visitLocalVariable(
rlm@10 166 final String name,
rlm@10 167 final String desc,
rlm@10 168 final String signature,
rlm@10 169 final Label start,
rlm@10 170 final Label end,
rlm@10 171 final int index){
rlm@10 172 mv.visitLocalVariable(name, desc, signature, start, end, index);
rlm@10 173 }
rlm@10 174
rlm@10 175 public void visitLineNumber(final int line, final Label start){
rlm@10 176 mv.visitLineNumber(line, start);
rlm@10 177 }
rlm@10 178
rlm@10 179 public void visitMaxs(final int maxStack, final int maxLocals){
rlm@10 180 mv.visitMaxs(maxStack, maxLocals);
rlm@10 181 }
rlm@10 182
rlm@10 183 public void visitEnd(){
rlm@10 184 mv.visitEnd();
rlm@10 185 }
rlm@10 186 }