# Acknowledgments

The original idea for the library came from the example stream buffer implementations in Standard C++ IOStreams and Locales, by Angelika Langer and Klaus Kreft ([Langer]). Robert Ramey suggested extending the library to handle filtering. In addition:

- The implementation of `stream_buffer` is indebted to work of Angelika Langer and Klaus Kreft ([Langer], pp. 228-43).
- The filtering stream buffer concept was invented by James Kanze and Dietmar Kühl. See [Kanze].
- The concepts InputFilter and OutputFilter were inspired by James Kanze's extractors and inserters. In addition, the names of the components `filtering_stream` and `filtering_streambuf` are borrwed from Kanze, as are several of the Filters from the Tutorial. See [Kanze].
- Pipelines were introduce by Jan Christiaan van Winkel and John van Krieken. See [van Winkel]. Dietmar Kühl suggested adding this functionality to the Iostreams library.
- The facility for adding iterator ranges and output iterators to filter chains was inspired by work of Maxim Egorushkin. See [Egorushkin].
- The devices for accessing memory-mapped file are based on work of Craig Henderson; see ([Henderson]). Jonathan Graehl added several useful features.
- The devices for accessing file descriptors are based on work of Nicolai Josuttis ([Josuttis1] and [Josuttis2]).
- The array devices and null devices were inspired by work of Dayle Walker.
- The Filters for compression and decompression were influenced by the work of Jeff Garland ([Garland]) and Jonathan de Halleux ([de Halleux]).
- The template `basic_stdio_filter` was inspired by work of Christopher Diggins. See [Diggins].
- The treatment of 64-bit stream offsets was suggested by Gareth Sylvester-Bradley, who also supplied the implementation of the positioning functions used with the Dinkumware standard library.
- The template `restiction` was suggested by David Abrahams. See [Abrahams2].
- Maxim Egorushkin, Larry Evans, George M. Garner, Jonathan Graehl, Robert Ramey, Rob Stewart, John Torjo, Pavel Vozenilek and Carlo Woods provided extensive criticism of various versions of the library.
- Angelika Langer and James Kanze provided useful insights into the proper role of exceptions in the Iostream library.
- Robert Ramey's documentation for Boost.Serialization provided the inspiration for the Javascript Tree Control used in this documenation.
- Jeff Garland served as review manager and provided helpful criticism and guidance.
- Those who participated in the formal review or the post-review discussions, or who submitted bug reports or patches, include (in no particular order) Adam Peterson, Joaquín M López Muñoz, Neal D. Becker, Stas Garifulin, Vladimir Prus, Rob Stewart, Robert Ramey, Michel Decima, Michiel Salters, Pedro Lamarão, Dietmar Kühl, Oleg Rekutin, Reece Dunn, Stefan Slapeta, Jeff Flinn, Jeff Garland, Eugene Lazutkin, John Torjo, Brian Braatz, Keith Burton, Keith MacDonald, Phil Richards, Arjen Wagenaar, Caleb Epstein, Dylan Trotter, Ben Hutchings, Daniel James, Daniel Schlyder, Jan Christiaan van Winkel, Jonathan Graehl, Jonathan Wakely, Rene Rivera, Tony Juricic, Bronek Kozicki, George M. Garner, Jr., Thorsten Ottosen, Bertolt Mildner, Carlo Wood, Christoper Diggins, Christoph Ludwig, Daryle Walker, Dirk Griffioen, Gareth Sylvester-Bradley, Jürgen Hunold, Larry Evans, Markus Schöpflin, Martin Ecker, Martin Wille, Russel Hind, Matthew Vogt, Matthias Troyer, Peter Dimov, Bruno Martínez Aguerre, Douglas Gregor, Paul A. Bristow, David B. Held, Kevin Wheatley, Pavel Vozenilek, Emmanuel Thomé, Scott Woods, Israel Fernández Cabrera, Felix Gartsman, Pavel Chikulaev, Lisa Glendenning, Yuval Ronen and Paul Harris.

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)