# Quick Reference

Core Components
Devices
Filters
Algorithms
Views

## Core Components

These components form the interface between Boost.Iostreams and the standard iostreams library.

Name | Header[1] | Description
--- | --- | ---
`stream` | `stream.hpp` | Stream template which performs i/o using an instance of its first template parameter, which must model the concept Device. Derives from `std::basic_istream`, `std::basic_ostream` or `std::basic_iostream` depending on whether its first template parameter models Source, Sink or both.
`stream_buffer` | `stream_buffer.hpp` | Stream buffer template which performs i/o using an instance of its first template parameter, which must model the concept Device.
`filtering_stream` | `filtering_stream.hpp` | Stream template which performs filtered i/o using a contained `chain`. Derives from `std::basic_istream`, `std::basic_ostream` or `std::basic_iostream` depending on its mode, which is specified as its first template parameter.
`filtering_streambuf` | `filtering_streambuf.hpp` | Stream buffer template which performs filtered i/o using a contained `chain`.
`chain` | `chain.hpp` | Sequence of zero or more Filters, followed by an optional Device, accessed with a stack-like interface. Used by `filtering_stream` and `filtering_streambuf`.
`code_converter` | `code_converter.hpp` | Device adapter which takes a narrow-character Device and produces a wide-character Device by introducing a layer of code conversion.

## Devices

Device | Header[2] | Description
--- | --- | ---
`basic_array_source`, `basic_array_sink`, `basic_array` | `array.hpp` | Accesses a in-memory character sequence.
`back_insert_device` | `back_inserter.hpp` | Appends to an STL sequence.
`basic_file_source`, `basic_file_sink`, `basic_file` | `file.hpp` | Accesses the filesystem using a `std::basic_filebuf`.
`basic_null_source` | `null.hpp` | Reads characters from an empty sequence.
`basic_null_sink` | Consumes and ignores characters.
`file_descriptor_source`, `file_descriptor_sink`, `file_descriptor` | `file_descriptor.hpp` | Accesses the filesystem using an operating system file descriptor or file handle.
`mapped_file_source`, `mapped_file_sink`, `mapped_file` | `mapped_file.hpp` | Accesses a memory-mapped file.

## Filters

Category | Filter | Header[3] | Description
--- | --- | --- | ---
Compression | `basic_bzip2_compressor`, `basic_bzip2_decompressor` | `bzip2.hpp` | Perform compression and decompression using the libbzip2 data compression library ([Seward]).
`basic_gzip_compressor`, `basic_gzip_decompressor` | `gzip.hpp` | Perform compression and decompression based on the the GZIP format ([Deutsch3]).
`basic_zlib_compressor`, `basic_zlib_decompressor` | `zlib.hpp` | Perform compression and decompression using the zlib data compression library ([Gailly]).
Text | `basic_counter` | `counter.hpp` | Maintains a character and line count.
`basic_regex_filter` | `regex.hpp` | Performs text substitutions using regular expressions from the Boost Regular Expression Library.
`newline_checker` | `newline.hpp` | Verifies that a character sequence conforms to a given line-ending convention.
`newline_filter` | Converts between the line-ending conventions used by various operating systems.
Helpers | `basic_line_filter` | `line.hpp` | Filters a character sequence one line at a time.
`basic_stdio_filter` | `stdio.hpp` | Filters by reading from standard input and writing to standard output.
`aggregate_filter` | `aggregate.hpp` | Filters an entire character sequence at once.
`symmetric_filter` | `symmetric.hpp` | Filters using a model of SymmetricFilter.

## Algorithms

Algorithm | Header | Description
--- | --- | ---
`copy` | `boost/iostreams/copy.hpp` | Reads characters from a Source and writes them to a Sink until the end of stream is reached; returns the number of characters written.

## Views

Each view consists of one or more class templates together with an object generator. See Views.

Object Generator | View Template | Header[1] | Description
--- | --- | --- | ---
`combine` | `combination` | `combine.hpp` | Takes a pair of Filters or Devices and yields a filter or device which performs input using the first component and output using the second.
`compose` | `composite` | `compose.hpp` | Takes a Filter and either a second Filter or a Device and yields a Filter or Device whose output flows through the two components in order and whose input flows flows through the two components in reverse order.
`invert` | `inverse` | `invert.hpp` | Takes a Filter and yields a Filter that performs the same filtering algorithm but is an OutputFilter if the given component is an InputFilter, and an InputFilter otherwise.
`restrict` | `restriction` | `restrict.hpp` | Takes a Filter or Device together with a stream offset and an optional length and yields a Filter or Device for accessing the specifed subquence of the given component
`tee` | `tee_device` | `tee.hpp` | Takes a pair of Sinks and yields a Sink which sends all incoming data to both of the given Sinks.
`tee_filter` | Takes a Filter and a Sink and yields a Filter which sends all outgoing data to the Sink in addition to passing it downsteam.

#### Notes

[1]Pathnames should be interpreted relative to the directory `boost/iostreams`.

[2]Pathnames should be interpreted relative to the directory `boost/iostreams/device`.

[3]Pathnames should be interpreted relative to the directory `boost/iostreams/filter`.

Revised 20 May, 2004

© Copyright Jonathan Turkanis, 2004. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)