Home | History | Annotate | Download | only in tree
      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