com.virtuosotechnologies.lib.ring
Class CharRing

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

public class CharRing
extends AbstractRing

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


Constructor Summary
CharRing()
          Constructs an empty buffer with a capacity of 16.
CharRing(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.
 char getChar(int index)
          Gets the value of a particular char
 String getRange(int start, int end)
          Gets a range of values as a String.
 void getRange(int start, int end, char[] destination, int pos)
          Gets a range of values and copies it into the given array.
 void getRange(int start, int end, StringBuffer buffer)
          Adds a range of values to a StringBuffer.
protected  void initArrayValues(Object array, int start, int end)
          Override this method to initialize the specified values in the array.
 char popBack()
          Pop a char from the back.
 String popBack(int size)
          Pop a String from the back.
 void popBack(int size, StringBuffer buffer)
          Pop characters from the back and add to a StringBuffer
 char popFront()
          Pop a char from the front.
 String popFront(int size)
          Pop a String from the front.
 void popFront(int size, StringBuffer buffer)
          Pop characters from the front and add to a StringBuffer
 void pushBack(char ch)
          Push a char to the back
 void pushBack(String str)
          Push a String to the back
 void pushFront(char ch)
          Push a char to the front
 void pushFront(String str)
          Push a String to the front
 void setChar(int index, char value)
          Sets the value of a particular char
 void setRange(int start, int end, char[] source, int pos)
          Sets a range of values from the given array.
 void setRange(int start, String source)
          Sets a range of values from the given String.
 
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

CharRing

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

CharRing

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

getChar

public char getChar(int index)
Gets the value of a particular char

Parameters:
index - index to query
Returns:
the char

setChar

public void setChar(int index,
                    char value)
Sets the value of a particular char

Parameters:
index - index to set
value - the char

getRange

public void getRange(int start,
                     int end,
                     char[] 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 String getRange(int start,
                       int end)
Gets a range of values as a String.

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

getRange

public void getRange(int start,
                     int end,
                     StringBuffer buffer)
Adds a range of values to a StringBuffer.

Parameters:
start - starting position in the buffer
end - one more than the ending position in the buffer
buffer - StringBuffer to add the values to

setRange

public void setRange(int start,
                     int end,
                     char[] 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

setRange

public void setRange(int start,
                     String source)
Sets a range of values from the given String.

Parameters:
start - starting position in the buffer
source - source string

pushFront

public void pushFront(char ch)
Push a char to the front

Parameters:
ch - the char

pushFront

public void pushFront(String str)
Push a String to the front

Parameters:
str - the String

pushBack

public void pushBack(char ch)
Push a char to the back

Parameters:
ch - the char

pushBack

public void pushBack(String str)
Push a String to the back

Parameters:
str - the String

popBack

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

Returns:
the char
Throws:
NoSuchElementException - ring is empty

popBack

public String popBack(int size)
Pop a String from the back.

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

popBack

public void popBack(int size,
                    StringBuffer buffer)
Pop characters from the back and add to a StringBuffer

Parameters:
size - number of characters to pop.
buffer - the StringBuffer
Throws:
NoSuchElementException - ring isn't large enough

popFront

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

Returns:
the char
Throws:
NoSuchElementException - ring is empty

popFront

public String popFront(int size)
Pop a String from the front.

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

popFront

public void popFront(int size,
                     StringBuffer buffer)
Pop characters from the front and add to a StringBuffer

Parameters:
size - number of characters to pop.
buffer - the StringBuffer
Throws:
NoSuchElementException - ring isn't large enough