Standard C++ streams can cause problems on several platforms: they work quite
well in most cases, but in the multi-threaded case, for example, they have many
-problems. Some Borland compilers refuse to work at all with them and using
-iostreams on Linux makes writing programs that are binary compatible across
-different Linux distributions, impossible.
+problems. Some Borland compilers refuse to work at all with them.
+@todo is this still true?
-Therefore, wxStreams have been added to wxWidgets so that applications can
+Besides, using @c std::iostream on Linux makes impossible to write programs that are
+binary compatible across different Linux distributions.
+
+Therefore, wxStreams have been added to wxWidgets so that an applications can
reliably compile and run on all supported platforms without dependence on a
particular release of libg++.
-wxStreams is divided in two main parts:
+wxStream classes are divided in two main groups:
@li The core: wxStreamBase, wxStreamBuffer, wxInputStream, wxOutputStream,
- wxFilterIn/OutputStream
-@li The "IO" classes: wxSocketIn/OutputStream, wxDataIn/OutputStream,
- wxFileIn/OutputStream, ...
+ wxFilterInputStream, wxFilterOutputStream
+@li The "IO" classes: wxSocketInputStream, wxSocketOutputStream,
+ wxFileInputStream, wxFileOutputStream, ...
wxStreamBase is the base definition of a stream. It defines, for example, the
-API of OnSysRead, OnSysWrite, OnSysSeek and OnSysTell. These functions are
-really implemented by the "IO" classes. wxInputStream and wxOutputStream
-inherit from it.
+API of OnSysRead(), OnSysWrite(), OnSysSeek() and OnSysTell(). These functions are
+really implemented by the "IO" classes.
+wxInputStream and wxOutputStream classes inherit from wxStreamBase and provide
+specialized methods for input and output.
wxStreamBuffer is a cache manager for wxStreamBase: it manages a stream buffer
-linked to a stream. One stream can have multiple stream buffers but one stream
-have always one autoinitialized stream buffer.
+linked to a stream. One stream can have multiple stream buffers but one stream
+has always one autoinitialized stream buffer.
-wxInputStream is the base class for read-only streams. It implements Read,
-SeekI (I for Input), and all read or IO generic related functions.
-wxOutputStream does the same thing but it is for write-only streams.
+wxInputStream is the base class for read-only streams. It implements Read(),
+SeekI() (I for Input), and all read or IO generic related functions.
+wxOutputStream does the same thing for write-only streams.
-wxFilterIn/OutputStream is the base class definition for stream filtering.
+wxFilterInputStream and wxFileterOutputStream are the base class definitions for
+stream filtering.
Stream filtering means a stream which does no syscall but filters data which
-are passed to it and then pass them to another stream. For example,
-wxZLibInputStream is an inline stream decompressor.
+are passed to it and then pass them to another stream.
+For example, wxZLibInputStream is an inline stream decompressor.
The "IO" classes implements the specific parts of the stream. This could be
-nothing in the case of wxMemoryIn/OutputStream which bases itself on
-wxStreamBuffer. This could also be a simple link to the a true syscall (for
-example read(...), write(...)).
+nothing in the case of wxMemoryInputStream and wxMemoryOutputStream which base
+themselves on wxStreamBuffer.
+This could also be a simple link to the true syscall (for example read(...), write(...)).
@section overview_stream_example Example