1 #ifndef VIENNACL_META_TAGOF_HPP_
2 #define VIENNACL_META_TAGOF_HPP_
31 #ifdef VIENNACL_WITH_UBLAS
32 #include <boost/numeric/ublas/matrix_sparse.hpp>
33 #include <boost/numeric/ublas/matrix.hpp>
34 #include <boost/numeric/ublas/vector.hpp>
37 #ifdef VIENNACL_WITH_EIGEN
39 #include <Eigen/Sparse>
42 #ifdef VIENNACL_WITH_MTL4
43 #include <boost/numeric/mtl/mtl.hpp>
79 template<
typename T,
typename Active =
void >
83 template <
typename Sequence,
typename Active >
89 #ifdef VIENNACL_WITH_MTL4
93 template <
typename ScalarType>
94 struct tag_of< mtl::dense_vector<ScalarType> >
99 template <
typename ScalarType>
100 struct tag_of< mtl::compressed2D<ScalarType> >
105 template <
typename ScalarType,
typename T>
106 struct tag_of< mtl::dense2D<ScalarType, T> >
113 #ifdef VIENNACL_WITH_EIGEN
118 struct tag_of< Eigen::VectorXf >
124 struct tag_of< Eigen::VectorXd >
130 struct tag_of< Eigen::MatrixXf >
136 struct tag_of< Eigen::MatrixXd >
141 template <
typename ScalarType,
int option>
142 struct tag_of< Eigen::SparseMatrix<ScalarType, option> >
149 #ifdef VIENNACL_WITH_UBLAS
153 template<
typename T >
154 struct tag_of< boost::numeric::ublas::vector<T> >
159 template<
typename T >
160 struct tag_of< boost::numeric::ublas::matrix<T> >
165 template<
typename T1,
typename T2 >
166 struct tag_of< boost::numeric::ublas::matrix_unary2<T1,T2> >
171 template<
typename T1,
typename T2 >
172 struct tag_of< boost::numeric::ublas::compressed_matrix<T1,T2> >
184 template<
typename T,
typename A >
185 struct tag_of< std::vector<T, A> >
191 template<
typename T,
typename A >
192 struct tag_of< std::vector<std::vector<T, A>, A> >
198 template<
typename KEY,
typename DATA,
typename COMPARE,
typename AMAP,
typename AVEC>
199 struct tag_of< std::vector<std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
208 template<
typename T,
unsigned int alignment >
209 struct tag_of< viennacl::vector<T, alignment> >
214 template<
typename T,
typename F,
unsigned int alignment >
215 struct tag_of< viennacl::matrix<T, F, alignment> >
220 template<
typename T1,
typename T2,
typename OP >
221 struct tag_of< viennacl::matrix_expression<T1,T2,OP> >
226 template<
typename T >
227 struct tag_of< viennacl::matrix_range<T> >
232 template<
typename T,
unsigned int I>
233 struct tag_of< viennacl::compressed_matrix<T,I> >
238 template<
typename T,
unsigned int I>
239 struct tag_of< viennacl::coordinate_matrix<T,I> >
244 template<
typename T,
unsigned int I>
245 struct tag_of< viennacl::ell_matrix<T,I> >
250 template<
typename T,
unsigned int I>
251 struct tag_of< viennacl::hyb_matrix<T,I> >
256 template<
typename T,
unsigned int I>
257 struct tag_of< viennacl::circulant_matrix<T,I> >
262 template<
typename T,
unsigned int I>
263 struct tag_of< viennacl::hankel_matrix<T,I> >
268 template<
typename T,
unsigned int I>
269 struct tag_of< viennacl::toeplitz_matrix<T,I> >
274 template<
typename T,
unsigned int I>
275 struct tag_of< viennacl::vandermonde_matrix<T,I> >
289 template <
typename Tag>
297 struct is_mtl4< viennacl::tag_mtl4 >
299 enum {
value =
true };
307 template <
typename Tag>
315 struct is_eigen< viennacl::tag_eigen >
317 enum {
value =
true };
326 template <
typename Tag>
334 struct is_ublas< viennacl::tag_ublas >
336 enum {
value =
true };
344 template <
typename Tag>
352 struct is_stl< viennacl::tag_stl >
354 enum {
value =
true };
363 template <
typename Tag>
371 struct is_viennacl< viennacl::tag_viennacl >
373 enum {
value =
true };
Meta function which checks whether a tag is tag_mtl4.
Definition: tag_of.hpp:290
Generic base for wrapping other linear algebra packages.
Definition: tag_of.hpp:80
Meta function which checks whether a tag is tag_ublas.
Definition: tag_of.hpp:345
Meta function which checks whether a tag is tag_ublas.
Definition: tag_of.hpp:327
A tag class for identifying 'unknown' types.
Definition: tag_of.hpp:53
Definition: tag_of.hpp:329
Definition: tag_of.hpp:347
Definition: tag_of.hpp:310
This file provides the forward declarations for the main types used within ViennaCL.
A tag class for identifying types from uBLAS.
Definition: tag_of.hpp:59
Meta function which checks whether a tag is tag_viennacl.
Definition: tag_of.hpp:364
Definition: tag_of.hpp:366
A tag class for identifying types from ViennaCL.
Definition: tag_of.hpp:63
A tag class for identifying types from the C++ STL.
Definition: tag_of.hpp:61
Definition: tag_of.hpp:292
A tag class for identifying types from Eigen.
Definition: tag_of.hpp:57
A tag class for identifying types from MTL4.
Definition: tag_of.hpp:55
Meta function which checks whether a tag is tag_eigen.
Definition: tag_of.hpp:308