1 /*** 2 * ASM: a very small and fast Java bytecode manipulation framework 3 * Copyright (c) 2000-2007 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 */ 30 package org.mockito.asm.tree; 31 32 import org.mockito.asm.MethodVisitor; 33 34 /** 35 * A node that represents a local variable declaration. 36 * 37 * @author Eric Bruneton 38 */ 39 public class LocalVariableNode { 40 41 /** 42 * The name of a local variable. 43 */ 44 public String name; 45 46 /** 47 * The type descriptor of this local variable. 48 */ 49 public String desc; 50 51 /** 52 * The signature of this local variable. May be <tt>null</tt>. 53 */ 54 public String signature; 55 56 /** 57 * The first instruction corresponding to the scope of this local variable 58 * (inclusive). 59 */ 60 public LabelNode start; 61 62 /** 63 * The last instruction corresponding to the scope of this local variable 64 * (exclusive). 65 */ 66 public LabelNode end; 67 68 /** 69 * The local variable's index. 70 */ 71 public int index; 72 73 /** 74 * Constructs a new {@link LocalVariableNode}. 75 * 76 * @param name the name of a local variable. 77 * @param desc the type descriptor of this local variable. 78 * @param signature the signature of this local variable. May be 79 * <tt>null</tt>. 80 * @param start the first instruction corresponding to the scope of this 81 * local variable (inclusive). 82 * @param end the last instruction corresponding to the scope of this local 83 * variable (exclusive). 84 * @param index the local variable's index. 85 */ 86 public LocalVariableNode( 87 final String name, 88 final String desc, 89 final String signature, 90 final LabelNode start, 91 final LabelNode end, 92 final int index) 93 { 94 this.name = name; 95 this.desc = desc; 96 this.signature = signature; 97 this.start = start; 98 this.end = end; 99 this.index = index; 100 } 101 102 /** 103 * Makes the given visitor visit this local variable declaration. 104 * 105 * @param mv a method visitor. 106 */ 107 public void accept(final MethodVisitor mv) { 108 mv.visitLocalVariable(name, 109 desc, 110 signature, 111 start.getLabel(), 112 end.getLabel(), 113 index); 114 } 115 } 116