00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef MTL_TAG_INCLUDE
00013 #define MTL_TAG_INCLUDE
00014
00015 #include <boost/numeric/mtl/utility/glas_tag.hpp>
00016
00017
00018 namespace mtl { namespace tag {
00019
00024
00025
00026 struct unsupported {};
00027
00029 struct universe {};
00030
00031
00033 struct scalar : virtual universe {};
00034
00036
00037 struct unknown : virtual scalar {};
00038
00040 struct collection : virtual universe {};
00041
00043 struct vector : virtual collection {};
00044
00046 struct col_vector : virtual vector {};
00047
00049 struct row_vector : virtual vector {};
00050
00052 struct matrix : virtual collection {};
00053
00055 struct dense : virtual universe {};
00056
00058
00059 struct has_1D_layout : virtual dense {};
00060
00062
00063 struct has_2D_layout : virtual dense {};
00064
00066 struct sparse : virtual universe {};
00067
00069 struct contiguous_memory : virtual universe {};
00070
00072
00073 struct contiguous_dense : virtual dense, virtual contiguous_memory {};
00074
00076 struct has_iterator : virtual universe {};
00077
00079 struct has_ra_iterator : virtual has_iterator {};
00080
00082
00084 struct has_fast_ra_iterator : virtual has_ra_iterator {};
00085
00087 struct has_cursor : virtual universe {};
00088
00090 struct has_ra_cursor : virtual has_cursor {};
00091
00093
00095 struct has_fast_ra_cursor : virtual has_ra_cursor {};
00096
00098 struct has_sub_matrix : virtual universe {};
00099
00101
00102 struct qsub_dividable : virtual has_sub_matrix {};
00103
00105 struct sub_dividable : virtual qsub_dividable {};
00106
00108 struct dense_row_vector
00109 : virtual row_vector, virtual contiguous_dense,
00110 virtual has_fast_ra_iterator, virtual has_fast_ra_cursor, virtual has_1D_layout
00111 {};
00112
00114 struct dense_col_vector
00115 : virtual col_vector, virtual contiguous_dense,
00116 virtual has_fast_ra_iterator, virtual has_fast_ra_cursor, virtual has_1D_layout
00117 {};
00118
00120 struct strided_row_vector
00121 : virtual row_vector,
00122 virtual has_fast_ra_iterator, virtual has_fast_ra_cursor, virtual has_1D_layout
00123 {};
00124
00126 struct strided_col_vector
00127 : virtual col_vector,
00128 virtual has_fast_ra_iterator, virtual has_fast_ra_cursor, virtual has_1D_layout
00129 {};
00130
00132 struct std_vector
00133 : virtual vector, virtual contiguous_dense, virtual has_1D_layout
00134 {};
00135
00137
00139 struct dense2D_view
00140 : virtual matrix, virtual contiguous_dense, virtual has_fast_ra_cursor
00141
00142 {};
00143
00145 struct dense2D
00146 : virtual dense2D_view, virtual has_fast_ra_iterator, virtual has_2D_layout
00147 {};
00148
00150
00151 struct morton_view
00152 : virtual matrix, virtual contiguous_dense,
00153 virtual has_ra_cursor
00154 {};
00155
00156
00158 struct morton_dense
00159 : virtual morton_view, virtual has_ra_iterator
00160 {};
00161
00163
00164 struct compressed2D_view
00165 : virtual matrix, virtual sparse, virtual has_cursor
00166 {};
00167
00169 struct compressed2D
00170 : virtual compressed2D_view, virtual has_iterator
00171 {};
00172
00174
00175 struct multi_vector
00176 : virtual matrix, virtual dense
00177 {};
00178
00180
00181 struct transposed_multi_vector
00182 : virtual matrix, virtual dense
00183 {};
00184
00186
00187 struct hermitian_multi_vector
00188 : virtual matrix, virtual dense
00189 {};
00190
00192
00193 struct bottom
00194 : virtual compressed2D, virtual morton_dense, virtual dense2D,
00195 virtual dense_col_vector, virtual dense_row_vector, virtual unknown,
00196 virtual multi_vector
00197 {};
00198
00199
00200
00201
00202
00203
00205 struct row_major {};
00206
00208 struct col_major {};
00209
00211 struct universe_diagonal {};
00212
00214 struct regular_diagonal : universe_diagonal {};
00215
00217 struct unit_diagonal : universe_diagonal {};
00218
00220
00223 struct inverse_diagonal : universe_diagonal {};
00224
00225
00226
00227
00229
00230 }
00231
00236
00237 using tag::row_major;
00238
00240 using tag::col_major;
00241
00242
00243
00245
00246
00247
00248
00249
00250
00251 namespace tag {
00252
00257
00258
00259 using glas::tag::nz;
00260
00262
00263 using glas::tag::all;
00264
00266 using glas::tag::row;
00268 using glas::tag::col;
00269
00271
00273 using glas::tag::major;
00274
00276
00278 using glas::tag::minor;
00279
00280
00281
00282 namespace iter {
00283
00285
00286 struct nz {};
00287
00289
00290 struct all {};
00291
00292 }
00293
00294
00295
00296 namespace const_iter {
00297
00299
00300 struct nz {};
00301
00303
00304 struct all {};
00305
00306 }
00307
00309
00310 }
00311
00312
00313 }
00314
00315 #endif // MTL_TAG_INCLUDE