Package org.jibx.runtime
Class IntStack
java.lang.Object
org.jibx.runtime.IntStack
Growable
int
stack 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. See the base
classes for other details of the implementation.- Version:
- 1.0
- Author:
- Dennis M. Sosnoski
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Default initial array size.protected int[]
The underlying array used for storing the data.protected int
Size of the current array.protected int
The number of values currently present in the stack.protected int
Maximum size increment for growing array. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Set the stack to the empty state.clone()
Duplicates the object with the generic call.final void
ensureCapacity
(int min) Ensure that the array has the capacity for at least the specified number of values.private int
Gets the array offset for appending a value to those in the stack.private void
growArray
(int required) Increase the size of the array to at least a specified size.boolean
isEmpty()
Check if stack is empty.int
peek()
Copy top value from the stack.int
peek
(int depth) Copy a value from the stack.int
pop()
Pop a value from the stack.int
pop
(int count) Pop multiple values from the stack.void
push
(int value) Push a value on the stack.private void
resizeCopy
(Object base, Object grown) Copy data after array resize.int
size()
Get the number of values currently present in the stack.int[]
toArray()
Constructs and returns a simple array containing the same data as held in this stack.
-
Field Details
-
DEFAULT_SIZE
public static final int DEFAULT_SIZEDefault initial array size.- See Also:
-
m_countLimit
protected int m_countLimitSize of the current array. -
m_countPresent
protected int m_countPresentThe number of values currently present in the stack. -
m_maximumGrowth
protected int m_maximumGrowthMaximum size increment for growing array. -
m_baseArray
protected int[] m_baseArrayThe underlying array used for storing the data.
-
-
Constructor Details
-
IntStack
public IntStack(int size, int growth) Constructor with full specification.- Parameters:
size
- number ofint
values initially allowed in stackgrowth
- maximum size increment for growing stack
-
IntStack
public IntStack(int size) Constructor with initial size specified.- Parameters:
size
- number ofint
values initially allowed in stack
-
IntStack
public IntStack()Default constructor. -
IntStack
Copy (clone) constructor.- Parameters:
base
- instance being copied
-
IntStack
public IntStack(int[] ints) Constructor from array of ints.- Parameters:
ints
- array of ints for initial contents
-
-
Method Details
-
resizeCopy
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 datagrown
- resized array for data
-
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
-
push
public void push(int value) Push a value on the stack.- Parameters:
value
- value to be added
-
pop
public int pop()Pop a value from the stack.- Returns:
- value from top of stack
- Throws:
ArrayIndexOutOfBoundsException
- on attempt to pop empty stack
-
pop
public int pop(int count) Pop multiple values from the stack. The last value popped is the one returned.- Parameters:
count
- number of values to pop from stack (must be strictly positive)- Returns:
- value from top of stack
- Throws:
ArrayIndexOutOfBoundsException
- on attempt to pop past end of stack
-
peek
public int peek(int depth) Copy a value from the stack. This returns a value from within the stack without modifying the stack.- Parameters:
depth
- depth of value to be returned- Returns:
- value from stack
- Throws:
ArrayIndexOutOfBoundsException
- on attempt to peek past end of stack
-
peek
public int peek()Copy top value from the stack. This returns the top value without removing it from the stack.- Returns:
- value at top of stack
- Throws:
ArrayIndexOutOfBoundsException
- on attempt to peek empty stack
-
toArray
public int[] toArray()Constructs and returns a simple array containing the same data as held in this stack. Note that the items will be in reverse pop order, with the last item to be popped from the stack as the first item in the array.- Returns:
- array containing a copy of the data
-
clone
Duplicates the object with the generic call. -
getAddIndex
private int getAddIndex()Gets the array offset for appending a value to those in the stack. 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 stack.- Returns:
- count of values present
-
isEmpty
public boolean isEmpty()Check if stack is empty.- Returns:
true
if stack empty,false
if not
-
clear
public void clear()Set the stack to the empty state.
-