You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Eung-ju Park <co...@apache.org> on 2001/12/21 02:56:27 UTC
Re: cvs commit: jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections BufferOverflowException.java BufferUnderflowException.java FixedSizeBuffer.java VariableSizeBuffer.java CircularBuffer.java AvalonBuffer.java
Buffer.java is not committed. ;-)
----- Original Message -----
From: <bl...@apache.org>
To: <ja...@apache.org>
Sent: Friday, December 21, 2001 3:28 AM
Subject: cvs commit:
jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections
BufferOverflowException.java BufferUnderflowException.java
FixedSizeBuffer.java VariableSizeBuffer.java CircularBuffer.java
AvalonBuffer.java
> bloritsch 01/12/20 10:28:33
>
> Modified: src/java/org/apache/avalon/excalibur/collections
> CircularBuffer.java
> Added: src/java/org/apache/avalon/excalibur/collections
> BufferOverflowException.java
> BufferUnderflowException.java FixedSizeBuffer.java
> VariableSizeBuffer.java
> Removed: src/java/org/apache/avalon/excalibur/collections
> AvalonBuffer.java
> Log:
> Update new buffer code with more formal interface and runtime exceptions
>
> Revision Changes Path
> 1.5 +2 -2
jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections/Ci
rcularBuffer.java
>
> Index: CircularBuffer.java
> ===================================================================
> RCS file:
/home/cvs/jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/coll
ections/CircularBuffer.java,v
> retrieving revision 1.4
> retrieving revision 1.5
> diff -u -r1.4 -r1.5
> --- CircularBuffer.java 2001/12/19 22:29:43 1.4
> +++ CircularBuffer.java 2001/12/20 18:28:33 1.5
> @@ -8,10 +8,10 @@
> package org.apache.avalon.excalibur.collections;
>
> /**
> - * @deprecated use AvalonBuffer instead.
> + * @deprecated use one of the Buffer implementations instead.
> *
> * @author Federico Barbieri <fe...@apache.org>
> - * @version CVS $Revision: 1.4 $ $Date: 2001/12/19 22:29:43 $
> + * @version CVS $Revision: 1.5 $ $Date: 2001/12/20 18:28:33 $
> * @since 4.0
> */
> public class CircularBuffer
>
>
>
> 1.1
jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections/Bu
fferOverflowException.java
>
> Index: BufferOverflowException.java
> ===================================================================
> /*
> * Copyright (C) The Apache Software Foundation. All rights reserved.
> *
> * This software is published under the terms of the Apache Software
License
> * version 1.1, a copy of which has been included with this distribution
in
> * the LICENSE.txt file.
> */
> package org.apache.avalon.excalibur.collections;
>
> import org.apache.avalon.framework.CascadingRuntimeException;
>
> /**
> * The BufferOverflowException is used when the buffer's capacity has
been
> * exceeded.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> */
> public class BufferOverflowException extends CascadingRuntimeException
> {
>
> public BufferOverflowException( String message )
> {
> super( message, null );
> }
>
> public BufferOverflowException( String message, Throwable
exception )
> {
> super( message, exception );
> }
> }
>
>
> 1.1
jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections/Bu
fferUnderflowException.java
>
> Index: BufferUnderflowException.java
> ===================================================================
> /*
> * Copyright (C) The Apache Software Foundation. All rights reserved.
> *
> * This software is published under the terms of the Apache Software
License
> * version 1.1, a copy of which has been included with this distribution
in
> * the LICENSE.txt file.
> */
> package org.apache.avalon.excalibur.collections;
>
> import org.apache.avalon.framework.CascadingRuntimeException;
>
> /**
> * The BufferOverflowException is used when the buffer is already empty
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> */
> public class BufferUnderflowException extends CascadingRuntimeException
> {
>
> public BufferUnderflowException( String message )
> {
> super( message, null );
> }
>
> public BufferUnderflowException( String message, Throwable
exception )
> {
> super( message, exception );
> }
> }
>
>
> 1.1
jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections/Fi
xedSizeBuffer.java
>
> Index: FixedSizeBuffer.java
> ===================================================================
> /*
> * Copyright (C) The Apache Software Foundation. All rights reserved.
> *
> * This software is published under the terms of the Apache Software
License
> * version 1.1, a copy of which has been included with this distribution
in
> * the LICENSE.txt file.
> */
> package org.apache.avalon.excalibur.collections;
>
> /**
> * The FixedSizeBuffer is a <strong>very</strong> efficient
implementation of
> * Buffer that does not alter the size of the buffer at runtime.
> *
> * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
> */
> public final class FixedSizeBuffer implements Buffer
> {
> private final Object[] m_elements;
> private int m_start = 0;
> private int m_end = 0;
>
> public FixedSizeBuffer( int size )
> {
> m_elements = new Object[ size + 1 ];
> }
>
> public FixedSizeBuffer()
> {
> this( 32 );
> }
>
> public final int size()
> {
> int size = 0;
>
> if ( m_end < m_start )
> {
> size = m_elements.length - m_start + m_end;
> }
> else
> {
> size = m_end - m_start;
> }
>
> return size;
> }
>
> public final boolean isEmpty()
> {
> return size() == 0;
> }
>
> public final void add( Object element )
> {
> if ( size() > m_elements.length )
> {
> throw new BufferOverflowException( "The buffer cannot hold
more than "
> + m_elements.length + "
objects." );
> }
>
> m_elements[ m_end ] = element;
>
> m_end++;
> if ( m_end >= m_elements.length )
> {
> m_end = 0;
> }
> }
>
> public final Object remove()
> {
> if ( isEmpty() )
> {
> throw new BufferUnderflowException( "The buffer is already
empty" );
> }
>
> Object element = m_elements[ m_start ];
>
> if ( null != element )
> {
> m_elements[ m_start ] = null;
>
> m_start++;
> if ( m_start >= m_elements.length )
> {
> m_start = 0;
> }
> }
>
> return element;
> }
> }
>
>
> 1.1
jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections/Va
riableSizeBuffer.java
>
> Index: VariableSizeBuffer.java
> ===================================================================
> /*
> * Copyright (C) The Apache Software Foundation. All rights reserved.
> *
> * This software is published under the terms of the Apache Software
License
> * version 1.1, a copy of which has been included with this distribution
in
> * the LICENSE.txt file.
> */
> package org.apache.avalon.excalibur.collections;
>
> /**
> * VariableSizeBuffer is a <strong>very</strong> efficient buffer
implementation.
> * According to performance testing, it exhibits a linear access time,
but it
> * also outperforms ArrayList when used for the same purpose.
> *
> * @author <a href="fede@apache.org">Federico Barbieri</a>
> * @author <a href="bloritsch@apache.org">Berin Loritsch</a>
> * @version CVS $Revision: 1.1 $ $Date: 2001/12/20 18:28:33 $
> * @since 4.0
> */
> public final class VariableSizeBuffer implements Buffer
> {
> protected Object[] m_buffer;
> protected int m_bufferSize;
> protected int m_contentSize;
> protected int m_head;
> protected int m_tail;
>
> /**
> * Initialize the VariableSizeBuffer with the specified number of
elements. The
> * integer must be a positive integer.
> */
> public VariableSizeBuffer( int size )
> {
> m_buffer = new Object[size];
> m_bufferSize = size;
> m_contentSize = 0;
> m_head = 0;
> m_tail = 0;
> }
>
> /**
> * Initialize the VariableSizeBuffer with the default number of
elements. It is
> * exactly the same as performing the following:
> *
> * <pre>
> * new VariableSizeBuffer( 32 );
> * </pre>
> */
> public VariableSizeBuffer()
> {
> this( 32 );
> }
>
> /**
> * Tests to see if the CircularBuffer is empty.
> */
> public boolean isEmpty()
> {
> return (m_contentSize == 0);
> }
>
> /**
> * Returns the number of elements stored in the buffer.
> */
> public int size()
> {
> return m_contentSize;
> }
>
> /**
> * Add an object into the buffer
> */
> public void add( final Object o )
> {
> if( m_contentSize >= m_bufferSize )
> {
> int j = 0;
> int i = m_tail;
> Object[] tmp = new Object[ m_bufferSize * 2 ];
>
> while( m_contentSize > 0 )
> {
> i++;
> i %= m_bufferSize;
> j++;
> m_contentSize--;
> tmp[ j ] = m_buffer[ i ];
> }
> m_buffer = tmp;
> m_tail = 0;
> m_head = j;
> m_contentSize = j;
> m_bufferSize *= 2;
> }
>
> m_buffer[ m_head ] = o;
> m_head++;
> m_head %= m_bufferSize;
> m_contentSize++;
> }
>
> /**
> * Removes the next object from the buffer
> */
> public Object remove()
> {
> if ( isEmpty() )
> {
> throw new BufferUnderflowException( "The buffer is already
empty" );
> }
>
> Object o = m_buffer[ m_tail ];
> m_tail++;
> m_tail %= m_bufferSize;
> m_contentSize--;
> return o;
> }
> }
>
>
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit: jakarta-avalon-excalibur/src/java/org/apache/avalon/excalibur/collections BufferOverflowException.java BufferUnderflowException.java FixedSizeBuffer.java VariableSizeBuffer.java CircularBuffer.java AvalonBuffer.java
Posted by Berin Loritsch <bl...@apache.org>.
Eung-ju Park wrote:
> Buffer.java is not committed. ;-)
Oops! I could have sworn I did!?!
Anyway, I have taken care of it this morning.
THanks alot.
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>