File indexing completed on 2025-01-18 09:38:52
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BOOST_IOSTREAMS_CATEGORIES_HPP_INCLUDED
0012 #define BOOST_IOSTREAMS_CATEGORIES_HPP_INCLUDED
0013
0014 #if defined(_MSC_VER)
0015 # pragma once
0016 #endif
0017
0018 namespace boost { namespace iostreams {
0019
0020
0021
0022 struct any_tag { };
0023 namespace detail { struct two_sequence : virtual any_tag { }; }
0024 namespace detail { struct random_access : virtual any_tag { }; }
0025 namespace detail { struct one_head : virtual any_tag { }; }
0026 namespace detail { struct two_head : virtual any_tag { }; }
0027 struct input : virtual any_tag { };
0028 struct output : virtual any_tag { };
0029 struct bidirectional : virtual input, virtual output, detail::two_sequence { };
0030 struct dual_use : virtual input, virtual output { };
0031 struct input_seekable : virtual input, virtual detail::random_access { };
0032 struct output_seekable : virtual output, virtual detail::random_access { };
0033 struct seekable
0034 : virtual input_seekable,
0035 virtual output_seekable,
0036 detail::one_head
0037 { };
0038 struct dual_seekable
0039 : virtual input_seekable,
0040 virtual output_seekable,
0041 detail::two_head
0042 { };
0043 struct bidirectional_seekable
0044 : input_seekable, output_seekable,
0045 bidirectional, detail::two_head
0046 { };
0047
0048
0049
0050 struct device_tag : virtual any_tag { };
0051 struct filter_tag : virtual any_tag { };
0052
0053
0054
0055
0056
0057 struct peekable_tag : virtual any_tag { };
0058 struct closable_tag : virtual any_tag { };
0059 struct flushable_tag : virtual any_tag { };
0060 struct localizable_tag : virtual any_tag { };
0061 struct optimally_buffered_tag : virtual any_tag { };
0062 struct direct_tag : virtual any_tag { };
0063 struct multichar_tag : virtual any_tag { };
0064
0065 struct source_tag : device_tag, input { };
0066 struct sink_tag : device_tag, output { };
0067 struct bidirectional_device_tag : device_tag, bidirectional { };
0068 struct seekable_device_tag : virtual device_tag, seekable { };
0069
0070 struct input_filter_tag : filter_tag, input { };
0071 struct output_filter_tag : filter_tag, output { };
0072 struct bidirectional_filter_tag : filter_tag, bidirectional { };
0073 struct seekable_filter_tag : filter_tag, seekable { };
0074 struct dual_use_filter_tag : filter_tag, dual_use { };
0075
0076 struct multichar_input_filter_tag
0077 : multichar_tag,
0078 input_filter_tag
0079 { };
0080 struct multichar_output_filter_tag
0081 : multichar_tag,
0082 output_filter_tag
0083 { };
0084 struct multichar_bidirectional_filter_tag
0085 : multichar_tag,
0086 bidirectional_filter_tag
0087 { };
0088 struct multichar_seekable_filter_tag
0089 : multichar_tag,
0090 seekable_filter_tag
0091 { };
0092 struct multichar_dual_use_filter_tag
0093 : multichar_tag,
0094 dual_use_filter_tag
0095 { };
0096
0097
0098
0099
0100
0101 struct std_io_tag : virtual localizable_tag { };
0102 struct istream_tag
0103 : virtual device_tag,
0104 virtual peekable_tag,
0105 virtual std_io_tag
0106 { };
0107 struct ostream_tag
0108 : virtual device_tag,
0109 virtual std_io_tag
0110 { };
0111 struct iostream_tag
0112 : istream_tag,
0113 ostream_tag
0114 { };
0115 struct streambuf_tag
0116 : device_tag,
0117 peekable_tag,
0118 std_io_tag
0119 { };
0120 struct ifstream_tag
0121 : input_seekable,
0122 closable_tag,
0123 istream_tag
0124 { };
0125 struct ofstream_tag
0126 : output_seekable,
0127 closable_tag,
0128 ostream_tag
0129 { };
0130 struct fstream_tag
0131 : seekable,
0132 closable_tag,
0133 iostream_tag
0134 { };
0135 struct filebuf_tag
0136 : seekable,
0137 closable_tag,
0138 streambuf_tag
0139 { };
0140 struct istringstream_tag
0141 : input_seekable,
0142 istream_tag
0143 { };
0144 struct ostringstream_tag
0145 : output_seekable,
0146 ostream_tag
0147 { };
0148 struct stringstream_tag
0149 : dual_seekable,
0150 iostream_tag
0151 { };
0152 struct stringbuf_tag
0153 : dual_seekable,
0154 streambuf_tag
0155 { };
0156 struct generic_istream_tag
0157 : input_seekable,
0158 istream_tag
0159 { };
0160 struct generic_ostream_tag
0161 : output_seekable,
0162 ostream_tag
0163 { };
0164 struct generic_iostream_tag
0165 : seekable,
0166 iostream_tag
0167 { };
0168 struct generic_streambuf_tag
0169 : seekable,
0170 streambuf_tag
0171 { };
0172
0173 } }
0174
0175 #endif