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,
typename I>
251 struct tag_of<
viennacl::sliced_ell_matrix<T,I> >
257 template<
typename T,
unsigned int I>
258 struct tag_of<
viennacl::hyb_matrix<T,I> >
263 template<
typename T,
unsigned int I>
264 struct tag_of<
viennacl::circulant_matrix<T,I> >
269 template<
typename T,
unsigned int I>
270 struct tag_of<
viennacl::hankel_matrix<T,I> >
275 template<
typename T,
unsigned int I>
276 struct tag_of<
viennacl::toeplitz_matrix<T,I> >
281 template<
typename T,
unsigned int I>
282 struct tag_of<
viennacl::vandermonde_matrix<T,I> >
296 template<
typename Tag>
304 struct is_mtl4<
viennacl::tag_mtl4 >
306 enum {
value =
true };
314 template<
typename Tag>
322 struct is_eigen<
viennacl::tag_eigen >
324 enum {
value =
true };
333 template<
typename Tag>
341 struct is_ublas<
viennacl::tag_ublas >
343 enum {
value =
true };
351 template<
typename Tag>
361 enum {
value =
true };
370 template<
typename Tag>
378 struct is_viennacl<
viennacl::tag_viennacl >
380 enum {
value =
true };
Meta function which checks whether a tag is tag_mtl4.
Generic base for wrapping other linear algebra packages.
Meta function which checks whether a tag is tag_ublas.
Meta function which checks whether a tag is tag_ublas.
A tag class for identifying 'unknown' types.
This file provides the forward declarations for the main types used within ViennaCL.
A tag class for identifying types from uBLAS.
Meta function which checks whether a tag is tag_viennacl.
Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them.
A tag class for identifying types from ViennaCL.
A tag class for identifying types from the C++ STL.
A tag class for identifying types from Eigen.
A tag class for identifying types from MTL4.
Meta function which checks whether a tag is tag_eigen.