jmud-0.11/
jmud-0.11/bin/
jmud-0.11/doc/
jmud-0.11/rec/
jmud-0.11/rec/mun/
jmud-0.11/rec/mun/grecia/
jmud-0.11/rec/mun/gunnar/
jmud-0.11/rec/qua/
jmud-0.11/src/bool/
jmud-0.11/src/clone/
jmud-0.11/src/integer/
jmud-0.11/src/misc/
jmud-0.11/src/string/
jmud-0.11/src/util/bit/
jmud-0.11/src/util/color/
jmud-0.11/src/util/file/
jmud-0.11/src/util/jgp/adaptor/
jmud-0.11/src/util/jgp/algorithm/
jmud-0.11/src/util/jgp/container/
jmud-0.11/src/util/jgp/functor/
jmud-0.11/src/util/jgp/interfaces/
jmud-0.11/src/util/jgp/predicate/
jmud-0.11/src/util/log/
jmud-0.11/src/util/state/
jmud-0.11/trash/
import java.util.StringTokenizer;
import java.util.Enumeration;

import util.list.Enumerable;
import util.list.Vector;
import misc.Separators;

class TextBuffer implements Enumerable {

    private Vector buf  = new Vector();

    void insertAtBegin(String str) {
	if (buf.isEmpty())
	    buf.insert(str);
	else
	    buf.insertAt(0, str);
    }

    void insertAtEnd(String str) {
	buf.insert(str);
    }

    void insertAt(int ind, String str) throws ArrayIndexOutOfBoundsException {
	buf.insertAt(ind, str);
    }

    // null if empty
    String removeFromBegin() {
	return buf.isEmpty() ? null : (String) buf.removeFrom(0);
    }

    // null if empty
    String removeFromEnd() {
	return buf.isEmpty() ? null : (String) buf.remove();
    }

    String removeFrom(int ind) throws ArrayIndexOutOfBoundsException {
	return (String) buf.removeFrom(ind);
    }

    void clear() {
	buf.removeAll();
    }

    public Enumeration elements() {
	return buf.elements();
    }

    int getSize() {
	return buf.getSize();
    }

    public String toString() {
	String txt = "";
	for (Enumeration enum = buf.elements(); enum.hasMoreElements(); ) {
	    String str = (String) enum.nextElement();
	    txt += ((txt.length() == 0) ? str : (Separators.NL + str));
	}
	return txt;
    }

    void buildFrom(String txt) {
	StringTokenizer toker = new StringTokenizer(txt, Separators.NL);
	while (toker.hasMoreElements())
	    {
		String line = (String) toker.nextToken();
		insertAtEnd(line);
	    }
    }
}