diff --git a/doc/classes/alphabetically.html b/doc/classes/alphabetically.html index 06a696f..61b0bd3 100755 --- a/doc/classes/alphabetically.html +++ b/doc/classes/alphabetically.html @@ -65,7 +65,7 @@

C

-
io_category
+
category_of
io_char
converter
converting_stream
diff --git a/doc/classes/array.html b/doc/classes/array.html index 65c805b..0ee3cbd 100755 --- a/doc/classes/array.html +++ b/doc/classes/array.html @@ -69,7 +69,7 @@ class array_source { public: typedef Ch char_type; - typedef source_tag io_category; + typedef source_tag category; template<int N> array_source(char_type (&)[N]); array_source(char_type* begin, char_type* end); @@ -117,7 +117,7 @@ array_source(const char_type* begin, std::size_t le class array_sink { public: typedef Ch char_type; - typedef sink_tag io_category; + typedef sink_tag category; template<int N> array_sink(char_type (&)[N]); array_sink(char_type* begin, char_type* end); @@ -162,7 +162,7 @@ array_sink(char_type* begin, std::size_t length); class array { public: typedef Ch char_type; - typedef seekable_device_tag io_category; + typedef seekable_device_tag category; template<int N> array(char_type (&)[N]); array(char_type* begin, char_type* end); diff --git a/doc/classes/back_inserter.html b/doc/classes/back_inserter.html index 032d898..4665ce9 100755 --- a/doc/classes/back_inserter.html +++ b/doc/classes/back_inserter.html @@ -47,7 +47,7 @@ class back_insert_device { public: typedef typename Container::value_type char_type; - typedef sink_tag io_category; + typedef sink_tag category; back_insert_device(Container& cnt); ... }; diff --git a/doc/classes/by_category.html b/doc/classes/by_category.html index 2e24859..6f13e8b 100755 --- a/doc/classes/by_category.html +++ b/doc/classes/by_category.html @@ -98,7 +98,7 @@
io_char
-
io_category
+
category_of
io_mode
diff --git a/doc/classes/bzip2.html b/doc/classes/bzip2.html index 3175acb..2b18453 100755 --- a/doc/classes/bzip2.html +++ b/doc/classes/bzip2.html @@ -182,7 +182,7 @@ Model of DualUseFilter which perf
template<typename Alloc = std::allocator<char> >
 struct basic_bzip2_compressor {
     typedef char                    char_type;
-    typedef implementation-defined  io_category;
+    typedef implementation-defined  category;
 
     basic_bzip2_compressor( const bzip2_params& = bzip2::default_block_size, 
                             std::streamsize buffer_size = default value );
@@ -221,7 +221,7 @@ Model of DualUseFilter which perf
 
template<typename Alloc = std::allocator<char> >
 struct basic_bzip2_decompressor {
     typedef char                    char_type;
-    typedef implementation-defined  io_category;
+    typedef implementation-defined  category;
 
     basic_bzip2_decompressor( bool small = false, 
                               std::streamsize buffer_size = 
diff --git a/doc/classes/converter.html b/doc/classes/converter.html
index 81e368b..4adedf2 100755
--- a/doc/classes/converter.html
+++ b/doc/classes/converter.html
@@ -69,7 +69,7 @@
 class converter {
 public:
     typedef Int                     char_type;
-    typedef implementation-defined  io_category 
+    typedef implementation-defined  category 
     converter();
     converter( const Device& dev, 
                const std::locale& loc = classic locale,
diff --git a/doc/classes/device.html b/doc/classes/device.html
index aeb0536..dabe558 100755
--- a/doc/classes/device.html
+++ b/doc/classes/device.html
@@ -26,10 +26,10 @@
 

Description

- The class template device, its subcass wdevice and their specializations source, sink, wsource and wsink are provided by the Iostreams Library to ease the definitions of new models of the various Device concepts. These templates and typedefs supply the member types char_type and io_category required by the Iostreams Library; they are inteded to be used as base classes for user-defined Devices. + The class template device, its subcass wdevice and their specializations source, sink, wsource and wsink are provided by the Iostreams Library to ease the definitions of new models of the various Device concepts. These templates and typedefs supply the member types char_type and category required by the Iostreams Library; they are inteded to be used as base classes for user-defined Devices.

- The supplied io_category member is convertible to closable_tag and to localizable_tag. This allows users to define models of the concepts Closable and Localizable simply by providing definitions of member functions close and imbue. + The supplied category member is convertible to closable_tag and to localizable_tag. This allows users to define models of the concepts Closable and Localizable simply by providing definitions of member functions close and imbue.

@@ -61,7 +61,7 @@ template<typename Mode, typename Ch = char> struct device { typedef Ch char_type; - typedef see below io_category; + typedef see below category; void close(); void close(std::ios_base::openmode); void imbue(const std::locale&); @@ -84,10 +84,10 @@ - -

device::io_category

+ +

device::category

-
    typedef see below io_category;
+
    typedef see below category;

A category tag convertible to Mode, device_tag, closable_tag and localizable_tag. diff --git a/doc/classes/file.html b/doc/classes/file.html index 1691163..e1a7830 100755 --- a/doc/classes/file.html +++ b/doc/classes/file.html @@ -69,7 +69,7 @@ class basic_file_source { public: typedef Ch char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; basic_file_source( const std::string& path, std::ios_base::openmode mode = std::ios_base::in ); @@ -125,7 +125,7 @@ class basic_file_sink { public: typedef Ch char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; basic_file_sink( const std::string& path, std::ios_base::openmode mode = std::ios_base::out ); @@ -179,7 +179,7 @@ class basic_file { public: typedef Ch char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; basic_file( const std::string& path, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out ); diff --git a/doc/classes/filter.html b/doc/classes/filter.html index f19d287..177c4bc 100755 --- a/doc/classes/filter.html +++ b/doc/classes/filter.html @@ -26,10 +26,10 @@

Description

- The class template filter, its subcass wfilter and their specializations input_filter, output_filter, input_wfilter and output_wfilter are provided by the Iostreams Library to ease the definitions of new models of the various Filter concepts. These templates and typedefs supply the member types io_char and io_category required by the Iostreams Library; they are inteded to be used as base classes for user-defined Filters. + The class template filter, its subcass wfilter and their specializations input_filter, output_filter, input_wfilter and output_wfilter are provided by the Iostreams Library to ease the definitions of new models of the various Filter concepts. These templates and typedefs supply the member types io_char and category required by the Iostreams Library; they are inteded to be used as base classes for user-defined Filters.

- The supplied io_category member is convertible to closable_tag and to localizable_tag. This allows users to define models of the concepts Closable and Localizable simply by providing definitions of member functions close and imbue. + The supplied category member is convertible to closable_tag and to localizable_tag. This allows users to define models of the concepts Closable and Localizable simply by providing definitions of member functions close and imbue.

@@ -61,7 +61,7 @@ template<typename Mode, typename Ch = char> struct filter { typedef Ch char_type; - typedef see below io_category; + typedef see below category; template<typename Device> void close(Device&); @@ -89,8 +89,8 @@ - -

filter::io_category

+ +

filter::category

    typedef see below category;
diff --git a/doc/classes/gzip.html b/doc/classes/gzip.html index 831c930..01884ee 100755 --- a/doc/classes/gzip.html +++ b/doc/classes/gzip.html @@ -214,7 +214,7 @@ Thanks to Jean-loup Gailly and template<typename Alloc = std::allocator<char> > struct basic_gzip_compressor { typedef char char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; basic_gzip_compressor( const gzip_params& = zlib::default_compression, std::streamsize buffer_size = default value ); @@ -255,7 +255,7 @@ Thanks to Jean-loup Gailly and template<typename Alloc = std::allocator<char> > struct basic_gzip_decompressor { typedef char char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; basic_gzip_decompressor( int window_bits = default value, std::streamsize buffer_size = diff --git a/doc/classes/mode.html b/doc/classes/mode.html index 937dcc0..ec38df2 100755 --- a/doc/classes/mode.html +++ b/doc/classes/mode.html @@ -63,7 +63,7 @@
    typedef implementation-defined type;
-

The most-derived mode tag to which io_category<T>::type is convertible. If there is no such most-derived tag, a compile-time error occurs.

+

The most-derived mode tag to which category_of<T>::type is convertible. If there is no such most-derived tag, a compile-time error occurs.

Modes assigned to standard library types are displayed in the following table. For standard streams and stream buffers, if the i/o mode shown below does not acurately reflect a particular implementation, the function template adapt may be used.

diff --git a/doc/classes/multichar_filter.html b/doc/classes/multichar_filter.html index 72a460b..90ca37c 100755 --- a/doc/classes/multichar_filter.html +++ b/doc/classes/multichar_filter.html @@ -26,10 +26,10 @@

Description

- The class template multichar_filter, its subcass multichar_wfilter and their specializations multichar_input_filter, multichar_output_filter, multichar_input_wfilter and multichar_output_wfilter are provided by the Iostreams Library to ease the definitions of new Multi-Character Filters. These templates and typedefs supply the member types char_type and io_category required by the Iostreams Library; they are inteded to be used as base classes for user-defined Filters. + The class template multichar_filter, its subcass multichar_wfilter and their specializations multichar_input_filter, multichar_output_filter, multichar_input_wfilter and multichar_output_wfilter are provided by the Iostreams Library to ease the definitions of new Multi-Character Filters. These templates and typedefs supply the member types char_type and category required by the Iostreams Library; they are inteded to be used as base classes for user-defined Filters.

- The supplied io_category member is convertible to closable_tag and to localizable_tag. This allows users to define models of the concepts Closable and Localizable simply by providing definitions of member functions close and imbue. + The supplied category member is convertible to closable_tag and to localizable_tag. This allows users to define models of the concepts Closable and Localizable simply by providing definitions of member functions close and imbue.

@@ -61,7 +61,7 @@ template<typename Mode, typename Ch = char> struct multichar_filter { typedef Ch char_type; - typedef see below io_category; + typedef see below category; template<typename Device> void close(Device&); @@ -89,8 +89,8 @@ - -

multichar_filter::io_category

+ +

multichar_filter::category

    typedef see below category;
diff --git a/doc/classes/newline_filter.html b/doc/classes/newline_filter.html index ec9679f..153f42f 100755 --- a/doc/classes/newline_filter.html +++ b/doc/classes/newline_filter.html @@ -88,7 +88,7 @@ class basic_newline_filter { public: typedef Ch char_type; - struct implementation-defined io_category + struct implementation-defined category basic_newline_filter(int flags); ... }; diff --git a/doc/classes/one_step_filter.html b/doc/classes/one_step_filter.html index f91bd0c..cdcff2a 100755 --- a/doc/classes/one_step_filter.html +++ b/doc/classes/one_step_filter.html @@ -57,7 +57,7 @@ class one_step_filter { public: typedef Ch char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; typedef std::vector<Char, Alloc> vector_type; virtual ~one_step_filter(); ... diff --git a/doc/classes/symmetric_filter_adapter.html b/doc/classes/symmetric_filter_adapter.html index 448c12d..8f40f59 100755 --- a/doc/classes/symmetric_filter_adapter.html +++ b/doc/classes/symmetric_filter_adapter.html @@ -51,7 +51,7 @@ class symmetric_filter_adapter { public: typedef typename io_char<SymmetricFilter>::type char_type; - typedef implementation-defined io_category; + typedef implementation-defined category; symmetric_filter_adapter( SymmetricFilter* filter, std::streamsize buffer_size = default value ); diff --git a/doc/classes/zlib.html b/doc/classes/zlib.html index 3084522..e73873b 100755 --- a/doc/classes/zlib.html +++ b/doc/classes/zlib.html @@ -249,7 +249,7 @@ Model of DualUseFilter which perf
template<typename Alloc = std::allocator<char> >
 struct basic_zlib_compressor {
     typedef char                    char_type;
-    typedef implementation-defined  io_category;
+    typedef implementation-defined  category;
 
     basic_zlib_compressor( const zlib_params& = zlib::default_compression, 
                            std::streamsize buffer_size = default value );
@@ -290,7 +290,7 @@ Model of DualUseFilter which perf
 
template<typename Alloc = std::allocator<char> >
 struct basic_zlib_decompressor {
     typedef char                    char_type;
-    typedef implementation-defined  io_category;
+    typedef implementation-defined  category;
 
     basic_zlib_decompressor( int window_bits = default value, 
                              std::streamsize buffer_size = 
diff --git a/doc/concepts/bidirectional_device.html b/doc/concepts/bidirectional_device.html
index 92604cd..b357f1b 100755
--- a/doc/concepts/bidirectional_device.html
+++ b/doc/concepts/bidirectional_device.html
@@ -46,7 +46,7 @@
 
 
struct BidirectionalDevice {
     typedef char                char_type;
-    typedef bidirectional_device_tag    io_category;
+    typedef bidirectional_device_tag    category;
     std::streamsize read(char* s, std::streamsize n) 
         {
             // Reads up to n characters from the input 
@@ -62,7 +62,7 @@
 };

- Here io_category is a tag struct identifying the containing type as a model of BidirectionalDevice. When defining a new BidirectionalDevice, it suffices to use the tag bidirectional_device_tag. One can also derive from the helper classes device<bidirectional> or wdevice<bidirectional>. + Here category is a tag struct identifying the containing type as a model of BidirectionalDevice. When defining a new BidirectionalDevice, it suffices to use the tag bidirectional_device_tag. One can also derive from the helper classes device<bidirectional> or wdevice<bidirectional>.

Refinement of

diff --git a/doc/concepts/bidirectional_filter.html b/doc/concepts/bidirectional_filter.html index 5c0be8f..edd5cd8 100755 --- a/doc/concepts/bidirectional_filter.html +++ b/doc/concepts/bidirectional_filter.html @@ -85,7 +85,7 @@ -
typename io_category<F>::type
+
typename category_of<F>::type
typename of the category -- diff --git a/doc/concepts/device.html b/doc/concepts/device.html index f74ec7d..a4e7434 100755 --- a/doc/concepts/device.html +++ b/doc/concepts/device.html @@ -118,7 +118,7 @@ typename of the character type - typename io_category<D>::type + typename category_of<D>::type typename of the category diff --git a/doc/concepts/filter.html b/doc/concepts/filter.html index 1ed070f..b214d2a 100755 --- a/doc/concepts/filter.html +++ b/doc/concepts/filter.html @@ -116,7 +116,7 @@ typename of the character type - typename io_category<F>::type + typename category_of<F>::type typename of the category diff --git a/doc/concepts/input_filter.html b/doc/concepts/input_filter.html index 1cd6502..3c813a8 100755 --- a/doc/concepts/input_filter.html +++ b/doc/concepts/input_filter.html @@ -62,7 +62,7 @@ struct alphabetic_input_filter { typedef char char_type; - typedef input_filter_tag io_category; + typedef input_filter_tag category; template<typename Source> int get(Source& src) @@ -79,7 +79,7 @@

- The Iostreams Library defines two convenience classes, input_filter and input_wfilter, which provide member typedefs char_type and io_category as well as default implementations of several member functions.[3] When defining a new model of InputFilter, it is often sufficient to derive from input_filter or input_wfilter and to define a member function get. + The Iostreams Library defines two convenience classes, input_filter and input_wfilter, which provide member typedefs char_type and category as well as default implementations of several member functions.[3] When defining a new model of InputFilter, it is often sufficient to derive from input_filter or input_wfilter and to define a member function get.

II. Multi-Character InputFilter

@@ -98,7 +98,7 @@ struct alphabetic_input_filter { typedef char char_type; - typedef multichar_input_filter_tag io_category; + typedef multichar_input_filter_tag category; template<typename Source> streamsize read(Source& src, char* s, streamsize n) @@ -120,7 +120,7 @@ Here multichar_input_filter_tag is a category tag identifying the Filter as a Multi-Character InputFilter.

- The Iostreams Library defines two convenience classes, multichar_input_filter and multichar_input_wfilter, which provide the member typedefs char_type and io_category as well as default implementations of several member functions.[3] When defining a new Multi-Character InputFilter, it is often sufficient to derive from multichar_input_filter or multichar_input_wfilter and to define a member function read. + The Iostreams Library defines two convenience classes, multichar_input_filter and multichar_input_wfilter, which provide the member typedefs char_type and category as well as default implementations of several member functions.[3] When defining a new Multi-Character InputFilter, it is often sufficient to derive from multichar_input_filter or multichar_input_wfilter and to define a member function read.

@@ -173,7 +173,7 @@ -
typename io_category<F>::type
+
typename category_of<F>::type
typename of the category -- diff --git a/doc/concepts/output_filter.html b/doc/concepts/output_filter.html index 8dd1dc6..6af56ab 100755 --- a/doc/concepts/output_filter.html +++ b/doc/concepts/output_filter.html @@ -61,7 +61,7 @@ struct toupper_output_filter { typedef char char_type; - typedef output_filter_tag io_category; + typedef output_filter_tag category; template<typename Sink> void put(Sink& snk, char c) @@ -75,7 +75,7 @@

- The Iostreams Library defines two convenience classes, output_filter and output_wfilter, which provide member typedefs char_type and io_category as well as default implementations of several member functions.[3] When defining a new model of OutputFilter, it is often sufficient to derive from output_filter or output_wfilter and to define a member function put. + The Iostreams Library defines two convenience classes, output_filter and output_wfilter, which provide member typedefs char_type and category as well as default implementations of several member functions.[3] When defining a new model of OutputFilter, it is often sufficient to derive from output_filter or output_wfilter and to define a member function put.

II. Multi-Character OutputFilter

@@ -93,7 +93,7 @@ struct toupper_filter { typedef char char_type; - typedef multichar_output_filter_tag io_category; + typedef multichar_output_filter_tag category; template<typename Sink> void write(Sink& snk, const char* s, streamsize n) @@ -107,7 +107,7 @@ Here multichar_output_filter_tag is a category tag identifying the Filter as a multichar OutputFilter.

- The Iostreams Library defines two convenience classes, multichar_output_filter and multichar_output_wfilter, which provide the member typedefs char_type and io_category as well as default implementations of several member functions.[3] When defining a new multichar OutputFilter, it is often sufficient to derive from multichar_output_filter or multichar_output_wfilter and to define a member function write. + The Iostreams Library defines two convenience classes, multichar_output_filter and multichar_output_wfilter, which provide the member typedefs char_type and category as well as default implementations of several member functions.[3] When defining a new multichar OutputFilter, it is often sufficient to derive from multichar_output_filter or multichar_output_wfilter and to define a member function write.

@@ -161,7 +161,7 @@ -
typename io_category<F>::type
+
typename category_of<F>::type
typename of the category -- diff --git a/doc/concepts/seekable_device.html b/doc/concepts/seekable_device.html index 683829f..5de2fe4 100755 --- a/doc/concepts/seekable_device.html +++ b/doc/concepts/seekable_device.html @@ -44,7 +44,7 @@
struct SeekableDevice {
     typedef char                 char_type;
-    typedef seekable_device_tag  io_category;
+    typedef seekable_device_tag  category;
     std::streamsize read(char* s, std::streamsize n) 
         {
             // Reads up to n characters from the controlled 
diff --git a/doc/concepts/seekable_filter.html b/doc/concepts/seekable_filter.html
index b61b789..f37f39f 100755
--- a/doc/concepts/seekable_filter.html
+++ b/doc/concepts/seekable_filter.html
@@ -88,7 +88,7 @@
     
     
         
-            
typename io_category<F>::type
+
typename category_of<F>::type
typename of the category -- diff --git a/doc/concepts/sink.html b/doc/concepts/sink.html index 8d618ae..a3d3ca8 100755 --- a/doc/concepts/sink.html +++ b/doc/concepts/sink.html @@ -45,7 +45,7 @@
struct Sink {
     typedef char      char_type;
-    typedef sink_tag  io_category;
+    typedef sink_tag  category;
     void write(const char* s, std::streamsize n) 
         {
             // Writes n characters from the buffer s to the 
@@ -96,9 +96,9 @@
     
     
         
-            
typename io_category<S>::type
+
typename category_of<S>::type
- typename of the io_category + typename of the category -- diff --git a/doc/concepts/source.html b/doc/concepts/source.html index 3429e3f..9a196d9 100755 --- a/doc/concepts/source.html +++ b/doc/concepts/source.html @@ -47,7 +47,7 @@
struct Source {
     typedef char        char_type;
-    typedef source_tag  io_category;
+    typedef source_tag  category;
     std::streamsize read(char* s, std::streamsize n) 
         {
             // Reads up to n characters from the controlled 
@@ -98,7 +98,7 @@
     
     
         
-            
typename io_category<S>::type
+
typename category_of<S>::type
typename of the category -- diff --git a/doc/functions/get.html b/doc/functions/get.html index 7f8b830..82aa66b 100755 --- a/doc/functions/get.html +++ b/doc/functions/get.html @@ -119,7 +119,7 @@

The semantics of get depends on the category of Source as follows:

- + diff --git a/doc/functions/imbue.html b/doc/functions/imbue.html index e69bc50..e6f385a 100755 --- a/doc/functions/imbue.html +++ b/doc/functions/imbue.html @@ -67,7 +67,7 @@

The semantics of imbue for a Filter or Device type T depends on its category as follows:

io_category<Source>::typesemantics
category_of<Source>::typesemantics
convertible to direct_tag compile-time error
- + diff --git a/doc/functions/put.html b/doc/functions/put.html index 4e1c537..d0aaec4 100755 --- a/doc/functions/put.html +++ b/doc/functions/put.html @@ -106,7 +106,7 @@

The semantics of put depends on the category of Sink as follows:

io_category<T>::typesemantics
category_of<T>::typesemantics
Convertible to streambuf_tag calls t.pubimbue(loc)
- + diff --git a/doc/functions/putback.html b/doc/functions/putback.html index 0567495..6ad831c 100755 --- a/doc/functions/putback.html +++ b/doc/functions/putback.html @@ -103,7 +103,7 @@

The semantics of putback depends on the category of Peekable as follows:

io_category<Sink>::typesemantics
category_of<Sink>::typesemantics
convertible to direct_tag compile-time error
- + diff --git a/doc/functions/read.html b/doc/functions/read.html index 37519a0..642f662 100755 --- a/doc/functions/read.html +++ b/doc/functions/read.html @@ -135,7 +135,7 @@ std::streamsize read( T& t, typename io_char<T&g

The semantics of read depends on the category of T as follows:

io_category<Peekable>::typesemantics
category_of<Peekable>::typesemantics
convertible to istream_tag invokes peekable.putback(c)
- + @@ -163,7 +163,7 @@ std::streamsize read( T& t, Source& src, typename i

The semantics of read depends on the category of T as follows:

io_category<T>::typesemantics
category_of<T>::typesemantics
convertible to istream_tag invokes t.read(s, n) and returns t.gcount()
- + diff --git a/doc/functions/seek.html b/doc/functions/seek.html index 70b0775..e9648ee 100755 --- a/doc/functions/seek.html +++ b/doc/functions/seek.html @@ -99,7 +99,7 @@ std::streamoff seek( T&, std::stream

The semantics of seek depends on the category of T as follows:

io_category<T>::typesemantics
category_of<T>::typesemantics
convertible to multichar_tag returns t.read(src, s, n)
- + diff --git a/doc/functions/write.html b/doc/functions/write.html index 8c8b98e..715f78d 100755 --- a/doc/functions/write.html +++ b/doc/functions/write.html @@ -141,7 +141,7 @@ void write( T& t, consttypen

The semantics of write depends on the category of T as follows:

io_category<T>::typesemantics
category_of<T>::typesemantics
convertible to istream_tag or ostream_tag returns t.rdbuf()->pubseekoff(off, way)
- + @@ -170,7 +170,7 @@ void write( T& t, Sink& snk,

The semantics of read depends on the category of T as follows:

io_category<T>::typesemantics
category_of<T>::typesemantics
convertible to ostream_tag invokes t.write(s, n)
- + diff --git a/doc/traits.html b/doc/traits.html index ae3e110..10b829f 100755 --- a/doc/traits.html +++ b/doc/traits.html @@ -18,7 +18,7 @@
Overview
Headers
Class template io_char
-
Class template io_category
+
Class template category_of
Category Tags
@@ -108,7 +108,7 @@
io_category<T>::typesemantics
category_of<T>::typesemantics
convertible to multichar_tag invokes t.write(snk, s, n)
-

Class Template io_category

+

Class Template category_of

Description

@@ -119,7 +119,7 @@
namespace boost { namespace iostreams {
 
 template<typename T>
-struct io_category {
+struct category_of {
     typedef see below type;
 };
 
@@ -143,7 +143,7 @@
 

The value of the nested type type depends on the template parameter T as follows:

- + @@ -177,7 +177,7 @@

In addition to the various mode tags, the header <boost/iostreams/categories.hpp> provides the category tags shown in the following table. To produce a new category tag which combines several existing tags, simply define a struct extending the existing tags. E.g., -

    struct io_category
+    
    struct category
         : seekable,
           filter_tag, 
           localizable_tag 
diff --git a/example/finite_state_filter.hpp b/example/finite_state_filter.hpp
index 10f5083..bc96e22 100755
--- a/example/finite_state_filter.hpp
+++ b/example/finite_state_filter.hpp
@@ -266,7 +266,7 @@ private:
     typedef detail::finite_state_filter_impl  base_type;
 public:
     typedef typename base_type::char_type                         char_type;
-    struct io_category : stdio_filter::io_category, localizable_tag { };
+    struct category : stdio_filter::category, localizable_tag { };
 
     finite_state_stdio_filter() { }
 
@@ -317,7 +317,7 @@ public:
     typedef typename base_type::char_type                         char_type;
     typedef char_traits                                traits_type;
     typedef typename base_type::int_type                          int_type;
-    struct io_category
+    struct category
         : dual_use, filter_tag, closable_tag, localizable_tag
         { };
 
diff --git a/include/boost/iostreams/chain.hpp b/include/boost/iostreams/chain.hpp
index fc7ef65..de9845c 100755
--- a/include/boost/iostreams/chain.hpp
+++ b/include/boost/iostreams/chain.hpp
@@ -125,7 +125,7 @@ public:
     BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr)
     typedef Alloc                                  allocator_type;
     typedef Mode                                   mode;
-    struct io_category
+    struct category
         : Mode,
           device_tag,
           closable_tag
@@ -228,7 +228,7 @@ private:
     template
     void push_impl(const T& t, int buffer_size = -1, int pback_size = -1)
     {
-        typedef typename iostreams::io_category::type  category;
+        typedef typename iostreams::category_of::type  category;
         typedef typename unwrap_ios::type              policy_type;
         typedef streambuf_facade<
                     policy_type,
@@ -378,7 +378,7 @@ private:
                          > \
     { \
     public: \
-        struct io_category : device_tag, Mode { }; \
+        struct category : device_tag, Mode { }; \
         typedef Mode                                   mode; \
     private: \
         typedef boost::iostreams::detail::chain_base< \
diff --git a/include/boost/iostreams/close.hpp b/include/boost/iostreams/close.hpp
index dbf63ea..885e70a 100755
--- a/include/boost/iostreams/close.hpp
+++ b/include/boost/iostreams/close.hpp
@@ -53,7 +53,7 @@ namespace detail {
 
 template
 struct close_tag {
-    typedef typename io_category::type category;
+    typedef typename category_of::type category;
     typedef typename
             mpl::eval_if<
                 is_convertible,
@@ -103,7 +103,7 @@ struct close_impl {
     template
     static void close(T& t, BOOST_IOS::openmode which)
     {
-        typedef typename io_category::type category;
+        typedef typename category_of::type category;
         const bool in =  is_convertible::value &&
                         !is_convertible::value;
         if (in == ((which & BOOST_IOS::in) != 0))
@@ -112,7 +112,7 @@ struct close_impl {
     template
     static void close(T& t, Sink& snk, BOOST_IOS::openmode which)
     {
-        typedef typename io_category::type category;
+        typedef typename category_of::type category;
         const bool in =  is_convertible::value &&
                         !is_convertible::value;
         if (in == ((which & BOOST_IOS::in) != 0)) {
diff --git a/include/boost/iostreams/code_converter.hpp b/include/boost/iostreams/code_converter.hpp
index 4db2d78..7eccde8 100755
--- a/include/boost/iostreams/code_converter.hpp
+++ b/include/boost/iostreams/code_converter.hpp
@@ -94,7 +94,7 @@ private:
 template
 struct code_converter_impl {
     typedef typename codecvt_extern::type          extern_type;
-    typedef typename io_category::type              device_category;
+    typedef typename category_of::type              device_category;
     typedef is_convertible          can_read;
     typedef is_convertible         can_write;
     typedef is_convertible  is_bidir;
@@ -254,7 +254,7 @@ private:
     typedef typename detail::codecvt_state::type           state_type;
 public:
     typedef intern_type                                             char_type;    
-    struct io_category 
+    struct category 
         : impl_type::mode, device_tag, closable_tag, localizable_tag
         { };
     BOOST_STATIC_ASSERT((
diff --git a/include/boost/iostreams/combine.hpp b/include/boost/iostreams/combine.hpp
index 69a7a05..c51e57d 100755
--- a/include/boost/iostreams/combine.hpp
+++ b/include/boost/iostreams/combine.hpp
@@ -43,7 +43,7 @@ template
 class combined_device {
 public:
     typedef typename io_char::type char_type;
-    struct io_category
+    struct category
         : bidirectional, 
           device_tag, 
           closable_tag, 
@@ -75,11 +75,11 @@ private:
 template
 class combined_filter {
 private:
-    typedef typename io_category::type   in_category;
-    typedef typename io_category::type  out_category;
+    typedef typename category_of::type   in_category;
+    typedef typename category_of::type  out_category;
 public:
     typedef typename io_char::type       char_type;
-    struct io_category 
+    struct category 
         : multichar_bidirectional_filter_tag,
           closable_tag, 
           localizable_tag
diff --git a/include/boost/iostreams/compose.hpp b/include/boost/iostreams/compose.hpp
index cb49da4..c1c0f66 100755
--- a/include/boost/iostreams/compose.hpp
+++ b/include/boost/iostreams/compose.hpp
@@ -70,7 +70,7 @@ private:
             >::type                                         value_type;
 public:
     typedef typename io_char::type                  char_type;
-    struct io_category
+    struct category
         : Mode,
           device_tag,
           closable_tag,
@@ -112,7 +112,7 @@ template
 class composite_filter {
 public:
     typedef typename io_char::type char_type;
-    struct io_category
+    struct category
         : io_mode::type,
           filter_tag,
           closable_tag,
diff --git a/include/boost/iostreams/concepts.hpp b/include/boost/iostreams/concepts.hpp
index 270a70a..77117c8 100755
--- a/include/boost/iostreams/concepts.hpp
+++ b/include/boost/iostreams/concepts.hpp
@@ -34,7 +34,7 @@ namespace boost { namespace iostreams {
 template
 struct device {
     typedef Ch char_type;
-    struct io_category
+    struct category
         : Mode,
           device_tag,
           closable_tag,
@@ -70,7 +70,7 @@ typedef wdevice  wsink;
 template
 struct filter {
     typedef Ch char_type;
-    struct io_category
+    struct category
         : Mode,
           filter_tag,
           closable_tag,
@@ -115,7 +115,7 @@ typedef wfilter  dual_use_wfilter;
 
 template
 struct multichar_filter : filter {
-    struct io_category : filter::io_category, multichar_tag { };
+    struct category : filter::category, multichar_tag { };
 };
 
 template
diff --git a/include/boost/iostreams/detail/adapter/concept_adapter.hpp b/include/boost/iostreams/detail/adapter/concept_adapter.hpp
index cf3268f..55f204f 100755
--- a/include/boost/iostreams/detail/adapter/concept_adapter.hpp
+++ b/include/boost/iostreams/detail/adapter/concept_adapter.hpp
@@ -56,7 +56,7 @@ private:
             >::type                                    any_impl;
 public:
     typedef typename io_char::type                  char_type;
-    typedef typename io_category::type              io_category;
+    typedef typename category_of::type              category;
 
     explicit concept_adapter(const reference_wrapper& ref) : t_(ref.get())
     { BOOST_STATIC_ASSERT(is_std_io::value); }
@@ -126,8 +126,8 @@ struct device_wrapper_impl {
     seek( Device& dev, Dummy*, stream_offset off, 
           BOOST_IOS::seekdir way, BOOST_IOS::openmode which )
     { 
-        typedef typename io_category::type io_category;
-        return seek(dev, off, way, which, io_category()); 
+        typedef typename category_of::type category;
+        return seek(dev, off, way, which, category()); 
     }
 
     template
@@ -195,8 +195,8 @@ struct flt_wrapper_impl {
     seek( Filter& f, Device* dev, stream_offset off,
           BOOST_IOS::seekdir way, BOOST_IOS::openmode which )
     {
-        typedef typename io_category::type io_category;
-        return seek(f, dev, off, way, which, io_category());
+        typedef typename category_of::type category;
+        return seek(f, dev, off, way, which, category());
     }
 
     template
@@ -211,8 +211,8 @@ struct flt_wrapper_impl {
           BOOST_IOS::seekdir way, BOOST_IOS::openmode which,
           random_access tag )
     {
-        typedef typename io_category::type io_category;
-        return seek(f, dev, off, way, which, tag, io_category());
+        typedef typename category_of::type category;
+        return seek(f, dev, off, way, which, tag, category());
     }
 
     template
diff --git a/include/boost/iostreams/detail/adapter/direct_adapter.hpp b/include/boost/iostreams/detail/adapter/direct_adapter.hpp
index f719b78..bae459f 100755
--- a/include/boost/iostreams/detail/adapter/direct_adapter.hpp
+++ b/include/boost/iostreams/detail/adapter/direct_adapter.hpp
@@ -43,7 +43,7 @@ template
 class direct_adapter_base {
 public:
     typedef typename io_char::type char_type;
-    struct io_category 
+    struct category 
         : io_mode::type,
           device_tag,
           closable_tag
@@ -53,7 +53,7 @@ public:
         { };
 protected:
     explicit direct_adapter_base(const Direct& d);
-    typedef is_convertible is_double;
+    typedef is_convertible is_double;
     struct pointers {
         char_type *beg, *ptr, *end;
     };
@@ -75,7 +75,7 @@ private:
     using base_type::d_;
 public:
     typedef typename base_type::char_type    char_type;
-    typedef typename base_type::io_category  io_category;
+    typedef typename base_type::category     category;
 
         // Constructors
 
@@ -162,8 +162,8 @@ inline Device& unwrap_direct(direct_adapter& d) { return *d; }
 template
 direct_adapter_base::direct_adapter_base(const Direct& d) : d_(d)
 {
-    init_input(is_convertible());
-    init_output(is_convertible());
+    init_input(is_convertible());
+    init_output(is_convertible());
 }
 
 template
@@ -254,14 +254,14 @@ inline stream_offset direct_adapter::seek
 template
 void direct_adapter::close() 
 { 
-    BOOST_STATIC_ASSERT((!is_convertible::value));
+    BOOST_STATIC_ASSERT((!is_convertible::value));
     boost::iostreams::close(d_, BOOST_IOS::in | BOOST_IOS::out);
 }
 
 template
 void direct_adapter::close(BOOST_IOS::openmode which) 
 { 
-    BOOST_STATIC_ASSERT((is_convertible::value));
+    BOOST_STATIC_ASSERT((is_convertible::value));
     boost::iostreams::close(d_, which);
 }
 
diff --git a/include/boost/iostreams/detail/adapter/forward_container.hpp b/include/boost/iostreams/detail/adapter/forward_container.hpp
index f276aa8..e4f6ea0 100755
--- a/include/boost/iostreams/detail/adapter/forward_container.hpp
+++ b/include/boost/iostreams/detail/adapter/forward_container.hpp
@@ -25,7 +25,7 @@ public:
     BOOST_STATIC_ASSERT((!is_convertible::value));
     typedef Container                       container_type;
     typedef typename Container::value_type  char_type;
-    struct io_category 
+    struct category 
         : device_tag,
           Mode
         { };
diff --git a/include/boost/iostreams/detail/adapter/mode_adapter.hpp b/include/boost/iostreams/detail/adapter/mode_adapter.hpp
index 0f3444f..1784f5a 100755
--- a/include/boost/iostreams/detail/adapter/mode_adapter.hpp
+++ b/include/boost/iostreams/detail/adapter/mode_adapter.hpp
@@ -32,7 +32,7 @@ private:
 public:
     typedef typename wrapped_type::type  policy_type;
     typedef typename io_char::type       char_type;
-    struct io_category 
+    struct category 
         : Mode, 
           device_tag,
           mpl::if_, filter_tag, device_tag>,
diff --git a/include/boost/iostreams/detail/adapter/non_blocking_adapter.hpp b/include/boost/iostreams/detail/adapter/non_blocking_adapter.hpp
index 923dfd2..250c1c9 100755
--- a/include/boost/iostreams/detail/adapter/non_blocking_adapter.hpp
+++ b/include/boost/iostreams/detail/adapter/non_blocking_adapter.hpp
@@ -19,7 +19,7 @@ template
 class non_blocking_adapter {
 public:
     typedef typename io_char::type char_type;
-    struct io_category
+    struct category
         : io_mode::type, device_tag
         { };
     explicit non_blocking_adapter(Device& dev) : device_(dev) { }
diff --git a/include/boost/iostreams/detail/adapter/output_iterator_adapter.hpp b/include/boost/iostreams/detail/adapter/output_iterator_adapter.hpp
index ff0e632..1de984f 100755
--- a/include/boost/iostreams/detail/adapter/output_iterator_adapter.hpp
+++ b/include/boost/iostreams/detail/adapter/output_iterator_adapter.hpp
@@ -24,7 +24,7 @@ class output_iterator_adapter {
 public:
     BOOST_STATIC_ASSERT((is_convertible::value));
     typedef Ch        char_type;
-    typedef sink_tag  io_category;
+    typedef sink_tag  category;
     explicit output_iterator_adapter(OutIt out) : out_(out) { }
     std::streamsize write(const char_type* s, std::streamsize n) 
     { 
diff --git a/include/boost/iostreams/detail/adapter/random_access_container.hpp b/include/boost/iostreams/detail/adapter/random_access_container.hpp
index f9db279..1916606 100755
--- a/include/boost/iostreams/detail/adapter/random_access_container.hpp
+++ b/include/boost/iostreams/detail/adapter/random_access_container.hpp
@@ -55,7 +55,7 @@ class random_access_container {
 public:
     typedef Container                       container_type;
     typedef typename Container::value_type  char_type;
-    struct io_category 
+    struct category 
         : device_tag,
           Mode
         { };
diff --git a/include/boost/iostreams/detail/adapter/range_adapter.hpp b/include/boost/iostreams/detail/adapter/range_adapter.hpp
index 53a1bea..dbc6229 100755
--- a/include/boost/iostreams/detail/adapter/range_adapter.hpp
+++ b/include/boost/iostreams/detail/adapter/range_adapter.hpp
@@ -46,7 +46,7 @@ private:
     typedef typename iter_traits::iterator_category   iter_cat;
 public:
     typedef typename Range::value_type                char_type;
-    struct io_category : Mode, device_tag { };
+    struct category : Mode, device_tag { };
     typedef typename
             mpl::if_<
                 is_convertible<
diff --git a/include/boost/iostreams/detail/broken_overload_resolution/streambuf_facade.hpp b/include/boost/iostreams/detail/broken_overload_resolution/streambuf_facade.hpp
index 17624ab..4972f95 100755
--- a/include/boost/iostreams/detail/broken_overload_resolution/streambuf_facade.hpp
+++ b/include/boost/iostreams/detail/broken_overload_resolution/streambuf_facade.hpp
@@ -27,7 +27,7 @@ class streambuf_facade
 private:
     BOOST_STATIC_ASSERT((
         is_convertible<
-            BOOST_DEDUCED_TYPENAME iostreams::io_category::type, Mode
+            BOOST_DEDUCED_TYPENAME iostreams::category_of::type, Mode
         >::value
     ));
     typedef typename 
diff --git a/include/boost/iostreams/detail/dispatch.hpp b/include/boost/iostreams/detail/dispatch.hpp
index a0de0ff..b69abf6 100755
--- a/include/boost/iostreams/detail/dispatch.hpp
+++ b/include/boost/iostreams/detail/dispatch.hpp
@@ -13,7 +13,7 @@
 
 #include                    // BOOST_DEDUCED_TYPENAME. 
 #include 
-#include          // io_category. 
+#include          // category_of. 
 #include           
 #include          
 
@@ -23,7 +23,7 @@ template< typename T, typename Tag1, typename Tag2,
           typename Tag3 = mpl::void_, typename Tag4 = mpl::void_,
           typename Tag5 = mpl::void_, typename Tag6 = mpl::void_,
           typename Category = 
-              BOOST_DEDUCED_TYPENAME io_category::type >
+              BOOST_DEDUCED_TYPENAME category_of::type >
 struct dispatch 
     : select<  // Disambiguation for Tru64
           is_convertible, Tag1,
diff --git a/include/boost/iostreams/detail/streambuf/direct_streambuf.hpp b/include/boost/iostreams/detail/streambuf/direct_streambuf.hpp
index 7d60180..23b40e5 100755
--- a/include/boost/iostreams/detail/streambuf/direct_streambuf.hpp
+++ b/include/boost/iostreams/detail/streambuf/direct_streambuf.hpp
@@ -46,7 +46,7 @@ public:
     BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr)
 private:
     typedef linked_streambuf      base_type;
-    typedef typename io_category::type                 io_category;
+    typedef typename category_of::type                 category;
     typedef BOOST_IOSTREAMS_BASIC_STREAMBUF(
                 char_type, traits_type
             )                                             streambuf_type;
@@ -106,8 +106,8 @@ template
 void direct_streambuf::open(const T& t, int, int)
 {
     storage_.reset(t);
-    init_input(io_category());
-    init_output(io_category());
+    init_input(category());
+    init_output(category());
     setg(0, 0, 0);
     setp(0, 0);
 }
diff --git a/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp b/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp
index 7dc532d..bef4c05 100755
--- a/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp
+++ b/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp
@@ -48,7 +48,7 @@ public:
     typedef typename io_char::type                         char_type;
     BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr)
 private:
-    typedef typename io_category::type                     io_category;
+    typedef typename category_of::type                     category;
     typedef concept_adapter                                wrapper;
     typedef detail::basic_buffer            buffer_type;
     typedef indirect_streambuf            my_type;
diff --git a/include/boost/iostreams/detail/vc6/close.hpp b/include/boost/iostreams/detail/vc6/close.hpp
index dec2512..ce3d623 100755
--- a/include/boost/iostreams/detail/vc6/close.hpp
+++ b/include/boost/iostreams/detail/vc6/close.hpp
@@ -33,7 +33,7 @@ namespace detail {
 
 template
 struct close_tag {
-    typedef typename io_category::type category;
+    typedef typename category_of::type category;
     typedef typename
             mpl::eval_if<
                 is_convertible,
@@ -85,7 +85,7 @@ struct close_impl {
     struct inner {
         static void close(T& t, BOOST_IOS::openmode which)
         {
-            typedef typename io_category::type category;
+            typedef typename category_of::type category;
             const bool in =  is_convertible::value &&
                             !is_convertible::value;
             if (in == ((which & BOOST_IOS::in) != 0))
@@ -94,7 +94,7 @@ struct close_impl {
         template
         static void close(T& t, Sink& snk, BOOST_IOS::openmode which)
         {
-            typedef typename io_category::type category;
+            typedef typename category_of::type category;
             const bool in =  is_convertible::value &&
                             !is_convertible::value;
             if (in == ((which & BOOST_IOS::in) != 0)) {
diff --git a/include/boost/iostreams/device/array.hpp b/include/boost/iostreams/device/array.hpp
index 6e69ff0..420d65d 100755
--- a/include/boost/iostreams/device/array.hpp
+++ b/include/boost/iostreams/device/array.hpp
@@ -34,7 +34,7 @@ class array_adapter {
 public:
     typedef Ch                                 char_type;
     typedef std::pair  pair_type;
-    struct io_category
+    struct category
         : public Mode,
           public device_tag,
           public direct_tag
@@ -74,10 +74,10 @@ private:
     template \
     struct BOOST_PP_CAT(basic_, name) : detail::array_adapter { \
     private: \
-        typedef detail::array_adapter base_type; \
+        typedef detail::array_adapter  base_type; \
     public: \
         typedef typename base_type::char_type    char_type; \
-        typedef typename base_type::io_category  io_category; \
+        typedef typename base_type::category     category; \
         BOOST_PP_CAT(basic_, name)(char_type* begin, char_type* end) \
             : base_type(begin, end) { } \
         BOOST_PP_CAT(basic_, name)(char_type* begin, std::size_t length) \
diff --git a/include/boost/iostreams/device/back_inserter.hpp b/include/boost/iostreams/device/back_inserter.hpp
index e76b5e8..0a605ea 100755
--- a/include/boost/iostreams/device/back_inserter.hpp
+++ b/include/boost/iostreams/device/back_inserter.hpp
@@ -20,7 +20,7 @@ template
 class back_insert_device {
 public:
     typedef typename Container::value_type  char_type;
-    typedef sink_tag                        io_category;
+    typedef sink_tag                        category;
     back_insert_device(Container& cnt) : container(&cnt) { }
     std::streamsize write(const char_type* s, std::streamsize n)
     { 
diff --git a/include/boost/iostreams/device/container.hpp b/include/boost/iostreams/device/container.hpp
index 63cf2e9..c2fa337 100755
--- a/include/boost/iostreams/device/container.hpp
+++ b/include/boost/iostreams/device/container.hpp
@@ -46,7 +46,7 @@ private:
 public:    
     typedef Container                                         container_type;
     typedef typename Container::value_type                    char_type;
-    struct io_category 
+    struct category 
         : device_tag,
           Mode
         { };
diff --git a/include/boost/iostreams/device/container_device.hpp b/include/boost/iostreams/device/container_device.hpp
index b800e30..2c564af 100755
--- a/include/boost/iostreams/device/container_device.hpp
+++ b/include/boost/iostreams/device/container_device.hpp
@@ -46,7 +46,7 @@ private:
 public:    
     typedef Container                                  container_type;
     typedef typename Container::value_type             char_type;
-    struct io_category 
+    struct category 
         : device_tag,
           Mode
         { };
diff --git a/include/boost/iostreams/device/file.hpp b/include/boost/iostreams/device/file.hpp
index 4a04eb4..de7b998 100755
--- a/include/boost/iostreams/device/file.hpp
+++ b/include/boost/iostreams/device/file.hpp
@@ -39,7 +39,7 @@ template
 class basic_file {
 public:
     typedef Ch char_type;
-    struct io_category
+    struct category
         : public seekable_device_tag,
           public closable_tag,
           public localizable_tag
@@ -74,7 +74,7 @@ typedef basic_file  wfile;
 template
 struct basic_file_source : private basic_file {
     typedef Ch char_type;
-    struct io_category
+    struct category
         : input_seekable,
           device_tag,
           closable_tag
@@ -95,7 +95,7 @@ typedef basic_file_source  wfile_source;
 template
 struct basic_file_sink : private basic_file {
     typedef Ch char_type;
-    struct io_category
+    struct category
         : output_seekable,
           device_tag,
           closable_tag
diff --git a/include/boost/iostreams/device/file_descriptor.hpp b/include/boost/iostreams/device/file_descriptor.hpp
index 83976db..12e5837 100755
--- a/include/boost/iostreams/device/file_descriptor.hpp
+++ b/include/boost/iostreams/device/file_descriptor.hpp
@@ -35,7 +35,7 @@ public:
     typedef void*  handle_type;
 #endif
     typedef char   char_type;
-    struct io_category
+    struct category
         : seekable_device_tag,
           closable_tag
         { };
@@ -101,7 +101,7 @@ struct file_descriptor_source : private file_descriptor {
     typedef void*  handle_type;
 #endif
     typedef char   char_type;
-    struct io_category : public source_tag, closable_tag { };
+    struct category : public source_tag, closable_tag { };
     using file_descriptor::read;
     using file_descriptor::open;
     using file_descriptor::close;
@@ -126,7 +126,7 @@ struct file_descriptor_sink : private file_descriptor {
     typedef void*  handle_type;
 #endif
     typedef char   char_type;
-    struct io_category : public sink_tag, closable_tag { };
+    struct category : public sink_tag, closable_tag { };
     using file_descriptor::write;
     using file_descriptor::open;
     using file_descriptor::close;
diff --git a/include/boost/iostreams/device/mapped_file.hpp b/include/boost/iostreams/device/mapped_file.hpp
index 983e89d..fb096c7 100755
--- a/include/boost/iostreams/device/mapped_file.hpp
+++ b/include/boost/iostreams/device/mapped_file.hpp
@@ -87,7 +87,7 @@ private:
     friend struct operations;
 public:
     typedef char               char_type;
-    struct io_category
+    struct category
         : public source_tag,
           public direct_tag,
           public closable_tag
@@ -144,7 +144,7 @@ private:
     friend struct operations;
 public:
     typedef char                           char_type;
-    struct io_category
+    struct category
         : public seekable_device_tag,
           public direct_tag,
           public closable_tag
@@ -200,7 +200,7 @@ public:
 struct mapped_file_sink : private mapped_file {
     friend struct operations;
     typedef char char_type;
-    struct io_category
+    struct category
         : public sink_tag,
           public direct_tag,
           public closable_tag
diff --git a/include/boost/iostreams/device/null.hpp b/include/boost/iostreams/device/null.hpp
index b02a331..2a45252 100755
--- a/include/boost/iostreams/device/null.hpp
+++ b/include/boost/iostreams/device/null.hpp
@@ -23,7 +23,7 @@ template
 class basic_null_device {
 public:
     typedef Ch char_type;
-    struct io_category
+    struct category
         : public Mode,
           public device_tag,
           public closable_tag
@@ -40,7 +40,7 @@ public:
 template
 struct basic_null_source : private basic_null_device {
     typedef Ch          char_type;
-    typedef source_tag  io_category;
+    typedef source_tag  category;
     using basic_null_device::read;
     using basic_null_device::close;
 };
@@ -51,7 +51,7 @@ typedef basic_null_source  wnull_source;
 template
 struct basic_null_sink : private basic_null_device {
     typedef Ch        char_type;
-    typedef sink_tag  io_category;
+    typedef sink_tag  category;
     using basic_null_device::write;
     using basic_null_device::close;
 };
diff --git a/include/boost/iostreams/filter/bzip2.hpp b/include/boost/iostreams/filter/bzip2.hpp
index 0cbc91b..eb4e553 100755
--- a/include/boost/iostreams/filter/bzip2.hpp
+++ b/include/boost/iostreams/filter/bzip2.hpp
@@ -241,7 +241,7 @@ private:
     typedef symmetric_filter_adapter  base_type;
 public:
     typedef typename base_type::char_type               char_type;
-    typedef typename base_type::io_category             io_category;
+    typedef typename base_type::category                category;
     basic_bzip2_compressor( const bzip2_params& = bzip2::default_block_size, 
                             int buffer_size =  default_device_buffer_size );
 };
@@ -263,7 +263,7 @@ private:
     typedef symmetric_filter_adapter  base_type;
 public:
     typedef typename base_type::char_type               char_type;
-    typedef typename base_type::io_category             io_category;
+    typedef typename base_type::category                category;
     basic_bzip2_decompressor( bool small = bzip2::default_small,
                               int buffer_size = default_device_buffer_size );
 };
diff --git a/include/boost/iostreams/filter/counter.hpp b/include/boost/iostreams/filter/counter.hpp
index 816034f..8041fef 100755
--- a/include/boost/iostreams/filter/counter.hpp
+++ b/include/boost/iostreams/filter/counter.hpp
@@ -32,7 +32,7 @@ template
 class basic_counter  {
 public:
     typedef Ch char_type;
-    struct io_category
+    struct category
         : dual_use,
           filter_tag,
           multichar_tag,
diff --git a/include/boost/iostreams/filter/gzip.hpp b/include/boost/iostreams/filter/gzip.hpp
index 5f7ed17..0e83951 100755
--- a/include/boost/iostreams/filter/gzip.hpp
+++ b/include/boost/iostreams/filter/gzip.hpp
@@ -172,7 +172,7 @@ private:
     typedef basic_zlib_compressor  base_type;
 public:
     typedef char char_type;
-    struct io_category
+    struct category
         : dual_use,
           filter_tag,
           multichar_tag,
@@ -289,7 +289,7 @@ template >
 class basic_gzip_decompressor : basic_zlib_decompressor {
 public:
     typedef char char_type;
-    struct io_category
+    struct category
         : multichar_input_filter_tag,
           closable_tag
         { };
diff --git a/include/boost/iostreams/filter/line_filter.hpp b/include/boost/iostreams/filter/line_filter.hpp
index 84e5e0f..a12e0f1 100755
--- a/include/boost/iostreams/filter/line_filter.hpp
+++ b/include/boost/iostreams/filter/line_filter.hpp
@@ -43,7 +43,7 @@ public:
                 BOOST_IOSTREAMS_CHAR_TRAITS(char_type),   
                 Alloc
             >                                            string_type;
-    struct io_category
+    struct category
         : dual_use,
           filter_tag,
           multichar_tag,
diff --git a/include/boost/iostreams/filter/newline.hpp b/include/boost/iostreams/filter/newline.hpp
index cb99c53..49a4f60 100755
--- a/include/boost/iostreams/filter/newline.hpp
+++ b/include/boost/iostreams/filter/newline.hpp
@@ -107,7 +107,7 @@ private:
 class newline_filter {
 public:
     typedef char char_type;
-    struct io_category
+    struct category
         : dual_use,
           filter_tag,
           closable_tag
@@ -202,7 +202,7 @@ public:
     template
     void close(Sink& dest, BOOST_IOS::openmode which)
     {
-        typedef typename iostreams::io_category::type category;
+        typedef typename iostreams::category_of::type category;
         bool unfinished = (flags_ & has_CR) != 0;
         flags_ &= newline::platform_mask;
         if (which == BOOST_IOS::out && unfinished)
@@ -280,7 +280,7 @@ BOOST_IOSTREAMS_PIPABLE(newline_filter, 0)
 class newline_checker : public detail::newline_base {
 public:
     typedef char                 char_type;
-    struct io_category
+    struct category
         : dual_use_filter_tag,
           closable_tag
         { };
diff --git a/include/boost/iostreams/filter/one_step_filter.hpp b/include/boost/iostreams/filter/one_step_filter.hpp
index 63eb745..2f92786 100755
--- a/include/boost/iostreams/filter/one_step_filter.hpp
+++ b/include/boost/iostreams/filter/one_step_filter.hpp
@@ -42,7 +42,7 @@ template >
 class one_step_filter  {
 public:
     typedef Ch char_type;
-    struct io_category
+    struct category
         : dual_use,
           filter_tag,
           multichar_tag,
@@ -125,7 +125,7 @@ private:
     template
     void do_write(Sink& sink, const char* s, std::streamsize n) 
     { 
-        typedef typename iostreams::io_category::type  category;
+        typedef typename iostreams::category_of::type  category;
         typedef is_convertible             can_write;
         do_write(sink, s, n, can_write()); 
     }
diff --git a/include/boost/iostreams/filter/regex_filter.hpp b/include/boost/iostreams/filter/regex_filter.hpp
index a5ae7ba..42bc77f 100755
--- a/include/boost/iostreams/filter/regex_filter.hpp
+++ b/include/boost/iostreams/filter/regex_filter.hpp
@@ -38,7 +38,7 @@ private:
     typedef one_step_filter                 base_type;
 public:
     typedef typename base_type::char_type              char_type;
-    typedef typename base_type::io_category            io_category;
+    typedef typename base_type::category               category;
     typedef std::basic_string                      string_type;
     typedef basic_regex                        regex_type;
     typedef regex_constants::match_flag_type           flag_type;
diff --git a/include/boost/iostreams/filter/stdio_filter.hpp b/include/boost/iostreams/filter/stdio_filter.hpp
index a7ba32e..d8f24ba 100755
--- a/include/boost/iostreams/filter/stdio_filter.hpp
+++ b/include/boost/iostreams/filter/stdio_filter.hpp
@@ -35,7 +35,7 @@ private:
     typedef one_step_filter       base_type;
 public:
     typedef typename base_type::char_type    char_type;
-    typedef typename base_type::io_category  io_category;
+    typedef typename base_type::category     category;
     typedef typename base_type::vector_type  vector_type;
 private:
     static std::istream& standard_input(char*) { return std::cin; }
diff --git a/include/boost/iostreams/filter/symmetric_filter_adapter.hpp b/include/boost/iostreams/filter/symmetric_filter_adapter.hpp
index 8d087db..b957f50 100755
--- a/include/boost/iostreams/filter/symmetric_filter_adapter.hpp
+++ b/include/boost/iostreams/filter/symmetric_filter_adapter.hpp
@@ -73,7 +73,7 @@ class symmetric_filter_adapter {
 public:
     typedef typename io_char::type  char_type;
     typedef std::basic_string             string_type;
-    struct io_category
+    struct category
         : dual_use,
           filter_tag,
           multichar_tag,
@@ -224,7 +224,7 @@ private:
     template
     bool flush(Sink& snk)
     {
-        typedef typename iostreams::io_category::type  category;
+        typedef typename iostreams::category_of::type  category;
         typedef is_convertible             can_write;
         return flush(snk, can_write());
     }
diff --git a/include/boost/iostreams/filter/tee.hpp b/include/boost/iostreams/filter/tee.hpp
index 0c49b8a..3d0a500 100755
--- a/include/boost/iostreams/filter/tee.hpp
+++ b/include/boost/iostreams/filter/tee.hpp
@@ -33,7 +33,7 @@ class tee_filter : public detail::basic_adapter {
 public:
     typedef typename detail::param_type::type  param_type;
     typedef typename io_char::type             char_type;
-    struct io_category
+    struct category
         : multichar_output_filter_tag,
           closable_tag,
           flushable_tag,
@@ -43,7 +43,7 @@ public:
 
     BOOST_STATIC_ASSERT((
         is_convertible< // Using io_mode causes failures on VC6-7.0.
-            BOOST_DEDUCED_TYPENAME iostreams::io_category::type, output
+            BOOST_DEDUCED_TYPENAME iostreams::category_of::type, output
         >::value
     ));
 
diff --git a/include/boost/iostreams/filter/test.hpp b/include/boost/iostreams/filter/test.hpp
index c7476e1..7ffcab3 100755
--- a/include/boost/iostreams/filter/test.hpp
+++ b/include/boost/iostreams/filter/test.hpp
@@ -86,7 +86,7 @@ const std::streamsize default_increment = 5;
 class non_blocking_source {
 public:
     typedef char char_type;
-    struct io_category
+    struct category
         : source_tag,
           peekable_tag
         { };
diff --git a/include/boost/iostreams/filter/zlib.hpp b/include/boost/iostreams/filter/zlib.hpp
index a9f9dec..6decaac 100755
--- a/include/boost/iostreams/filter/zlib.hpp
+++ b/include/boost/iostreams/filter/zlib.hpp
@@ -255,7 +255,7 @@ private:
     typedef symmetric_filter_adapter  base_type;
 public:
     typedef typename base_type::char_type               char_type;
-    typedef typename base_type::io_category             io_category;
+    typedef typename base_type::category                category;
     basic_zlib_compressor( const zlib_params& = zlib::default_compression, 
                            int buffer_size = default_device_buffer_size );
     zlib::ulong crc() { return this->filter().crc(); }
@@ -279,7 +279,7 @@ private:
     typedef symmetric_filter_adapter  base_type;
 public:
     typedef typename base_type::char_type               char_type;
-    typedef typename base_type::io_category             io_category;
+    typedef typename base_type::category                category;
     basic_zlib_decompressor( int window_bits = zlib::default_window_bits,
                              int buffer_size = default_device_buffer_size );
     basic_zlib_decompressor( const zlib_params& p,
diff --git a/include/boost/iostreams/offset.hpp b/include/boost/iostreams/offset.hpp
index 634ec3e..8e939f7 100755
--- a/include/boost/iostreams/offset.hpp
+++ b/include/boost/iostreams/offset.hpp
@@ -49,7 +49,7 @@ private:
     typedef typename detail::param_type::type  param_type;
 public:
     typedef typename io_char::type             char_type;
-    struct io_category
+    struct category
         : io_mode::type,
           device_tag,
           closable_tag,
@@ -77,7 +77,7 @@ class offset_direct_device : public basic_adapter {
 public:
     typedef typename io_char::type     char_type;
     typedef std::pair  pair_type;
-    struct io_category
+    struct category
         : io_mode::type,
           device_tag,
           direct_tag,
@@ -104,7 +104,7 @@ template
 class offset_filter : public basic_adapter {
 public:
     typedef typename io_char::type char_type;
-    struct io_category
+    struct category
         : io_mode::type,
           filter_tag,
           multichar_tag,
@@ -331,7 +331,7 @@ offset_direct_device::offset_direct_device
     : basic_adapter(dev), beg_(0), end_(0)
 {
     std::pair seq =
-        sequence(is_convertible());
+        sequence(is_convertible());
     if (off < 0 || len < 0 || off + len > seq.second - seq.first)
         throw BOOST_IOSTREAMS_FAILURE("bad offset");
     beg_ = seq.first + off;
@@ -342,7 +342,7 @@ template
 typename offset_direct_device::pair_type
 offset_direct_device::input_sequence()
 {
-    BOOST_STATIC_ASSERT((is_convertible::value));
+    BOOST_STATIC_ASSERT((is_convertible::value));
     return std::make_pair(beg_, end_);
 }
 
@@ -350,7 +350,7 @@ template
 typename offset_direct_device::pair_type
 offset_direct_device::output_sequence()
 {
-    BOOST_STATIC_ASSERT((is_convertible::value));
+    BOOST_STATIC_ASSERT((is_convertible::value));
     return std::make_pair(beg_, end_);
 }
 
diff --git a/include/boost/iostreams/reverse.hpp b/include/boost/iostreams/reverse.hpp
index 9c2a73a..c4dc8fc 100755
--- a/include/boost/iostreams/reverse.hpp
+++ b/include/boost/iostreams/reverse.hpp
@@ -55,7 +55,7 @@ private:
             >                                                   base_type;
 public:
     typedef typename base_type::char_type                       char_type;
-    typedef typename base_type::io_category                     io_category;
+    typedef typename base_type::category                        category;
     explicit reversing_input_filter(const OutputFilter& filter)
         : filter_(filter) { }
 protected:
@@ -92,7 +92,7 @@ private:
             >                                                   base_type;
 public:
     typedef typename base_type::char_type                       char_type;
-    typedef typename base_type::io_category                     io_category;
+    typedef typename base_type::category                        category;
     explicit reversing_output_filter(const InputFilter& filter)
         : filter_(filter) { }
 protected:
@@ -121,7 +121,7 @@ struct reverse_traits {
     typedef typename
             mpl::if_<
                 is_convertible<
-                    BOOST_DEDUCED_TYPENAME io_category::type, 
+                    BOOST_DEDUCED_TYPENAME category_of::type, 
                     input
                 >,
                 reversing_output_filter,
diff --git a/include/boost/iostreams/stream_facade.hpp b/include/boost/iostreams/stream_facade.hpp
index 3a3a3b5..69bda20 100755
--- a/include/boost/iostreams/stream_facade.hpp
+++ b/include/boost/iostreams/stream_facade.hpp
@@ -27,7 +27,7 @@ template
 struct stream_facade_traits {
     typedef typename io_char::type                     char_type;
     typedef Tr                                                 traits_type;
-    typedef typename io_category::type                 mode;
+    typedef typename category_of::type                 mode;
     typedef typename
             select<
                 mpl::and_<
diff --git a/include/boost/iostreams/streambuf_facade.hpp b/include/boost/iostreams/streambuf_facade.hpp
index 3dabcb4..2de112e 100755
--- a/include/boost/iostreams/streambuf_facade.hpp
+++ b/include/boost/iostreams/streambuf_facade.hpp
@@ -33,7 +33,7 @@ struct streambuf_facade_traits {
     typedef typename
             mpl::if_<
                 is_convertible<
-                    BOOST_DEDUCED_TYPENAME io_category::type,
+                    BOOST_DEDUCED_TYPENAME category_of::type,
                     direct_tag
                 >,
                 direct_streambuf,
@@ -65,7 +65,7 @@ class streambuf_facade
 private:
     BOOST_STATIC_ASSERT((
         is_convertible<
-            BOOST_DEDUCED_TYPENAME iostreams::io_category::type, Mode
+            BOOST_DEDUCED_TYPENAME iostreams::category_of::type, Mode
         >::value
     ));
     typedef typename
diff --git a/include/boost/iostreams/traits.hpp b/include/boost/iostreams/traits.hpp
index e832e72..1ffe402 100755
--- a/include/boost/iostreams/traits.hpp
+++ b/include/boost/iostreams/traits.hpp
@@ -5,7 +5,7 @@
 // See http://www.boost.org/libs/iostreams for documentation.
 
 // 
-// Contains metafunctions io_char, io_category and io_mode used for deducing 
+// Contains metafunctions io_char, category_of and io_mode used for deducing 
 // the i/o category and i/o mode of a model of Filter or Device.
 //
 // Also contains several utility metafunctions, functions and macros.
@@ -132,20 +132,20 @@ struct io_char {
 
 #endif // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION //-----------------//
 
-//------------------Definitions of io_category--------------------------------//
+//------------------Definitions of category_of--------------------------------//
 
 namespace detail {
 
 template
-struct member_io_category { typedef typename T::io_category type; };
+struct member_category { typedef typename T::category type; };
 
 } // End namespace detail.
 
 template
-struct io_category {
+struct category_of {
     template
-    struct member_io_category { 
-        typedef typename U::io_category type; 
+    struct member_category { 
+        typedef typename U::category type; 
     };
     typedef typename detail::unwrapped_type::type U;
     typedef typename  
@@ -157,18 +157,18 @@ struct io_category {
                     is_ostream,    ostream_tag,
                     is_streambuf,  streambuf_tag
                 >,
-                detail::member_io_category
+                detail::member_category
             >::type type;      
 };
 
 //------------------Definition of get_category--------------------------------//
 
 // 
-// Returns an object of type io_category::type.
+// Returns an object of type category_of::type.
 // 
 template
-inline typename io_category::type get_category(const T&) 
-{ typedef typename io_category::type category; return category(); }
+inline typename category_of::type get_category(const T&) 
+{ typedef typename category_of::type category; return category(); }
 
 //------------------Definition of io_int--------------------------------------//
 
@@ -207,7 +207,7 @@ BOOST_IOSTREAMS_MODE_HELPER(dual_use, 9)
 
 template
 struct io_mode_id {
-    typedef typename io_category::type category;
+    typedef typename category_of::type category;
     BOOST_SELECT_BY_SIZE(int, value, detail::io_mode_impl_helper(category()));
 };
 
@@ -222,7 +222,7 @@ namespace detail {
 
 template
 struct has_trait_impl {
-    typedef typename io_category::type category;
+    typedef typename category_of::type category;
     BOOST_STATIC_CONSTANT(bool, value = (is_convertible::value));
 };
 
diff --git a/include/boost/iostreams/traits_fwd.hpp b/include/boost/iostreams/traits_fwd.hpp
index 04cfc70..913c23a 100755
--- a/include/boost/iostreams/traits_fwd.hpp
+++ b/include/boost/iostreams/traits_fwd.hpp
@@ -42,7 +42,7 @@ template
 struct io_char;
 
 template
-struct io_category;
+struct category_of;
 
 template
 struct io_int;
diff --git a/test/buffer_size_test.cpp b/test/buffer_size_test.cpp
index 2118b0e..58ea4bf 100755
--- a/test/buffer_size_test.cpp
+++ b/test/buffer_size_test.cpp
@@ -19,7 +19,7 @@ using boost::unit_test::test_suite;
 
 struct optimally_buffered_filter {
     typedef char char_type;
-    struct io_category
+    struct category
         : input_filter_tag,
           optimally_buffered_tag
         { };
diff --git a/test/component_access_test.cpp b/test/component_access_test.cpp
index 66d836d..d7dedc0 100755
--- a/test/component_access_test.cpp
+++ b/test/component_access_test.cpp
@@ -30,7 +30,7 @@ struct indirect_source : io::source {
 
 struct direct_source {
     typedef char char_type;
-    struct io_category 
+    struct category 
         : io::input, io::device_tag, io::direct_tag 
         { };
     void foo() { }
diff --git a/test/detail/filters.hpp b/test/detail/filters.hpp
index fc7ba3d..3bc6281 100755
--- a/test/detail/filters.hpp
+++ b/test/detail/filters.hpp
@@ -129,7 +129,7 @@ BOOST_IOSTREAMS_PIPABLE(padding_filter, 0)
 
 struct flushable_output_filter {
     typedef char char_type;
-    struct io_category 
+    struct category 
         : output_filter_tag, 
           flushable_tag
         { };
diff --git a/test/offset_test.cpp b/test/offset_test.cpp
index cd119c3..7df716d 100755
--- a/test/offset_test.cpp
+++ b/test/offset_test.cpp
@@ -100,7 +100,7 @@ struct offset_lowercase_file : public temp_file {
 // Can't have an offset view of a non-seekble output filter.
 struct tolower_seekable_filter : public seekable_filter {
     typedef char char_type;
-    struct io_category 
+    struct category 
         : output_seekable,
           filter_tag
         { };
Tio_category
Tcategory
Specialization of std::basic_iostream, or derived from such a specialization iostream_tag