Logo
Distributed Genetic Programming Framework
print print

File org.sfc.utils.MultiBuffer.java

Here you can find all the information about the file org.sfc.utils.MultiBuffer.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-02-28 10:27:32
 * Original Filename: org.sfc.utils.MultiBuffer.java
 * Version          : 1.1.0
 * Last modification: 2006-03-30
 *                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 org.sfc.collections.Arrays;

/**
 * Objects of this class hold multiple buffers of different types which
 * can be used for multiple purposes :-)
 *
 * @author Thomas Weise
 */

public class MultiBuffer
  {
/**
 * The byte buffer.
 */

  private byte[]    m_byte_buf  ;
/**
 * The char buffer.
 */

  private char[]    m_char_buf  ;
  
/**
 * The integer buffer.
 */

  private int[]     m_int_buf   ;
  
/**
 * The buffer for longs.
 */

  private long[]    m_long_buf;
  
/**
 * The buffer for doubles.
 */

  private double[]  m_double_buf;
  
/**
 * Create a new multi-buffer instance.
 */

  public  MultiBuffer ()
    {
    super();
    }
  

/**
 * Obtain an array of bytes of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @param p_fill  The value to fill the array with.
 * @return  An array of bytes of at least the specified size, with the
 *          first <code>p_size</code> items set to <code>p_fill</code>.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final byte[]  get_bytes (final int  p_size,
                                  final byte p_fill)
    {
    byte[]  l_b;
    
    l_b = this.m_byte_buf;
    if((l_b == null) || (l_b.length < p_size))
      {
      l_b          = new byte[p_size << 1];
      this.m_byte_buf = l_b;
      }
    
    Arrays.fill(l_b, p_fill, 0, p_size);    
    return l_b;
    }
  
  


/**
 * Obtain an array of chars of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @param p_fill  The value to fill the array with.
 * @return  An array of chars of at least the specified size, with the
 *          first <code>p_size</code> items set to <code>p_fill</code>.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final char[]  get_chars (final int  p_size,
                                  final char p_fill)
    {
    char[]  l_c;
    
    l_c = this.m_char_buf;
    if((l_c == null) || (l_c.length < p_size))
      {
      l_c          = new char[p_size << 1];
      this.m_char_buf = l_c;
      }
    
    Arrays.fill(l_c, p_fill, 0, p_size);    
    return l_c;
    }
  
/**
 * Obtain an array of ints of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @param p_fill  The value to fill the array with.
 * @return  An array of ints of at least the specified size, with the
 *          first <code>p_size</code> items set to <code>p_fill</code>.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final int[]   get_ints (final int  p_size,
                                 final int  p_fill)
    {
    int[]  l_i;
    
    l_i = this.m_int_buf;
    if((l_i == null) || (l_i.length < p_size))
      {
      l_i            = new int[p_size << 1];
      this.m_int_buf = l_i;
      }
    
    Arrays.fill(l_i, p_fill, 0, p_size);    
    return l_i;
    }
  
/**
 * Obtain an array of longs of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @param p_fill  The value to fill the array with.
 * @return  An array of longs of at least the specified size, with the
 *          first <code>p_size</code> items set to <code>p_fill</code>.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final long[]  get_longs (final int  p_size,
                                  final long p_fill)
    {
    long[]  l_i;
    
    l_i = this.m_long_buf;
    if((l_i == null) || (l_i.length < p_size))
      {
      l_i             = new long[p_size << 1];
      this.m_long_buf = l_i;
      }
    
    Arrays.fill(l_i, p_fill, 0, p_size);    
    return l_i;
    }
  
/**
 * Obtain an array of doubles of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @param p_fill  The value to fill the array with.
 * @return  An array of doubles of at least the specified size, with the
 *          first <code>p_size</code> items set to <code>p_fill</code>.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final double[]   get_doubles (final int     p_size,
                                       final double  p_fill)
    {
    double[]  l_d;
    
    l_d = this.m_double_buf;
    if((l_d == null) || (l_d.length < p_size))
      {
      l_d               = new double[p_size << 1];
      this.m_double_buf = l_d;
      }
    
    Arrays.fill(l_d, p_fill, 0, p_size);    
    return l_d;
    }
  



/**
 * Obtain an array of bytes of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @return  An array of bytes of at least the specified size.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final byte[]  get_bytes (final int  p_size)
    {
    byte[]  l_b;
    
    l_b = this.m_byte_buf;
    if((l_b == null) || (l_b.length < p_size))
      {
      l_b          = new byte[p_size << 1];
      this.m_byte_buf = l_b;
      }
        
    return l_b;
    }
  
  


/**
 * Obtain an array of chars of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @return  An array of chars of at least the specified size.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final char[]  get_chars (final int  p_size)
    {
    char[]  l_c;
    
    l_c = this.m_char_buf;
    if((l_c == null) || (l_c.length < p_size))
      {
      l_c          = new char[p_size << 1];
      this.m_char_buf = l_c;
      }
       
    return l_c;
    }
  
/**
 * Obtain an array of ints of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @return  An array of ints of at least the specified size.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final int[]   get_ints (final int  p_size)
    {
    int[]  l_i;
    
    l_i = this.m_int_buf;
    if((l_i == null) || (l_i.length < p_size))
      {
      l_i            = new int[p_size << 1];
      this.m_int_buf = l_i;
      }
      
    return l_i;
    }
  
/**
 * Obtain an array of longs of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @return  An array of longs of at least the specified size.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final long[]  get_longs (final int  p_size)
    {
    long[]  l_i;
    
    l_i = this.m_long_buf;
    if((l_i == null) || (l_i.length < p_size))
      {
      l_i             = new long[p_size << 1];
      this.m_long_buf = l_i;
      }
      
    return l_i;
    }
  
/**
 * Obtain an array of doubles of at least the specified size.
 * @param p_size  The size the array is required to have.
 * @return  An array of doubles of at least the specified size.
 *          <warning>You must not store this reference. There is only one
 *                   shared byte array per context. Use it only for
 *                   non-persistent, short term calculations.<warning>
 */

  public final double[]   get_doubles (final int     p_size)
    {
    double[]  l_d;
    
    l_d = this.m_double_buf;
    if((l_d == null) || (l_d.length < p_size))
      {
      l_d               = new double[p_size << 1];
      this.m_double_buf = l_d;
      }
    
    return l_d;
    }
  
  }

File Information:

file name:MultiBuffer.java
package:org.sfc.utils
qualified name:org.sfc.utils.MultiBuffer.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/sfc/utils/MultiBuffer.java
size:9.828 KB (10064 B)
uploaded: 2015-07-22 04:11:13 GMT+0000
last update: 2006-03-30 13:06:04 GMT+0000
last access: 2018-01-22 00:09:54 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 00:09:54 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo