/** The Cmd classes implement (or will soon enough) a simple Vector
    driven parser for command line applications. 

by Ben Allan, Sandia National Laboratories, May 1999.
This code is based on the ASCEND IV command-line interpreter
by Tom Epperly. It should be released to the public domain
(or preferably the GNU License domain) as soon as possible.

CmdContext is an abstract class for application specific
data that will be defined in more detail by the application
programmer.

CmdAction is an interface class used in defining individual
command objects. An interpreter is a collection of such
objects sharing a common assumption about the subclass of
CmdContext they are called in.

CmdParse defines the interpreter which provides argument
marshaling and checking services, supports command
abbreviations, and provides help functionality.

The overall scheme is that the application defines a bunch
of CmdAction objects and hands them to the interpreter.

This is not a highly intelligent scheme. It does keep a
"hand-coded" interactive command-line manageable as each
major command gets a separate class and implementation,
and the control loop logic is abstracted.

This scheme is ported from java, and C++ may allow us
a simpler way to do command completion than java when
we get a round tuit.

Finally thanks to Tom Epperly a round tuit was captured
in summer 2004 and enslaved to provide readline
completion the the ccaffeine application.
 */
