org.jibx.runtime.impl
Class StringArray

java.lang.Object
  extended by org.jibx.runtime.impl.StringArray

public class StringArray
extends java.lang.Object

Growable String array with type specific access methods. This implementation is unsynchronized in order to provide the best possible performance for typical usage scenarios, so explicit synchronization must be implemented by a wrapper class or directly by the application in cases where instances are modified in a multithreaded environment.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
static int DEFAULT_SIZE
          Default initial array size.
private  java.lang.String[] m_baseArray
          The underlying array used for storing the data.
private  int m_countLimit
          Size of the current array.
private  int m_countPresent
          The number of values currently present in the array.
private  int m_maximumGrowth
          Maximum size increment for growing array.
 
Constructor Summary
StringArray()
          Default constructor.
StringArray(int size)
          Constructor with initial size specified.
StringArray(int size, int growth)
          Constructor with full specification.
StringArray(StringArray base)
          Copy (clone) constructor.
 
Method Summary
 void add(java.lang.String value)
          Add a value at the end of the array.
 void clear()
          Set the array to the empty state.
 java.lang.Object clone()
          Duplicates the object with the generic call.
private  void discardValues(int from, int to)
          Discards values for a range of indices in the array.
 void ensureCapacity(int min)
          Ensure that the array has the capacity for at least the specified number of values.
 java.lang.String get(int index)
          Get a value from the array.
private  int getAddIndex()
          Gets the array offset for appending a value to those in the array.
private  void growArray(int required)
          Increase the size of the array to at least a specified size.
 boolean isEmpty()
          Check if array is empty.
 void remove(int count)
          Remove some number of values from the end of the array.
private  void resizeCopy(java.lang.Object base, java.lang.Object grown)
          Copy data after array resize.
 int size()
          Get the number of values currently present in the array.
 java.lang.String[] toArray()
          Constructs and returns a simple array containing the same data as held in this array.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SIZE

public static final int DEFAULT_SIZE
Default initial array size.

See Also:
Constant Field Values

m_countLimit

private int m_countLimit
Size of the current array.


m_countPresent

private int m_countPresent
The number of values currently present in the array.


m_maximumGrowth

private int m_maximumGrowth
Maximum size increment for growing array.


m_baseArray

private java.lang.String[] m_baseArray
The underlying array used for storing the data.

Constructor Detail

StringArray

public StringArray(int size,
                   int growth)
Constructor with full specification.

Parameters:
size - number of String values initially allowed in array
growth - maximum size increment for growing array

StringArray

public StringArray(int size)
Constructor with initial size specified.

Parameters:
size - number of String values initially allowed in array

StringArray

public StringArray()
Default constructor.


StringArray

public StringArray(StringArray base)
Copy (clone) constructor.

Parameters:
base - instance being copied
Method Detail

resizeCopy

private void resizeCopy(java.lang.Object base,
                        java.lang.Object grown)
Copy data after array resize. This just copies the entire contents of the old array to the start of the new array. It should be overridden in cases where data needs to be rearranged in the array after a resize.

Parameters:
base - original array containing data
grown - resized array for data

discardValues

private void discardValues(int from,
                           int to)
Discards values for a range of indices in the array. Clears references to removed values.

Parameters:
from - index of first value to be discarded
to - index past last value to be discarded

growArray

private void growArray(int required)
Increase the size of the array to at least a specified size. The array will normally be at least doubled in size, but if a maximum size increment was specified in the constructor and the value is less than the current size of the array, the maximum increment will be used instead. If the requested size requires more than the default growth, the requested size overrides the normal growth and determines the size of the replacement array.

Parameters:
required - new minimum size required

ensureCapacity

public final void ensureCapacity(int min)
Ensure that the array has the capacity for at least the specified number of values.

Parameters:
min - minimum capacity to be guaranteed

add

public void add(java.lang.String value)
Add a value at the end of the array.

Parameters:
value - value to be added

remove

public void remove(int count)
Remove some number of values from the end of the array.

Parameters:
count - number of values to be removed
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to remove more than the count present

get

public java.lang.String get(int index)
Get a value from the array.

Parameters:
index - index of value to be returned
Returns:
value from stack
Throws:
java.lang.ArrayIndexOutOfBoundsException - on attempt to access outside valid range

toArray

public java.lang.String[] toArray()
Constructs and returns a simple array containing the same data as held in this array.

Returns:
array containing a copy of the data

clone

public java.lang.Object clone()
Duplicates the object with the generic call.

Overrides:
clone in class java.lang.Object
Returns:
a copy of the object

getAddIndex

private int getAddIndex()
Gets the array offset for appending a value to those in the array. If the underlying array is full, it is grown by the appropriate size increment so that the index value returned is always valid for the array in use by the time of the return.

Returns:
index position for added element

size

public int size()
Get the number of values currently present in the array.

Returns:
count of values present

isEmpty

public boolean isEmpty()
Check if array is empty.

Returns:
true if array empty, false if not

clear

public void clear()
Set the array to the empty state.



Project Web Site