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.ClassVisitor;
     33 
     34 /**
     35  * A node that represents an inner class.
     36  *
     37  * @author Eric Bruneton
     38  */
     39 public class InnerClassNode {
     40 
     41     /**
     42      * The internal name of an inner class (see
     43      * {@link org.mockito.asm.Type#getInternalName() getInternalName}).
     44      */
     45     public String name;
     46 
     47     /**
     48      * The internal name of the class to which the inner class belongs (see
     49      * {@link org.mockito.asm.Type#getInternalName() getInternalName}). May
     50      * be <tt>null</tt>.
     51      */
     52     public String outerName;
     53 
     54     /**
     55      * The (simple) name of the inner class inside its enclosing class. May be
     56      * <tt>null</tt> for anonymous inner classes.
     57      */
     58     public String innerName;
     59 
     60     /**
     61      * The access flags of the inner class as originally declared in the
     62      * enclosing class.
     63      */
     64     public int access;
     65 
     66     /**
     67      * Constructs a new {@link InnerClassNode}.
     68      *
     69      * @param name the internal name of an inner class (see
     70      *        {@link org.mockito.asm.Type#getInternalName() getInternalName}).
     71      * @param outerName the internal name of the class to which the inner class
     72      *        belongs (see
     73      *        {@link org.mockito.asm.Type#getInternalName() getInternalName}).
     74      *        May be <tt>null</tt>.
     75      * @param innerName the (simple) name of the inner class inside its
     76      *        enclosing class. May be <tt>null</tt> for anonymous inner
     77      *        classes.
     78      * @param access the access flags of the inner class as originally declared
     79      *        in the enclosing class.
     80      */
     81     public InnerClassNode(
     82         final String name,
     83         final String outerName,
     84         final String innerName,
     85         final int access)
     86     {
     87         this.name = name;
     88         this.outerName = outerName;
     89         this.innerName = innerName;
     90         this.access = access;
     91     }
     92 
     93     /**
     94      * Makes the given class visitor visit this inner class.
     95      *
     96      * @param cv a class visitor.
     97      */
     98     public void accept(final ClassVisitor cv) {
     99         cv.visitInnerClass(name, outerName, innerName, access);
    100     }
    101 }
    102