blob: 5eda3b98c7ebea3daa1734d3eb9e3f35d507db49 [file] [log] [blame]
<!--
Copyright 2005 Jonathan Turkanis
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at <A HREF="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>)
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!-- ------------------ Links to Stylesheets and Scripts ------------ -->
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<link rel="stylesheet" type="text/css" href="tree/tree.css">
<script language="JavaScript" src="tree/tree.js"></script>
<style> CODE { font-size:80% } </style>
<!-- ------------------ Create and Populate Tree Control ------------- -->
<script language="JavaScript">
<!--
var tree = new tree_control("content");
tree.add("Introduction", "home.html").parent()
tree.add("Tutorial", "tutorial/tutorial.html")
.add("Writing Devices")
.add("Overview", "tutorial/writing_devices.html").parent()
.add("<CODE>container_source</CODE>", "tutorial/container_source.html").parent()
.add("<CODE>container_sink</CODE>", "tutorial/container_sink.html").parent()
.add("<CODE>container_device</CODE>", "tutorial/container_device.html").parent().parent()
.add("Writing Filters")
.add("Overview", "tutorial/writing_filters.html", true)
.add("Input and Output", "tutorial/writing_filters.html#input_filters_and_output_filters").parent()
.add("Filter Helpers", "tutorial/writing_filters.html#filter_helpers").parent()
.add("Selecting A Filter", "tutorial/writing_filters.html#selecting_a_filter").parent().parent()
.add("Filter Usage", "tutorial/filter_usage.html", true).parent()
.add("Shell Comments", "tutorial/shell_comments_filters.html", true)
.add("<CODE>stdio_filter</CODE>", "tutorial/shell_comments_filters.html#shell_comments_stdio_filter").parent()
.add("<CODE>input_filter</CODE>", "tutorial/shell_comments_filters.html#shell_comments_input_filter").parent()
.add("<CODE>output_filter</CODE>", "tutorial/shell_comments_filters.html#shell_comments_output_filter").parent().parent()
.add("Line-Wrapping", "tutorial/line_wrapping_filters.html", true)
.add("<CODE>stdio_filter</CODE>", "tutorial/line_wrapping_filters.html#line_wrapping_stdio_filter").parent()
.add("<CODE>input_filter</CODE>", "tutorial/line_wrapping_filters.html#line_wrapping_input_filter").parent()
.add("<CODE>output_filter</CODE>", "tutorial/line_wrapping_filters.html#line_wrapping_output_filter").parent().parent()
.add("Tab-Expanding", "tutorial/tab_expanding_filters.html", true)
.add("<CODE>stdio_filter</CODE>", "tutorial/tab_expanding_filters.html#tab_expanding_stdio_filter").parent()
.add("<CODE>input_filter</CODE>", "tutorial/tab_expanding_filters.html#tab_expanding_input_filter").parent()
.add("<CODE>output_filter</CODE>", "tutorial/tab_expanding_filters.html#tab_expanding_output_filter").parent().parent()
.add("Dictionary", "tutorial/dictionary_filters.html", true)
.add("<CODE>stdio_filter</CODE>", "tutorial/dictionary_filters.html#dictionary_stdio_filter").parent()
.add("<CODE>input_filter</CODE>", "tutorial/dictionary_filters.html#dictionary_input_filter").parent()
.add("<CODE>output_filter</CODE>", "tutorial/dictionary_filters.html#dictionary_output_filter").parent().parent()
.add("UNIX-to-DOS", "tutorial/unix2dos_filters.html", true)
.add("<CODE>stdio_filter</CODE>", "tutorial/unix2dos_filters.html#unix2dos_stdio_filter").parent()
.add("<CODE>input_filter</CODE>", "tutorial/unix2dos_filters.html#unix2dos_input_filter").parent()
.add("<CODE>output_filter</CODE>", "tutorial/unix2dos_filters.html#unix2dos_output_filter").parent().parent()
.add("Multi-Character Filters", "tutorial/multichar_filters.html", true)
.add("InputFilters", "tutorial/multichar_filters.html#multichar_input_filters").parent()
.add("<CODE>shell_comments_mutichar_input_filter</CODE>", "tutorial/multichar_filters.html#shell_comments_multichar_input_filter").parent()
.add("OutputFilters", "tutorial/multichar_filters.html#multichar_output_filters").parent()
.add("<CODE>shell_comments_multichar_output_filter</CODE>", "tutorial/multichar_filters.html#shell_comments_multichar_ouput_filter").parent().parent()
.add("Dual-Use Filters", "tutorial/dual_use_filters.html").parent()
.add("Finite State Filters", "tutorial/finite_state_filters.html", true)
.add("Finite State Machines", "tutorial/finite_state_filters.html#finite_state_machine").parent()
.add("<CODE>dos2unix_fsm</CODE>", "tutorial/finite_state_filters.html#dos2unix_fsm").parent()
.add("<CODE>unix2dos_fsm</CODE>", "tutorial/finite_state_filters.html#unix2dos_fsm").parent()
.add("<CODE>uncommenting_fsm</CODE>", "tutorial/finite_state_filters.html#uncommenting_fsm");
tree.add("User's Guide", "guide/guide.html", true)
.add("Concepts", "guide/concepts.html").parent()
.add("Modes", "guide/modes.html").parent()
.add("Generic Streams", "guide/generic_streams.html").parent()
.add("Filtering Streams", "guide/filtering_streams.html").parent()
.add("Code Conversion", "guide/code_conversion.html").parent()
.add("Asynchronous I/O", "guide/asynchronous.html").parent()
.add("Object Lifetimes", "guide/lifetimes.html").parent()
.add("Pipelines", "guide/pipelines.html").parent()
.add("Views", "guide/views.html").parent()
.add("Exceptions", "guide/exceptions.html").parent()
.add("Buffering", "guide/buffering.html");
var ref = tree.add("Reference", "reference.html");
ref.add("Concepts", "concepts/concepts.html", true)
.add("Devices", "concepts/concepts.html#devices")
.add("BidirectionalDevice", "concepts/bidirectional_device.html").parent()
.add("Blocking", "concepts/blocking.html").parent()
.add("Device", "concepts/device.html").parent()
.add("Direct", "concepts/direct.html").parent()
.add("Peekable", "concepts/peekable.html").parent()
.add("SeekableDevice", "concepts/seekable_device.html").parent()
.add("Sink", "concepts/sink.html").parent()
.add("Source", "concepts/source.html").parent().parent()
.add("Filters", "concepts/concepts.html#filters")
.add("BidirectionalFilter", "concepts/bidirectional_filter.html").parent()
.add("DualUseFilter", "concepts/dual_use_filter.html").parent()
.add("Filter", "concepts/filter.html").parent()
.add("InputFilter", "concepts/input_filter.html").parent()
.add("Multi-Character", "concepts/multi_character.html").parent()
.add("OutputFilter", "concepts/output_filter.html").parent()
.add("Pipable", "concepts/pipable.html").parent()
.add("SeekableFilter", "concepts/seekable_filter.html").parent().parent()
.add("Other", "concepts/concepts.html#other")
.add("Closable", "concepts/closable.html").parent()
.add("Flushable", "concepts/flushable.html").parent()
.add("Localizable", "concepts/localizable.html").parent()
.add("OptimallyBuffered", "concepts/optimally_buffered.html").parent()
.add("SymmetricFilter", "concepts/symmetric_filter.html");
var classes = ref.add("Classes", "classes/classes.html", true);
classes.add("A", "classes/classes.html#a")
.add("<CODE>aggregate_filter</CODE>", "classes/aggregate.html").parent()
.add("<CODE>array</CODE>", "classes/array.html#array").parent()
.add("<CODE>array_sink</CODE>", "classes/array.html#array_sink").parent()
.add("<CODE>array_source</CODE>", "classes/array.html#array_source").parent().parent()
.add("B", "classes/classes.html#b")
.add("<CODE>back_insert_device</CODE>", "classes/back_inserter.html").parent()
.add("<CODE>basic_array</CODE>", "classes/array.html#array").parent()
.add("<CODE>basic_array_sink</CODE>", "classes/array.html#array_sink").parent()
.add("<CODE>basic_array_source</CODE>", "classes/array.html#array_source").parent()
.add("<CODE>basic_bzip2_compressor</CODE>", "classes/bzip2.html#basic_bzip2_compressor").parent()
.add("<CODE>basic_bzip2_decompressor</CODE>", "classes/bzip2.html#basic_bzip2_decompressor").parent()
.add("<CODE>basic_counter</CODE>", "classes/counter.html").parent()
.add("<CODE>basic_file</CODE>", "classes/file.html#file").parent()
.add("<CODE>basic_file_sink</CODE>", "classes/file.html#file_sink").parent()
.add("<CODE>basic_file_source</CODE>", "classes/file.html#file_source").parent()
.add("<CODE>basic_grep_filter</CODE>", "classes/grep_filter.html").parent()
.add("<CODE>basic_gzip_compressor</CODE>", "classes/gzip.html#basic_gzip_compressor").parent()
.add("<CODE>basic_gzip_decompressor</CODE>", "classes/gzip.html#basic_gzip_decompressor").parent()
.add("<CODE>basic_line_filter</CODE>", "classes/line_filter.html").parent()
.add("<CODE>basic_null_device</CODE>", "classes/null.html#null_device").parent()
.add("<CODE>basic_null_sink</CODE>", "classes/null.html#null_sink").parent()
.add("<CODE>basic_null_source</CODE>", "classes/null.html#null_source").parent()
.add("<CODE>basic_regex_filter</CODE>", "classes/regex_filter.html").parent()
.add("<CODE>basic_stdio_filter</CODE>", "classes/stdio_filter.html").parent()
.add("<CODE>basic_zlib_compressor</CODE>", "classes/zlib.html#basic_zlib_compressor").parent()
.add("<CODE>basic_zlib_decompressor</CODE>", "classes/zlib.html#basic_zlib_decompressor").parent()
.add("<CODE>bzip2_compressor</CODE>", "classes/bzip2.html#basic_bzip2_compressor").parent()
.add("<CODE>bzip2_decompressor</CODE>", "classes/bzip2.html#basic_bzip2_decompressor").parent()
.add("<CODE>bzip2_error</CODE>", "classes/bzip2.html#bzip2_error").parent()
.add("<CODE>bzip2_params</CODE>", "classes/bzip2.html#bzip2_params").parent().parent()
.add("C", "classes/classes.html#c")
.add("<CODE>category_of</CODE>", "classes/../guide/traits.html#category_ref").parent()
.add("<CODE>chain</CODE>", "classes/chain.html").parent()
.add("<CODE>char_traits</CODE>", "classes/../classes/char_traits.html").parent()
.add("<CODE>char_type_of</CODE>", "classes/../guide/traits.html#char_type_of_ref").parent()
.add("<CODE>code_converter</CODE>", "classes/code_converter.html").parent()
.add("<CODE>combination</CODE>", "classes/../functions/combine.html#synopsis").parent()
.add("<CODE>composite</CODE>", "classes/../functions/compose.html#composite").parent()
.add("<CODE>counter</CODE>", "classes/counter.html#reference").parent().parent()
.add("D", "classes/classes.html#d")
.add("<CODE>device</CODE>", "classes/device.html").parent()
.add("<CODE>dual_use_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>dual_use_wfilter</CODE>", "classes/filter.html#reference").parent().parent()
.add("F", "classes/classes.html#f")
.add("<CODE>file</CODE>", "classes/file.html#file").parent()
.add("<CODE>file_descriptor</CODE>", "classes/file_descriptor.html#file_descriptor").parent()
.add("<CODE>file_descriptor_sink</CODE>", "classes/file_descriptor.html#file_descriptor_sink").parent()
.add("<CODE>file_descriptor_source</CODE>", "classes/file_descriptor.html#file_descriptor_source").parent()
.add("<CODE>file_sink</CODE>", "classes/file.html#file_sink").parent()
.add("<CODE>file_source</CODE>", "classes/file.html#file_source").parent()
.add("<CODE>filtering_stream</CODE>", "classes/filtering_stream.html").parent()
.add("<CODE>filtering_streambuf</CODE>", "classes/filtering_streambuf.html").parent()
.add("<CODE>filter</CODE>", "classes/filter.html").parent().parent()
.add("G", "classes/classes.html#g")
.add("<CODE>grep_filter</CODE>", "classes/grep_filter.html").parent()
.add("<CODE>gzip_compressor</CODE>", "classes/gzip.html#basic_gzip_compressor").parent()
.add("<CODE>gzip_compressor</CODE>", "classes/gzip.html#basic_gzip_compressor").parent()
.add("<CODE>gzip_decompressor</CODE>", "classes/gzip.html#basic_gzip_decompressor").parent()
.add("<CODE>gzip_error</CODE>", "classes/gzip.html#gzip_error").parent()
.add("<CODE>gzip_params</CODE>", "classes/gzip.html#gzip_params").parent().parent()
.add("I", "classes/classes.html#i")
.add("<CODE>input_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>input_wfilter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>inverse</CODE>", "classes/../functions/invert.html#inverse");
classes.add("L", "classes/classes.html#l")
.add("<CODE>line_filter</CODE>", "classes/line_filter.html#reference").parent().parent()
.add("M", "classes/classes.html#m")
.add("<CODE>mapped_file</CODE>", "classes/mapped_file.html#mapped_file").parent()
.add("<CODE>mapped_file_sink</CODE>", "classes/mapped_file.html#mapped_file_sink").parent()
.add("<CODE>mapped_file_source</CODE>", "classes/mapped_file.html#mapped_file_source").parent()
.add("<CODE>mode_of</CODE>", "classes/mode.html").parent()
.add("<CODE>multichar_dual_use_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>multichar_dual_use_wfilter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>multichar_filter</CODE>", "classes/filter.html").parent()
.add("<CODE>multichar_input_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>multichar_input_wfilter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>multichar_output_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>multichar_output_wfilter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>multichar_wfilter</CODE>", "classes/filter.html#reference").parent().parent()
.add("N", "classes/classes.html#n")
.add("<CODE>newline_filter</CODE>", "classes/newline_filter.html").parent()
.add("<CODE>null_sink</CODE>", "classes/null.html#null_sink").parent()
.add("<CODE>null_source</CODE>", "classes/null.html#null_source").parent().parent()
.add("O", "classes/classes.html#o")
.add("<CODE>output_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>output_wfilter</CODE>", "classes/filter.html#reference").parent().parent()
.add("R", "classes/classes.html#r")
.add("<CODE>regex_filter</CODE>", "classes/../classes/regex_filter.html#reference").parent()
.add("<CODE>restriction</CODE>", "classes/../functions/restrict.html#restriction").parent().parent()
.add("S", "classes/classes.html#s")
.add("<CODE>seekable_filter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>seekable_wfilter</CODE>", "classes/filter.html#reference").parent()
.add("<CODE>sink</CODE>", "classes/device.html#reference").parent()
.add("<CODE>source</CODE>", "classes/device.html#reference").parent()
.add("<CODE>stdio_filter</CODE>", "classes/stdio_filter.html#reference").parent()
.add("<CODE>stream</CODE>", "classes/../guide/generic_streams.html#stream").parent()
.add("<CODE>stream_buffer</CODE>", "classes/../guide/generic_streams.html#stream_buffer").parent()
.add("<CODE>symmetric_filter</CODE>", "classes/symmetric_filter.html").parent().parent()
.add("T", "classes/classes.html#t")
.add("<CODE>tee_device</CODE>", "classes/../functions/tee.html#tee_device").parent()
.add("<CODE>tee_filter</CODE>", "classes/../functions/tee.html#tee_filter").parent().parent()
.add("W", "classes/classes.html#w")
.add("<CODE>warray</CODE>", "classes/array.html#array").parent()
.add("<CODE>warray_sink</CODE>", "classes/array.html#array_sink").parent()
.add("<CODE>warray_source</CODE>", "classes/array.html#array_source").parent()
.add("<CODE>wchain</CODE>", "classes/chain.html#wchain").parent()
.add("<CODE>wcounter</CODE>", "classes/counter.html#reference").parent()
.add("<CODE>wdevice</CODE>", "classes/device.html").parent()
.add("<CODE>wfile</CODE>", "classes/file.html#file").parent()
.add("<CODE>wfile_sink</CODE>", "classes/file.html#file_sink").parent()
.add("<CODE>wfile_source</CODE>", "classes/file.html#file_source").parent()
.add("<CODE>wfilter</CODE>", "classes/filter.html").parent()
.add("<CODE>wgrep_filter</CODE>", "classes/grep_filter.html").parent()
.add("<CODE>wline_filter</CODE>", "classes/line_filter.html#reference").parent()
.add("<CODE>wnull_sink</CODE>", "classes/null.html#null_sink").parent()
.add("<CODE>wnull_source</CODE>", "classes/null.html#null_source").parent()
.add("<CODE>wregex_filter</CODE>", "classes/../classes/regex_filter.html#reference").parent()
.add("<CODE>wsink</CODE>", "classes/device.html#reference").parent()
.add("<CODE>wsource</CODE>", "classes/device.html#reference").parent()
.add("<CODE>wstdio_filter</CODE>", "classes/stdio_filter.html#reference").parent().parent()
.add("Z", "classes/classes.html#z")
.add("<CODE>zlib_compressor</CODE>", "classes/zlib.html#basic_zlib_compressor").parent()
.add("<CODE>zlib_decompressor</CODE>", "classes/zlib.html#basic_zlib_decompressor").parent()
.add("<CODE>zlib_error</CODE>", "classes/zlib.html#zlib_error").parent()
.add("<CODE>zlib_params</CODE>", "classes/zlib.html#zlib_params");
ref.add("Functions", "functions/functions.html", true)
.add("<CODE>back_inserter</CODE>", "classes/back_inserter.html#back_inserter").parent()
.add("<CODE>close</CODE>", "functions/close.html").parent()
.add("<CODE>combine</CODE>", "functions/combine.html").parent()
.add("<CODE>compose</CODE>", "functions/compose.html").parent()
.add("<CODE>copy</CODE>", "functions/copy.html").parent()
.add("<CODE>flush</CODE>", "functions/flush.html").parent()
.add("<CODE>get</CODE>", "functions/get.html").parent()
.add("<CODE>imbue</CODE>", "functions/imbue.html").parent()
.add("<CODE>invert</CODE>", "functions/invert.html").parent()
.add("<CODE>offset_to_position</CODE>", "functions/positioning.html#offset_to_position").parent()
.add("<CODE>optimal_buffer_size</CODE>", "functions/optimal_buffer_size.html").parent()
.add("<CODE>position_to_offset</CODE>", "functions/positioning.html#position_to_offset").parent()
.add("<CODE>put</CODE>", "functions/put.html").parent()
.add("<CODE>putback</CODE>", "functions/putback.html").parent()
.add("<CODE>read</CODE>", "functions/read.html").parent()
.add("<CODE>restrict</CODE>", "functions/restrict.html").parent()
.add("<CODE>seek</CODE>", "functions/seek.html").parent()
.add("<CODE>slice</CODE>", "functions/slice.html").parent()
.add("<CODE>tee</CODE>", "functions/tee.html").parent()
.add("<CODE>test_filter_pair</CODE>", "functions/filter_test.html#test_pair").parent()
.add("<CODE>test_input_filter</CODE>", "functions/filter_test.html#test_input").parent()
.add("<CODE>test_output_filter</CODE>", "functions/filter_test.html#test_output").parent()
.add("<CODE>write</CODE>", "functions/write.html");
ref.add("Macros", "macros/macros.html", true)
.add("<CODE>IOS</CODE>", "macros/workarounds.html#ios").parent()
.add("<CODE>BASIC_ISTREAM</CODE>", "macros/workarounds.html#streams").parent()
.add("<CODE>BASIC_IOS</CODE>", "macros/workarounds.html#ios").parent()
.add("<CODE>BASIC_IOSTREAM</CODE>", "macros/workarounds.html#streams").parent()
.add("<CODE>BASIC_OSTREAM</CODE>", "macros/workarounds.html#streams").parent()
.add("<CODE>BASIC_STREAMBUF</CODE>", "macros/workarounds.html#streambufs").parent()
.add("<CODE>CHAR_TRAITS</CODE>", "macros/workarounds.html#char_traits").parent()
.add("<CODE>COMPONENT</CODE>", "macros/workarounds.html#component_access").parent()
.add("<CODE>COMPONENT_TYPE</CODE>", "macros/workarounds.html#component_access").parent()
.add("<CODE>DEFAULT_DEVICE_BUFFER_SIZE</CODE>", "macros/buffer_sizes.html#component_access").parent()
.add("<CODE>DEFAULT_FILTER_BUFFER_SIZE</CODE>", "macros/buffer_sizes.html#component_access").parent()
.add("<CODE>DEFAULT_PBACK_BUFFER_SIZE</CODE>", "macros/buffer_sizes.html#component_access").parent()
.add("<CODE>FAILURE</CODE>", "macros/workarounds.html#ios").parent()
.add("<CODE>PIPABLE</CODE>", "guide/pipelines.html#boost_iostreams_pipable").parent()
.add("<CODE>PUBSEEKOFF</CODE>", "macros/workarounds.html#streambufs").parent()
.add("<CODE>PUBSEEKPOS</CODE>", "macros/workarounds.html#streambufs").parent()
.add("<CODE>PUBSYNC</CODE>", "macros/workarounds.html#streambufs").parent().parent().parent()
tree.add("Quick Reference", "quick_reference.html");
tree.add("FAQ", "faq.html");
tree.add("Installation", "installation.html");
tree.add("Portability", "portability.html");
tree.add("Rationale", "rationale.html");
tree.add("Bibliography", "bibliography.html");
tree.add("Acknowledgments", "acknowledgments.html");
tree.add("Release Notes", "release_notes.html");
//tree.dump_html = true;
tree.indent = 9;
tree.draw();
// -->
</script>
</head>
<body>
<!-- ------------------ Boost Logo and Library Name ------------------ -->
<table cellpadding=0 cellspacing=0 clear="both" style="margin:0;padding:0" width=170>
<tr>
<td>
<P CLASS="clipped"><a href="../../../index.htm" target="_top">
<img border=0 style="position:relative;left:10" SRC="theme/boost_small.png"></a></P>
</td>
</tr>
</table>
<table clear="both" style="margin-top:0;margin-left:1em;margin-bottom:.5em;padding:0" width=170>
<tr>
<td align=left width=170>
<a style="text-decoration:none" href="index.html" target="_top">
<h1 class="lib-name" style="margin:0">Boost.Iostreams</h1>
</a>
</td>
</tr>
</table>
<hr align="center" width="90%">
<table style="margin:0;padding:0" width=170>
<tr><td>
<!-- ------------------ Markup for Browsers with Scripting Disabled -- -->
<noscript>
<table><tr><td align='left'><table width=150><tr><td><h1 class=tree-caption>Contents</h1></td></tr></table></td></tr><tr><td><div id='list' style='white-space:nowrap;display:'>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>1</span> <a class='tree-text' onfocus='blur_tree()' href='home.html' target='content'><span class='tree-text'>Introduction</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>2</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/tutorial.html' target='content'><span class='tree-text'>Tutorial</span></a></div><div id='list.2' style='white-space:nowrap;display:'>
<div class='tree-item'><div style='margin-left:18;text-indent:-9'><span class='tree-label'>2.1</span> <span class='tree-text'>Writing Devices</span></div><div id='list.2.1' style='white-space:nowrap;display:'>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.1.1</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/writing_devices.html' target='content'><span class='tree-text'>Overview</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.1.2</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/container_source.html' target='content'><span class='tree-text'><CODE>container_source</CODE></span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.1.3</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/container_sink.html' target='content'><span class='tree-text'><CODE>container_sink</CODE></span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.1.4</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/container_device.html' target='content'><span class='tree-text'><CODE>container_device</CODE></span></a></div></div></div></div>
<div class='tree-item'><div style='margin-left:18;text-indent:-9'><span class='tree-label'>2.2</span> <span class='tree-text'>Writing Filters</span></div><div id='list.2.2' style='white-space:nowrap;display:'>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.1</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/writing_filters.html' target='content'><span class='tree-text'>Overview</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.2</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/filter_usage.html' target='content'><span class='tree-text'>Filter Usage</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.3</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/shell_comments_filters.html' target='content'><span class='tree-text'>Shell Comments</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.4</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/line_wrapping_filters.html' target='content'><span class='tree-text'>Line-Wrapping</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.5</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/tab_expanding_filters.html' target='content'><span class='tree-text'>Tab-Expanding</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.6</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/dictionary_filters.html' target='content'><span class='tree-text'>Dictionary</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.7</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/unix2dos_filters.html' target='content'><span class='tree-text'>UNIX-to-DOS</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.8</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/multichar_filters.html' target='content'><span class='tree-text'>Multi-Character Filters</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.9</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/dual_use_filters.html' target='content'><span class='tree-text'>Dual-Use Filters</span></a></div></div>
<div class='tree-item'><div style='margin-left:36;text-indent:-18'><span class='tree-label'>2.2.10</span> <a class='tree-text' onfocus='blur_tree()' href='tutorial/finite_state_filters.html' target='content'><span class='tree-text'>Finite State Filters</span></a></div></div></div></div></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>3</span> <a class='tree-text' onfocus='blur_tree()' href='guide/guide.html' target='content'><span class='tree-text'>User's Guide</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>4</span> <a class='tree-text' onfocus='blur_tree()' href='reference.html' target='content'><span class='tree-text'>Reference</span></a></div><div id='list.4' style='white-space:nowrap;display:'>
<div class='tree-item'><div style='margin-left:18;text-indent:-9'><span class='tree-label'>4.1</span> <a class='tree-text' onfocus='blur_tree()' href='concepts/concepts.html' target='content'><span class='tree-text'>Concepts</span></a></div></div>
<div class='tree-item'><div style='margin-left:18;text-indent:-9'><span class='tree-label'>4.2</span> <a class='tree-text' onfocus='blur_tree()' href='classes/classes.html' target='content'><span class='tree-text'>Classes</span></a></div></div>
<div class='tree-item'><div style='margin-left:18;text-indent:-9'><span class='tree-label'>4.3</span> <a class='tree-text' onfocus='blur_tree()' href='functions/functions.html' target='content'><span class='tree-text'>Functions</span></a></div></div>
<div class='tree-item'><div style='margin-left:18;text-indent:-9'><span class='tree-label'>4.4</span> <a class='tree-text' onfocus='blur_tree()' href='macros/macros.html' target='content'><span class='tree-text'>Macros</span></a></div></div></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>5</span> <a class='tree-text' onfocus='blur_tree()' href='quick_reference.html' target='content'><span class='tree-text'>Quick Reference</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>6</span> <a class='tree-text' onfocus='blur_tree()' href='faq.html' target='content'><span class='tree-text'>FAQ</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>7</span> <a class='tree-text' onfocus='blur_tree()' href='installation.html' target='content'><span class='tree-text'>Installation</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>8</span> <a class='tree-text' onfocus='blur_tree()' href='portability.html' target='content'><span class='tree-text'>Portability</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>9</span> <a class='tree-text' onfocus='blur_tree()' href='rationale.html' target='content'><span class='tree-text'>Rationale</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>10</span> <a class='tree-text' onfocus='blur_tree()' href='bibliography.html' target='content'><span class='tree-text'>Bibliography</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>11</span> <a class='tree-text' onfocus='blur_tree()' href='acknowledgments.html' target='content'><span class='tree-text'>Acknowledgments</span></a></div></div>
<div class='tree-item'><div style='margin-left:0;text-indent:-0'><span class='tree-label'>12</span> <a class='tree-text' onfocus='blur_tree()' href='release_notes.html' target='content'><span class='tree-text'>Release Notes</span></a></div></div></div></td></tr></table>
</noscript>
<!-- ------------------ Tree Control --------------------------------- -->
<span id="tree_control"></span>
</td></tr>
</table>
</body>
</html>