Logo
Distributed Genetic Programming Framework
print print

File org.sfc.utils.ClassContext.java

Here you can find all the information about the file org.sfc.utils.ClassContext.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2006 Thomas Weise
 * 
 * E-Mail           : tweise@gmx.de
 * Creation Date    : 2006-06-16 06:13:13
 * Original Filename: org.sfc.utils.ClassContext.java
 * Version          : 1.0.0
 * Last modification: 2006-06-16
 *                by: Thomas Weise
 * 
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *                    
 * Warranty         : This software is provided "as is" without any
 *                    warranty; without even the implied warranty of
 *                    merchantability or fitness for a particular purpose.
 *                    See the Gnu Lesser General Public License for more
 *                    details.
 */

 
package org.sfc.utils;

import java.io.Serializable;

import org.sfc.collections.BasicList;

/**
 * This class represents a class context. The class context ist the class context of
 * all classes that include the methods currently on the execution stack.
 * 
 * @author Thomas Weise
 */

public class ClassContext extends     BasicList<Class>
                          implements  Serializable
  {
/**
 * The serial version uid.
 */

  private static final long serialVersionUID = 1L;

  
/**
 * The internal class array.
 */

  private final Class[]   m_classes ;
  
/**
 * Create a new class context.
 * 
 * @param p_classes The class array of the method call.
 */

  ClassContext  (final  Class[]  p_classes)
    {
    super();
    this.m_classes = p_classes;
    }
  
/**
 * Returns the number of elements in this class context.  If this class context contains
 * more than <tt>Integer.MAX_VALUE</tt> elements, returns
 * <tt>Integer.MAX_VALUE</tt>.
 *
 * @return the number of elements in this class context.
 */

  @Override
  public  final int size()
    {
    return (this.m_classes.length - Typesafe.CONTEXT_RESERVED_CLASSES);
    }

/**
 * Returns <tt>true</tt> if this class context contains no elements.
 *
 * @return <tt>true</tt> if this class context contains no elements.
 */

  @Override
  public  final boolean isEmpty()
    {
    return (this.m_classes.length > Typesafe.CONTEXT_RESERVED_CLASSES);
    }
  
  
/**
 * Returns <tt>true</tt> if this class context contains the specified element.
 * More formally, returns <tt>true</tt> if and only if this class context contains
 * at least one element <tt>e</tt> such that
 * <tt>(p_o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;p_o.equals(e))</tt>.
 *
 * @param p_o element whose presence in this class context is to be tested.
 * @return <tt>true</tt> if this class context contains the specified element.
 * @throws ClassCastException if the type of the specified element
 *         is incompatible with this class context (optional).
 * @throws NullPointerException if the specified element is null and this
 *         class context does not support null elements (optional).
 */

  @Override
  public  final boolean contains(final Object p_o)
    {
    int      l_i;
    Class[]  l_a;
    Class    l_t;
    
    l_a = this.m_classes;
    l_i = (l_a.length-1);
    if(p_o == null)
      {
      for(; l_i >= Typesafe.CONTEXT_RESERVED_CLASSES; l_i--)
        {
        if(l_a[l_i] == null) return true;
        }
      return false;
      }
    
    for(; l_i >= 0; l_i--)
      {
      l_t = l_a[l_i];
      if((l_t != null) && (l_t.equals(p_o)))
        {
        return true;
        }
      }
    
    return false;
    }


/**
 * Returns the element at the specified position in this class context.
 *
 * @param p_index index of element to return.
 * @return the element at the specified position in this class context.
 * 
 * @throws IndexOutOfBoundsException if the index is out of range (index
 *      &lt; 0 || index &gt;= size()).
 */

  @Override
  public  final Class get(final  int p_index)
    {
    return this.m_classes[p_index + Typesafe.CONTEXT_RESERVED_CLASSES];
    }



/**
 * Returns the index in this class context of the first occurrence of the specified
 * element, or -1 if this class context does not contain this element.
 * More formally, returns the lowest index <tt>i</tt> such that
 * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>,
 * or -1 if there is no such index.
 *
 * @param p_o element to search for.
 * @return the index in this class context of the first occurrence of the specified
 *         element, or -1 if this class context does not contain this element.
 */


  @Override
  public  final int indexOf(final Object p_o)
    {    
    int      l_i, l_j;
    Class[]  l_a;
    Class    l_t;
    
    l_a = this.m_classes;
    l_i = l_a.length;
    
    if(p_o == null)
      {
      for(l_j = Typesafe.CONTEXT_RESERVED_CLASSES; l_j < l_i; l_j++)
        {
        if(l_a[l_j] == null) return l_j;
        }
      return -1;
      }
    
    for(l_j = Typesafe.CONTEXT_RESERVED_CLASSES; l_j < l_i; l_j++)
      {
      l_t = l_a[l_j];
      if((l_t != null) && (l_t.equals(p_o)))
        {
        return l_j;
        }
      }
    
    return -1;
    }

/**
 * Returns the index in this class context of the last occurrence of the specified
 * element, or -1 if this class context does not contain this element.
 * More formally, returns the highest index <tt>i</tt> such that
 * <tt>(p_o==null ? get(i)==null : o.equals(get(i)))</tt>,
 * or -1 if there is no such index.
 *
 * @param p_o element to search for.
 * @return the index in this class context of the last occurrence of the specified
 *         element, or -1 if this class context does not contain this element.
 */

  @Override
  public  final int lastIndexOf(final Object p_o)
    {    
    int      l_i;
    Class[]  l_a;
    Class    l_t;
    
    l_a = this.m_classes;
    l_i = (l_a.length-1);
    
    if(p_o == null)
      {
      for(; l_i >= Typesafe.CONTEXT_RESERVED_CLASSES; l_i--)
        {
        if(l_a[l_i] == null) return l_i;
        }
      return -1;
      }
    
    for(; l_i >= Typesafe.CONTEXT_RESERVED_CLASSES; l_i--)
      {
      l_t = l_a[l_i];
      if((l_t != null) && (l_t.equals(p_o)))
        {
        return l_i;
        }
      }
    
    return -1;
    }


/**
 * Creates and returns a copy of this object.  The precise meaning
 * of "copy" may depend on the class of the object.
 *
 * @return     A clone of this instance.
 *
 * @see java.lang.Cloneable
 */

  @Override
  public  Object  clone ()
    {
    return this;
    }
  }

File Information:

file name:ClassContext.java
package:org.sfc.utils
qualified name:org.sfc.utils.ClassContext.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/sfc/utils/ClassContext.java
size:6.808 KB (6972 B)
uploaded: 2015-07-22 04:11:13 GMT+0000
last update: 2006-06-16 03:23:19 GMT+0000
last access: 2018-01-24 01:31:28 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2018-01-24 01:31:28 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo