Methods Summary |
---|
public void | RemoveAllNoClear()Set the length to zero, but don't clear the array.
if (null == m_map)
return;
m_firstFree = 0;
|
public void | addElement(int value)Append a Node onto the vector.
if ((m_firstFree + 1) >= m_mapSize)
{
if (null == m_map)
{
m_map = new int[m_blocksize];
m_mapSize = m_blocksize;
}
else
{
m_mapSize += m_blocksize;
int newMap[] = new int[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);
m_map = newMap;
}
}
m_map[m_firstFree] = value;
m_firstFree++;
|
public void | appendNodes(com.sun.org.apache.xml.internal.utils.NodeVector nodes)Append the nodes to the list.
int nNodes = nodes.size();
if (null == m_map)
{
m_mapSize = nNodes + m_blocksize;
m_map = new int[m_mapSize];
}
else if ((m_firstFree + nNodes) >= m_mapSize)
{
m_mapSize += (nNodes + m_blocksize);
int newMap[] = new int[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + nNodes);
m_map = newMap;
}
System.arraycopy(nodes.m_map, 0, m_map, m_firstFree, nNodes);
m_firstFree += nNodes;
|
public java.lang.Object | clone()Get a cloned LocPathIterator.
NodeVector clone = (NodeVector) super.clone();
if ((null != this.m_map) && (this.m_map == clone.m_map))
{
clone.m_map = new int[this.m_map.length];
System.arraycopy(this.m_map, 0, clone.m_map, 0, this.m_map.length);
}
return clone;
|
public boolean | contains(int s)Tell if the table contains the given node.
if (null == m_map)
return false;
for (int i = 0; i < m_firstFree; i++)
{
int node = m_map[i];
if (node == s)
return true;
}
return false;
|
public int | elementAt(int i)Get the nth element.
if (null == m_map)
return DTM.NULL;
return m_map[i];
|
public int | indexOf(int elem, int index)Searches for the first occurence of the given argument,
beginning the search at index, and testing for equality
using the equals method.
if (null == m_map)
return -1;
for (int i = index; i < m_firstFree; i++)
{
int node = m_map[i];
if (node == elem)
return i;
}
return -1;
|
public int | indexOf(int elem)Searches for the first occurence of the given argument,
beginning the search at index, and testing for equality
using the equals method.
if (null == m_map)
return -1;
for (int i = 0; i < m_firstFree; i++)
{
int node = m_map[i];
if (node == elem)
return i;
}
return -1;
|
public void | insertElementAt(int value, int at)Inserts the specified node in this vector at the specified index.
Each component in this vector with an index greater or equal to
the specified index is shifted upward to have an index one greater
than the value it had previously.
if (null == m_map)
{
m_map = new int[m_blocksize];
m_mapSize = m_blocksize;
}
else if ((m_firstFree + 1) >= m_mapSize)
{
m_mapSize += m_blocksize;
int newMap[] = new int[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);
m_map = newMap;
}
if (at <= (m_firstFree - 1))
{
System.arraycopy(m_map, at, m_map, at + 1, m_firstFree - at);
}
m_map[at] = value;
m_firstFree++;
|
public void | insertInOrder(int value)Insert a node in order in the list.
for (int i = 0; i < m_firstFree; i++)
{
if (value < m_map[i])
{
insertElementAt(value, i);
return;
}
}
addElement(value);
|
public final int | peepOrNull()Return the node at the top of the stack without popping the stack.
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
return ((null != m_map) && (m_firstFree > 0))
? m_map[m_firstFree - 1] : DTM.NULL;
|
public final int | peepTail()Return the node at the tail of the vector without popping
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
return m_map[m_firstFree - 1];
|
public final int | peepTailSub1()Return the node one position from the tail without popping.
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
return m_map[m_firstFree - 2];
|
public final int | pop()Pop a node from the tail of the vector and return the result.
m_firstFree--;
int n = m_map[m_firstFree];
m_map[m_firstFree] = DTM.NULL;
return n;
|
public final int | popAndTop()Pop a node from the tail of the vector and return the
top of the stack after the pop.
m_firstFree--;
m_map[m_firstFree] = DTM.NULL;
return (m_firstFree == 0) ? DTM.NULL : m_map[m_firstFree - 1];
|
public final void | popPair()Pop a pair of nodes from the tail of the stack.
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
m_firstFree -= 2;
m_map[m_firstFree] = DTM.NULL;
m_map[m_firstFree + 1] = DTM.NULL;
|
public final void | popQuick()Pop a node from the tail of the vector.
m_firstFree--;
m_map[m_firstFree] = DTM.NULL;
|
public final void | push(int value)Append a Node onto the vector.
int ff = m_firstFree;
if ((ff + 1) >= m_mapSize)
{
if (null == m_map)
{
m_map = new int[m_blocksize];
m_mapSize = m_blocksize;
}
else
{
m_mapSize += m_blocksize;
int newMap[] = new int[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, ff + 1);
m_map = newMap;
}
}
m_map[ff] = value;
ff++;
m_firstFree = ff;
|
public final void | pushPair(int v1, int v2)Push a pair of nodes into the stack.
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
if (null == m_map)
{
m_map = new int[m_blocksize];
m_mapSize = m_blocksize;
}
else
{
if ((m_firstFree + 2) >= m_mapSize)
{
m_mapSize += m_blocksize;
int newMap[] = new int[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree);
m_map = newMap;
}
}
m_map[m_firstFree] = v1;
m_map[m_firstFree + 1] = v2;
m_firstFree += 2;
|
public void | removeAllElements()Inserts the specified node in this vector at the specified index.
Each component in this vector with an index greater or equal to
the specified index is shifted upward to have an index one greater
than the value it had previously.
if (null == m_map)
return;
for (int i = 0; i < m_firstFree; i++)
{
m_map[i] = DTM.NULL;
}
m_firstFree = 0;
|
public boolean | removeElement(int s)Removes the first occurrence of the argument from this vector.
If the object is found in this vector, each component in the vector
with an index greater or equal to the object's index is shifted
downward to have an index one smaller than the value it had
previously.
if (null == m_map)
return false;
for (int i = 0; i < m_firstFree; i++)
{
int node = m_map[i];
if (node == s)
{
if (i > m_firstFree)
System.arraycopy(m_map, i + 1, m_map, i - 1, m_firstFree - i);
else
m_map[i] = DTM.NULL;
m_firstFree--;
return true;
}
}
return false;
|
public void | removeElementAt(int i)Deletes the component at the specified index. Each component in
this vector with an index greater or equal to the specified
index is shifted downward to have an index one smaller than
the value it had previously.
if (null == m_map)
return;
if (i > m_firstFree)
System.arraycopy(m_map, i + 1, m_map, i - 1, m_firstFree - i);
else
m_map[i] = DTM.NULL;
|
public void | setElementAt(int node, int index)Sets the component at the specified index of this vector to be the
specified object. The previous component at that position is discarded.
The index must be a value greater than or equal to 0 and less
than the current size of the vector.
if (null == m_map)
{
m_map = new int[m_blocksize];
m_mapSize = m_blocksize;
}
if(index == -1)
addElement(node);
m_map[index] = node;
|
public final void | setTail(int n)Set the tail of the stack to the given node.
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
m_map[m_firstFree - 1] = n;
|
public final void | setTailSub1(int n)Set the given node one position from the tail.
Special purpose method for TransformerImpl, pushElemTemplateElement.
Performance critical.
m_map[m_firstFree - 2] = n;
|
public int | size()Get the length of the list.
return m_firstFree;
|
public void | sort(int[] a, int lo0, int hi0)Sort an array using a quicksort algorithm.
int lo = lo0;
int hi = hi0;
// pause(lo, hi);
if (lo >= hi)
{
return;
}
else if (lo == hi - 1)
{
/*
* sort a two element list by swapping if necessary
*/
if (a[lo] > a[hi])
{
int T = a[lo];
a[lo] = a[hi];
a[hi] = T;
}
return;
}
/*
* Pick a pivot and move it out of the way
*/
int pivot = a[(lo + hi) / 2];
a[(lo + hi) / 2] = a[hi];
a[hi] = pivot;
while (lo < hi)
{
/*
* Search forward from a[lo] until an element is found that
* is greater than the pivot or lo >= hi
*/
while (a[lo] <= pivot && lo < hi)
{
lo++;
}
/*
* Search backward from a[hi] until element is found that
* is less than the pivot, or lo >= hi
*/
while (pivot <= a[hi] && lo < hi)
{
hi--;
}
/*
* Swap elements a[lo] and a[hi]
*/
if (lo < hi)
{
int T = a[lo];
a[lo] = a[hi];
a[hi] = T;
// pause();
}
// if (stopRequested) {
// return;
// }
}
/*
* Put the median in the "center" of the list
*/
a[hi0] = a[hi];
a[hi] = pivot;
/*
* Recursive calls, elements a[lo0] to a[lo-1] are less than or
* equal to pivot, elements a[hi+1] to a[hi0] are greater than
* pivot.
*/
sort(a, lo0, lo - 1);
sort(a, hi + 1, hi0);
|
public void | sort()Sort an array using a quicksort algorithm.
sort(m_map, 0, m_firstFree - 1);
|