@Override public int size() { checkState(); return size; }
@Override public Object[] toArray() { checkState(); return Arrays.copyOf(buf, size); }
@Override public T get(int index) { checkState(); if (index < 0 || index >= size) { throw new IndexOutOfBoundsException(); } return (T)buf[index]; }
@Override @SuppressWarnings("unchecked") public <T> T[] toArray(T[] a) { checkState(); final int sz = size, len = a.length; if (len < sz) { // Make a new array of a's runtime type, but my contents: return (T[]) Arrays.copyOf(buf, sz, a.getClass()); } System.arraycopy(buf, 0, a, 0, sz); if (len > sz) { a[sz] = null; } return a; }
public ListBuilder<T> append(Iterator<? extends T> iterator) { checkState(); while (iterator.hasNext()) { append(iterator.next()); } return this; }
public ListBuilder<T> append(T t1, T t2) { checkState(); size += 2; int sz = size; ensureCapacity(sz); Object[] data = buf; data[sz - 1] = t2; data[sz - 2] = t1; return this; }
public ListBuilder<T> append(T t1, T t2, T t3, T t4) { checkState(); size += 4; int sz = size; ensureCapacity(sz); Object[] data = buf; data[sz - 1] = t4; data[sz - 2] = t3; data[sz - 3] = t2; data[sz - 4] = t1; return this; }
public ListBuilder<T> append(T t1, T t2, T t3) { checkState(); size += 3; int sz = size; ensureCapacity(sz); Object[] data = buf; data[sz - 1] = t3; data[sz - 2] = t2; data[sz - 3] = t1; return this; }
public ListBuilder<T> append(T t1, T t2, T t3, T t4, T t5, T... ta) { checkState(); int len = ta.length, oldSz = size; size += (len + 5); ensureCapacity(size); Object[] data = buf; System.arraycopy(ta, 0, data, oldSz + 5, len); data[oldSz + 4] = t5; data[oldSz + 3] = t4; data[oldSz + 2] = t3; data[oldSz + 1] = t2; data[oldSz] = t1; return this; }
@Override public boolean add(T t) { checkState(); int sz = size++; ensureCapacity(sz + 1); buf[sz] = t; return true; }
public ListBuilder<T> append(Object[] ta) { checkState(); int len = ta.length, oldSz = size; size += len; ensureCapacity(size); Object[] data = buf; System.arraycopy(ta, 0, data, oldSz, len); return this; }
public ListBuilder<T> append(T t1, T t2, T t3) { checkState(); size += 3; int sz = size; ensureCapacity(sz); Object[] data = buf; data[sz - 1] = t3; data[sz - 2] = t2; data[sz - 3] = t1; return this; }
public ListBuilder<T> append(T t1, T t2, T t3, T t4) { checkState(); size += 4; int sz = size; ensureCapacity(sz); Object[] data = buf; data[sz - 1] = t4; data[sz - 2] = t3; data[sz - 3] = t2; data[sz - 4] = t1; return this; }
public ListBuilder<T> append(Collection<? extends T> c1, Collection<? extends T> c2) { checkState(); int l1 = c1.size(), l2 = c2.size(), oldSz = size; size += l1 + l2; int sz = size; ensureCapacity(sz); Object[] data = buf; Object[] newData = c1.toArray(); System.arraycopy(newData, 0, data, oldSz, l1); newData = c2.toArray(); System.arraycopy(newData, 0, data, oldSz += l1, l2); return this; }
@Override public boolean add(T t) { checkState(); int sz = size++; ensureCapacity(sz + 1); buf[sz] = t; return true; }
public ListBuilder<T> append(Object[] ta) { checkState(); int len = ta.length, oldSz = size; size += len; ensureCapacity(size); Object[] data = buf; System.arraycopy(ta, 0, data, oldSz, len); return this; }
public ListBuilder<T> append(Iterator<? extends T> iterator) { checkState(); while (iterator.hasNext()) { append(iterator.next()); } return this; }
public ListBuilder<T> append(Object[] ta1, Object[] ta2) { checkState(); int l1 = ta1.length, l2 = ta2.length, oldSz = size; size += l1 + l2; ensureCapacity(size); Object[] data = buf; System.arraycopy(ta1, 0, data, oldSz, l1); System.arraycopy(ta2, 0, data, oldSz + l1, l2); return this; }
@SuppressWarnings("unchecked") public ListBuilder<T> append(Iterable<? extends T> iterable) { checkState(); if (iterable instanceof Collection) { append((Collection<? extends T>) iterable); } Iterator<? extends T> e = iterable.iterator(); while (e.hasNext()) { append(e.next()); } return this; }
public C.Set<T> toSet() { checkState(); trimToSize(); Object[] data = buf; buf = null; return (C.Set<T>)ImmutableSet.of(data); }