in uimaj-core/src/main/java/org/apache/uima/List_of_ints.java [293:456]
static List_of_ints newInstance(final int[] ia, final int start, final int end) {
return new List_of_ints() {
@Override
public int size() {
return end - start;
}
@Override
public int[] toArray() {
return Arrays.copyOfRange(ia, start, end);
}
@Override
public int[] toArrayMinCopy() {
return (start == 0 && end == size()) ? ia : toArray();
}
@Override
public boolean add(int i) {
throw new UnsupportedOperationException();
}
@Override
public boolean remove(int i) {
throw new UnsupportedOperationException();
}
@Override
public void clear() {
throw new UnsupportedOperationException();
}
@Override
public int get(int index) {
return ia[start + index];
}
@Override
public int set(int index, int element) {
int r = get(start + index);
ia[start + index] = element;
return r;
}
@Override
public void add(int index, int element) {
throw new UnsupportedOperationException();
}
@Override
public int removeAtIndex(int index) {
throw new UnsupportedOperationException();
}
@Override
public int indexOf(int e) {
for (int i = start; i < end; i++) {
if (e == ia[i]) {
return i;
}
}
return -1;
}
@Override
public int lastIndexOf(int e) {
for (int i = end - 1; i >= start; i--) {
if (e == ia[i]) {
return i;
}
}
return -1;
}
@Override
public List_of_ints subList(int fromIndex, int toIndex) {
return List_of_ints.newInstance(ia, start + fromIndex, start + toIndex);
}
@Override
public OfInt iterator() {
return new OfInt() {
int pos = 0;
@Override
public boolean hasNext() {
return pos < ia.length;
}
@Override
public Integer next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
return ia[pos++];
}
@Override
public int nextInt() {
if (!hasNext()) {
throw new NoSuchElementException();
}
return ia[pos++];
}
};
}
@Override
public IntListIterator intListIterator() {
return new IntListIterator() {
private int pos = 0;
@Override
public boolean hasNext() {
return pos >= 0 && pos < size();
}
@Override
public int nextNvc() {
return get(pos++);
}
@Override
public boolean hasPrevious() {
return pos > 0 && pos < size();
}
@Override
public int previousNvc() {
return get(--pos);
}
@Override
public void moveToStart() {
pos = 0;
}
@Override
public void moveToEnd() {
pos = size() - 1;
}
};
}
@Override
public void copyFromArray(int[] src, int srcPos, int destPos, int length) {
System.arraycopy(src, srcPos, ia, start + destPos, length);
}
@Override
public void copyToArray(int srcPos, int[] dest, int destPos, int length) {
System.arraycopy(ia, start + srcPos, dest, destPos, length);
}
@Override
public void sort() {
Arrays.sort(ia, start, end);
}
};
}