com.virtuosotechnologies.lib.ring
Class ObjectRing

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

public class ObjectRing
extends AbstractRing

Circular buffer of Object references. This class is not thread-safe.


Constructor Summary
ObjectRing()
          Constructs an empty buffer with a capacity of 16.
ObjectRing(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.
 Object getObject(int index)
          Gets the value of a particular Object
 Object[] getRange(int start, int end)
          Gets a range of values as a new array.
 void getRange(int start, int end, Object[] 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.
 Object popBack()
          Pop an Object from the back.
 Object[] popBack(int size)
          Pop an Object array from the back.
 void popBack(int size, Object[] buffer, int pos)
          Pop an Object array from the back.
 Object popFront()
          Pop an Object from the front.
 Object[] popFront(int size)
          Pop an Object array from the front.
 void popFront(int size, Object[] buffer, int pos)
          Pop an Object array from the front.
 void pushBack(Object v)
          Push an Object to the back
 void pushBack(Object[] array)
          Push an Object array to the back
 void pushFront(Object v)
          Push an Object to the front
 void pushFront(Object[] array)
          Push an Object array to the front
 void setObject(int index, Object value)
          Sets the value of a particular Object
 void setRange(int start, int end, Object[] 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

ObjectRing

public ObjectRing(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

ObjectRing

public ObjectRing()
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

getObject

public Object getObject(int index)
Gets the value of a particular Object

Parameters:
index - index to query
Returns:
the Object

setObject

public void setObject(int index,
                      Object value)
Sets the value of a particular Object

Parameters:
index - index to set
value - the Object

getRange

public void getRange(int start,
                     int end,
                     Object[] 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 Object[] 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,
                     Object[] 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(Object v)
Push an Object to the front

Parameters:
v - the Object

pushFront

public void pushFront(Object[] array)
Push an Object array to the front

Parameters:
array - the array

pushBack

public void pushBack(Object v)
Push an Object to the back

Parameters:
v - the Object

pushBack

public void pushBack(Object[] array)
Push an Object array to the back

Parameters:
array - the array

popBack

public Object popBack()
Pop an Object from the back.

Returns:
the Object
Throws:
NoSuchElementException - ring is empty

popBack

public Object[] popBack(int size)
Pop an Object array from the back.

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

popBack

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

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

popFront

public Object popFront()
Pop an Object from the front.

Returns:
the Object
Throws:
NoSuchElementException - ring is empty

popFront

public Object[] popFront(int size)
Pop an Object array from the front.

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

popFront

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

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