001 // Copyright 2008 Regents of the University of California. May be used 002 // under the terms of the revised BSD license. See LICENSING for details. 003 package org.joe_e.array; 004 005 /** 006 * A builder of ConstArrays. Each type of ConstArray has a nested class that 007 * implements this interface, e.g. <code>ConstArray.Builder</code>. 008 * 009 * @author Adrian Mettler 010 * 011 * @param <E> the component type of the Array to build 012 */ 013 public interface ArrayBuilder<E> { 014 /** 015 * Appends an element to the Array 016 * @param element the element to append 017 */ 018 void append(E element); 019 020 /** 021 * Appends all elements from a Java array to the Array 022 * @param elements the element to append 023 */ 024 void append(E[] elements); 025 026 /** 027 * Appends a range of elements from a Java array to the Array 028 * @param elements the source array 029 * @param off the index of the first element to append 030 * @param len the number of elements to append 031 */ 032 void append(E[] elements, int off, int len); 033 034 /** 035 * Gets the current number of elements in the Array 036 * @return the number of elements that have been appended 037 */ 038 int length(); 039 040 /** 041 * Create a snapshot of the current content. 042 * @return a <code>ConstArray<E></code> containing the elements written 043 * so far 044 */ 045 ConstArray<E> snapshot(); 046 }