001    package calhoun.analysis.crf.io;
002    
003    import java.util.Collection;
004    
005    import calhoun.util.Assert;
006    
007    /** an input sequence where the elements of the sequence are objects. */
008    public class InputSequenceObject<T> implements InputSequence<T> {
009            T[] t;
010            
011            /** default constructor */
012            public InputSequenceObject() {
013            }
014            
015            /** creates an input sequence using data from this Object array 
016             * @param t a an object array containing the input sequence */
017            public InputSequenceObject(T[] t) {
018                    this.t = t;
019            }
020            
021            public T getX(int ix) {
022                    return t[ix];
023            }
024    
025            public int length() {
026                    return t.length;
027            }
028    
029            public InputSequence<?> getComponent(String name) {
030                    throw new UnsupportedOperationException();
031            }
032    
033            public Collection<String> listComponents() {
034                    throw new UnsupportedOperationException();
035            }
036    
037            public InputSequence<T> subSequence(int start, int end) {
038                    Assert.a(start >= 1);
039                    Assert.a(end <= this.length());
040                    Assert.a(start <= end);
041    
042                    int length = end - start + 1;
043                    T[] ret = (T[]) new Object[length];
044                    for(int i= 0; i<length; ++i) {
045                            ret[i] = t[i+start-1];
046                    }
047                    return new InputSequenceObject<T>(ret);
048            }
049    }