Logo
Distributed Genetic Programming Framework
print print

File org.sfc.collections.ProtectedCollection.java

Here you can find all the information about the file org.sfc.collections.ProtectedCollection.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-05-22 06:40:07
 * Original Filename: org.sfc.collections.ProtectedCollection.java
 * Version          : 1.0.0
 * Last modification: 2006-05-22
 *                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.collections;

import java.util.Collection;

import org.sfc.utils.Typesafe;

/**
 * A protected collection is an array collection that provides internal
 * means to modify it but no external ones.
 * It is highly effective but can only be modified by its descendants and
 * appears to be immutable for all other objects.
 * 
 * @param <Type>  The item type.
 *
 * @author Thomas Weise
 */

public class ProtectedCollection<Type> extends ArrayCollection<Type>
  {
/**
 * The serial version uid.
 */

  private static final long serialVersionUID = 1;

  
/**
 * Create a new mutable array collection.
 * @param p_initial_size    The initial size for the backing store.
 * @param p_type            The item type.
 */

  public  ProtectedCollection(final Class<Type> p_type,
                              final int         p_initial_size)
    {
    super(Arrays.create(p_type,
         ((p_initial_size <= 0) ? 12 : p_initial_size)), 0);
    }
  
/**
 * Create a new immutable array collection.
 * @param p_array The array data to mask.
 * @param p_count The count of items stored in the array.
 */

  public  ProtectedCollection(final Type[] p_array,
                            final int    p_count)
    {
    super(p_array, p_count);
    }
  
/**
 * Create a new immutable array collection.
 * @param p_array The array data to mask.
 */

  public  ProtectedCollection(final Type[] p_array)
    {
    super(p_array);
    }
  
/**
 * Create a new array collection by copying another collection.
 * @param p_collection    The collection to copy.
 * @param p_class         The class of the items.
 */

  public  ProtectedCollection (final Collection<Type> p_collection,
                               final Class<Type>      p_class)
    {
    super(p_collection, p_class);
    }
  
/**
 * 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.internal_clone();
    }
  
/**
 * Internally add an item to the collection.
 * @param p_item  The new collection item.
 */

  protected final void  do_add (final Type p_item)
    {
    Type[]      l_a;
    int         l_c;
    Class<Type> l_cc;
    
    l_c = this.m_count;
    l_a = this.m_array;
    
    if(l_a.length <= l_c)
      {
      l_cc = Typesafe.cast(l_a.getClass().getComponentType());
      l_a  = Arrays.create(l_cc, l_c << 1);
      System.arraycopy(this.m_array, 0, l_a, 0, l_c);
      this.m_array = l_a;
      }
    
    l_a[l_c] = p_item;
    this.m_count = (l_c+1);
    }
  
/**
 * Remove an item from the list.
 * @param p_item    The item to be removed.
 */

  protected final void  do_remove (final Type p_item)
    {
    int l_i;
    
    l_i = this.lastIndexOf(p_item);
    if(l_i >= 0) this.do_remove(l_i);
    }
  

/**
 * Remove an item from the list.
 * @param p_index   The index of the item to be removed.
 */

  protected final void  do_remove (final int p_index)
    {
    Type[]      l_a;
    int         l_c;
    
    l_c = (this.m_count-1);
    l_a = this.m_array;    
    l_a[p_index] = l_a[l_c];
    this.m_count = l_c;
    }
  }

File Information:

file name:ProtectedCollection.java
package:org.sfc.collections
qualified name:org.sfc.collections.ProtectedCollection.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/sfc/collections/ProtectedCollection.java
size:4.369 KB (4474 B)
uploaded: 2015-07-22 04:11:11 GMT+0000
last update: 2006-07-24 08:27:30 GMT+0000
last access: 2018-01-22 23:40:44 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-22 23:40:44 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo