blob: 0b7f0d27e9b2140c0267ff56174c74368fe82f82 [file] [log] [blame]
package org.eclipse.jdt.internal.compiler.util;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.jdt.internal.compiler.*;
public final class SimpleNameVector {
static int INITIAL_SIZE = 10;
public int size;
int maxSize;
char[][] elements;
public SimpleNameVector() {
maxSize = INITIAL_SIZE;
size = 0;
elements = new char[maxSize][];
}
public void add(char[] newElement) {
if (size == maxSize) // knows that size starts <= maxSize
System.arraycopy(elements, 0, (elements = new char[maxSize *= 2][]), 0, size);
elements[size++] = newElement;
}
public void addAll(char[][] newElements) {
if (size + newElements.length >= maxSize) {
maxSize = size + newElements.length; // assume no more elements will be added
System.arraycopy(elements, 0, (elements = new char[maxSize][]), 0, size);
}
System.arraycopy(newElements, 0, elements, size, newElements.length);
size += newElements.length;
}
public boolean contains(char[] element) {
for (int i = size; --i >= 0;)
if (CharOperation.equals(element, elements[i]))
return true;
return false;
}
public char[] elementAt(int index) {
return elements[index];
}
public char[] remove(char[] element) {
// assumes only one occurrence of the element exists
for (int i = size; --i >= 0;)
if (element == elements[i]) {
// shift the remaining elements down one spot
System.arraycopy(elements, i + 1, elements, i, --size - i);
elements[size] = null;
return element;
}
return null;
}
public void removeAll() {
for (int i = size; --i >= 0;)
elements[i] = null;
size = 0;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < size; i++) {
buffer.append(elements[i]).append("\n"); //$NON-NLS-1$
}
return buffer.toString();
}
}