package ch.wlkl.shell;

public interface OpenClose<T> {
	/**
	 * redefine the receiver by args.
	 * After reset the receiver should be initialised to args as after new...(args).
	 * If the receiver is open, reset should close it before reinitialising.
	 * @param args the specification for the next open
	 */
	public void reset(Object... args);
	
	/**
	 * open the receiver for read or write.
	 * If already open, close it first.
	 * @param opt the first character means the following:
	 * <br><ul>
	 * <li> "r" open for read
	 * <li> "w" open for write, erase previous content
	 * <li> "a" open for write, append to previous content
	 * </ul>an implementation may only support a part of these possiblities or add further ones.
	 */
	public void open(String opt);

	/**
	 * close the receiver.
	 * if not open do nothing.
	 */
	public void close();
}

