This being an incomplete enumeration of things that would be nice to
have in SDTS++.  If you would like to work on one of these, please
send e-mail to sdts_software-owner@mailrmon1.er.usgs.gov saying so to
insure that you're not duplicating someone else's efforts.


1. Better and more robust error handling

	Possibly something as simplistic as iostream's error handling
scheme.  For example, a reader could be in either a good(), bad(), or
fail() state.  Nice, but a bit parsiminous on error reporting.

	The current error handling isn't great.  No library should
ever write anything to stdout and to stderr.  Ours currently does.

        Note that an sio_Error mix-in class has been added; it needs
to be brought in to some of the classes, namely the top level classes
(i.e., sio_Reader and sio_Writer).

[This has been somewhat cleaned up in the latest version, 0.5.; but
there are still a few egregious violations of these here and there
that should be properly policed.]


2. A random access iterator

	The current sio_ForwardIterator will do the job most of the
time.  But it might be convenient to have an iterator that is capable
of dancing in O(1) time around an SDTS module without incurring the
overhead of reading the entire module.  Moreover, since it is possible
for module record numbers to be in arbitrary sequences, this random
access iterator will have to support record numbers as seen from SDTS
and not record numbers as seen from ISO 8211.


3. Use auto_ptr<sio_Buffer> to mitigate copy

	sio_Buffer is the 'gluon' that transmits data between
sio_Writer and sio_8211Field.  sio_8211Field::getField() returns a
_copy_ of an sio_Buffer that will subsequently be discarded; but
because a copy is returned, we pay an additional penalty.  It would be
better to return an auto_ptr<sio_Buffer> so that only one copy of the
buffer is active, thus saving the cost of constantly copying it.


4. Make reader easier to reassign to another module

	It's difficult to point a reader to another module.  Changes
need to be made to the API to allow a programmer to switch ifstreams
and to re-initialize corresponding iterators.


5. Finish builder layer

        The builder layer adds convenience classese that make it
easier to read and write SDTS modules.  For each SDTS module, there
exists a corresponding builder class.  However, only those builder
classes that were needed for an internal USGS project were
implemented.  If other builder classes are needed, then you'll have to
implement them.  Fortunately there are two perl scripts that will
greatly aid in creating new builder classes, builder/mkhead.pl and
builder/mkimp.pl; these scripts will create a header and
implementation file, respectively, from a corresponding *def file.
See existing *def files for an example of how to write one.

        This layer also needs documentation, though the headers should
make their use fairly straightforward.
