    001    package calhoun.analysis.crf.io;
    002
    003    import java.io.BufferedReader;
    004    import java.io.IOException;
    005    import java.io.Writer;
    006    import java.util.Map;
    007
    008    /** an input component that can be used with the {@link InputHandlerInterleaved}.  This is a regular
    009     * input component that also has input and output methods that take a BufferedReader to use when reading data
    010     * from the input file. */
    011    public interface InterleavedInputComponent extends InputComponentIO {
    012
    013            /** Read the contents of the sequence in from a reader.  Return false if the end of file was reached.
    014             * @param r the buffered reader from which the next sequence should be read.
    015             * @param output a map to which new components for this input sequence should be added.
    016             * @return true if a sequence was read in and the map was populated.  false if the end of the sequence was reached. */
    017            boolean read(BufferedReader r, Map<String, InputSequence<?>> output) throws IOException;
    018
    019            /** Output this sequence to the given writer.
    020             * @param w a writer to which this sequence should be written
    021             * @param data a map containing the data for the sequence to be written */
    022            void write(Writer w, Map<String, ? extends InputSequence<?>> data) throws IOException;
    023    }