We have written a few modules for reading/writing objects to/from
strings and files in a portable and flexible manner, but most importantly
(for us, anyway), in a manner that is compatible with Java primitives,
and in a similar style to the Java classes, allowing the design of our
Java/Perl code to remain similar.



	DataEncoding
	DataInputStream
	DataOutputStream

		Classes for reading/writing primitives in a portable fashion.
		These classes implement DataInput & DataOutput interfaces.
		They read and write to InputStream and OutputStream


	InputStream & OutputStream are imaginary classes
	The following classes derive from InputStream and OutputStream:

		FileInputStream
		FileOutputStream

		StringInputStream
		StringOutputStream


	Streamable

		When this class is inherited from, the derived class should
		defined two methods:

			readFromDataStream
			writeToDataStream

		Classes defining these can then save and restore themselves
		from DataInput/DataOutput streams, and use other methods defined
		in Streamable, such as save, restore, saveToFile, readFromFile etc.



We will be making other modules available at a later data, such as
MessageDigestOutputStream (to go with the MD5 and SHA cryptographic
hash functions), and perhaps SocketInputStream and SocketOutputStream.
The beauty of these extra "Stream" modules deriving from InputStream and
OutputStream is that all objects deriving from Streamable will automatically
be able to save/restore themselves to/from the new stream module.