package org.eclipse.jdt.internal.core.index.impl; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import org.eclipse.jdt.core.*; | |
public final class ObjectVector { | |
static int INITIAL_SIZE= 10; | |
public int size; | |
int maxSize; | |
Object[] elements; | |
public ObjectVector() { | |
maxSize= INITIAL_SIZE; | |
size= 0; | |
elements= new Object[maxSize]; | |
} | |
public void add(Object newElement) { | |
if (size == maxSize) // knows that size starts <= maxSize | |
System.arraycopy(elements, 0, (elements= new Object[maxSize *= 2]), 0, size); | |
elements[size++]= newElement; | |
} | |
public void addAll(Object[] newElements) { | |
if (size + newElements.length >= maxSize) { | |
maxSize= size + newElements.length; // assume no more elements will be added | |
System.arraycopy(elements, 0, (elements= new Object[maxSize]), 0, size); | |
} | |
System.arraycopy(newElements, 0, elements, size, newElements.length); | |
size += newElements.length; | |
} | |
public boolean contains(Object element) { | |
for (int i= size; --i >= 0;) | |
if (element == elements[i]) | |
return true; | |
return false; | |
} | |
public Object elementAt(int index) { | |
return elements[index]; | |
} | |
public Object find(Object element) { | |
for (int i= size; --i >= 0;) | |
if (element == elements[i]) | |
return elements[i]; | |
return null; | |
} | |
public Object remove(Object 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() { | |
String s= ""/*nonNLS*/; | |
for (int i= 0; i < size; i++) | |
s += elements[i].toString() + "\n"/*nonNLS*/; | |
return s; | |
} | |
} |