static List_of_ints newInstance()

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);
      }
    };
  }