|
Boost : |
From: Jonathan Turkanis (technews_at_[hidden])
Date: 2003-11-28 14:35:26
The new version of my iostreams library can be found at
http://groups.yahoo.com/group/boost/files/iostreams_lib.zip.
The library serves two purposes:
- To allow the easy creation of standard C++ stream and stream buffer
classes for new data sources and sinks.
- To provide a convenient interface for defining i/o filters, linking
them together, and attaching them to standard streams and stream buffers.
(See usage examples below.)
As examples of real-world applications, I have included filters based on
Boost.Regex and Jean-loup Gailly's and Mark Adler's zlib compression
library.
The library supports streams for input only, output only and
random-access, as well as double-streams with separate input and output
sequences as in TCP.
It also comes with a collection of adaptors and object generators to
facilitate interaction with the STL.
The library has complete documentation, including a tutorial and
rationale, as well as example programs and a test program. It has been
tested on 12 compiler/standard library combinations on Windows and
Linux. It now works on VC6, with some caveats.
The library shares the namespace boost::io with the i/o state-savers
library and with some functions from Boost.Format.
-----------
Usage examples:
/* Write compressed data to standard output */
filtered_ostream out;
out.push(zlib_compressor());
out.push(cout);
/* Read from standard input with 'top' replaced by 'bottom' */
filtered_istream in;
in.push(regex_input_filter("\\<top\\>", "bottom"));
in.push(cin);
/* Read from a vector */
vector<char> v;
filtered_istream in(make_source(v.begin(), v.end()));
-----------
I look forward to suggestions and criticism.
Regards,
Jonathan Turkanis
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk