com.virtuosotechnologies.lib.ring
Class ByteRing

java.lang.Object
  extended bycom.virtuosotechnologies.lib.ring.AbstractRing
      extended bycom.virtuosotechnologies.lib.ring.ByteRing

public class ByteRing
extends AbstractRing

Circular buffer of bytes. This class is not thread-safe.


Constructor Summary
ByteRing()
          Constructs an empty buffer with a capacity of 16.
ByteRing(int initialCapacity)
          Constructs an empty buffer with the specified initial capacity.
 
Method Summary
protected  Object allocateArray(int capacity)
          Override this method to allocate an array of the desired type.
protected  void clearArrayValues(Object array, int start, int end)
          Override this method to clear the specified values in the array.
protected  int getArrayLength(Object array)
          Override this method to get the length of the array.
 byte getByte(int index)
          Gets the value of a particular byte
 byte[] getRange(int start, int end)
          Gets a range of values as a new array.
 void getRange(int start, int end, byte[] destination, int pos)
          Gets a range of values and copies it into the given array.
protected  void initArrayValues(Object array, int start, int end)
          Override this method to initialize the specified values in the array.
 byte popBack()
          Pop a byte from the back.
 byte[] popBack(int size)
          Pop a byte array from the back.
 void popBack(int size, byte[] buffer, int pos)
          Pop a byte array from the back.
 byte popFront()
          Pop a byte from the front.
 byte[] popFront(int size)
          Pop a byte array from the front.
 void popFront(int size, byte[] buffer, int pos)
          Pop a byte array from the front.
 void pushBack(byte b)
          Push a byte to the back
 void pushBack(byte[] array)
          Push a byte array to the back
 void pushFront(byte b)
          Push a byte to the front
 void pushFront(byte[] array)
          Push a byte array to the front
 void setByte(int index, byte value)
          Sets the value of a particular byte
 void setRange(int start, int end, byte[] source, int pos)
          Sets a range of values from the given array.
 
Methods inherited from class com.virtuosotechnologies.lib.ring.AbstractRing
addBack, addFront, addMiddle, calculateRawIndex, clear, ensureCapacity, getRangeRaw, getRawArray, getSize, removeBack, removeFront, removeMiddle, setRangeRaw, trimToSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ByteRing

public ByteRing(int initialCapacity)
Constructs an empty buffer with the specified initial capacity.

Parameters:
initialCapacity - the initial capacity of the buffer.
Throws:
IllegalArgumentException - if the specified initial capacity is negative

ByteRing

public ByteRing()
Constructs an empty buffer with a capacity of 16.

Method Detail

allocateArray

protected Object allocateArray(int capacity)
Override this method to allocate an array of the desired type.

Specified by:
allocateArray in class AbstractRing
Parameters:
capacity - size of the array to allocate
Returns:
the allocated array

getArrayLength

protected int getArrayLength(Object array)
Override this method to get the length of the array.

Specified by:
getArrayLength in class AbstractRing
Parameters:
array - an array object
Returns:
the size of the array

clearArrayValues

protected void clearArrayValues(Object array,
                                int start,
                                int end)
Override this method to clear the specified values in the array.

Specified by:
clearArrayValues in class AbstractRing
Parameters:
array - an array object
start - the index of the first item to clear
end - one more than the index of the last item to clear

initArrayValues

protected void initArrayValues(Object array,
                               int start,
                               int end)
Override this method to initialize the specified values in the array.

Specified by:
initArrayValues in class AbstractRing
Parameters:
array - an array object
start - the index of the first item to initialize
end - one more than the index of the last item to initialize

getByte

public byte getByte(int index)
Gets the value of a particular byte

Parameters:
index - index to query
Returns:
the byte

setByte

public void setByte(int index,
                    byte value)
Sets the value of a particular byte

Parameters:
index - index to set
value - the byte

getRange

public void getRange(int start,
                     int end,
                     byte[] destination,
                     int pos)
Gets a range of values and copies it into the given array.

Parameters:
start - starting position in the buffer
end - one more than the ending position in the buffer
destination - destination array
pos - starting position in the destination array

getRange

public byte[] getRange(int start,
                       int end)
Gets a range of values as a new array.

Parameters:
start - starting position in the buffer
end - one more than the ending position in the buffer
Returns:
copy of the values

setRange

public void setRange(int start,
                     int end,
                     byte[] source,
                     int pos)
Sets a range of values from the given array.

Parameters:
start - starting position in the buffer
end - one more than the ending position in the buffer
source - source array
pos - starting position in the source array

pushFront

public void pushFront(byte b)
Push a byte to the front

Parameters:
b - the byte

pushFront

public void pushFront(byte[] array)
Push a byte array to the front

Parameters:
array - the array

pushBack

public void pushBack(byte b)
Push a byte to the back

Parameters:
b - the byte

pushBack

public void pushBack(byte[] array)
Push a byte array to the back

Parameters:
array - the array

popBack

public byte popBack()
Pop a byte from the back.

Returns:
the byte
Throws:
NoSuchElementException - ring is empty

popBack

public byte[] popBack(int size)
Pop a byte array from the back.

Parameters:
size - number of bytes to pop.
Returns:
the array
Throws:
NoSuchElementException - ring isn't large enough

popBack

public void popBack(int size,
                    byte[] buffer,
                    int pos)
Pop a byte array from the back.

Parameters:
size - number of bytes to pop.
buffer - the array to populate
pos - position in the buffer
Throws:
NoSuchElementException - ring isn't large enough

popFront

public byte popFront()
Pop a byte from the front.

Returns:
the byte
Throws:
NoSuchElementException - ring is empty

popFront

public byte[] popFront(int size)
Pop a byte array from the front.

Parameters:
size - number of bytes to pop.
Returns:
the array
Throws:
NoSuchElementException - ring isn't large enough

popFront

public void popFront(int size,
                     byte[] buffer,
                     int pos)
Pop a byte array from the front.

Parameters:
size - number of bytes to pop.
buffer - the array to populate
pos - position in the buffer
Throws:
NoSuchElementException - ring isn't large enough