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_ARMADILLO
41 #ifdef VIENNACL_WITH_EIGEN
43 #include <Eigen/Sparse>
46 #ifdef VIENNACL_WITH_MTL4
47 #include <boost/numeric/mtl/mtl.hpp>
83 template<
typename T,
typename Active =
void >
87 template<
typename Sequence,
typename Active >
93 #ifdef VIENNACL_WITH_MTL4
97 template<
typename ScalarType>
98 struct tag_of< mtl::dense_vector<ScalarType> >
103 template<
typename ScalarType>
104 struct tag_of< mtl::compressed2D<ScalarType> >
109 template<
typename ScalarType,
typename T>
110 struct tag_of< mtl::dense2D<ScalarType, T> >
117 #ifdef VIENNACL_WITH_EIGEN
122 struct tag_of< Eigen::VectorXf >
128 struct tag_of< Eigen::VectorXd >
134 struct tag_of< Eigen::MatrixXf >
140 struct tag_of< Eigen::MatrixXd >
145 template<
typename ScalarType,
int option>
146 struct tag_of< Eigen::SparseMatrix<ScalarType, option> >
153 #ifdef VIENNACL_WITH_UBLAS
157 template<
typename T >
158 struct tag_of< boost::numeric::ublas::vector<T> >
163 template<
typename T >
164 struct tag_of< boost::numeric::ublas::matrix<T> >
169 template<
typename T1,
typename T2 >
170 struct tag_of< boost::numeric::ublas::matrix_unary2<T1,T2> >
175 template<
typename T1,
typename T2 >
176 struct tag_of< boost::numeric::ublas::compressed_matrix<T1,T2> >
188 template<
typename T,
typename A >
189 struct tag_of< std::vector<T, A> >
195 template<
typename T,
typename A >
196 struct tag_of< std::vector<std::vector<T, A>, A> >
202 template<
typename KEY,
typename DATA,
typename COMPARE,
typename AMAP,
typename AVEC>
203 struct tag_of< std::vector<std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
212 template<
typename T,
unsigned int alignment >
213 struct tag_of< viennacl::vector<T, alignment> >
218 template<
typename T,
typename F,
unsigned int alignment >
219 struct tag_of< viennacl::matrix<T, F, alignment> >
224 template<
typename T1,
typename T2,
typename OP >
225 struct tag_of< viennacl::matrix_expression<T1,T2,OP> >
230 template<
typename T >
231 struct tag_of< viennacl::matrix_range<T> >
236 template<
typename T,
unsigned int I>
237 struct tag_of< viennacl::compressed_matrix<T,I> >
242 template<
typename T,
unsigned int I>
243 struct tag_of< viennacl::coordinate_matrix<T,I> >
248 template<
typename T,
unsigned int I>
249 struct tag_of< viennacl::ell_matrix<T,I> >
254 template<
typename T,
typename I>
255 struct tag_of< viennacl::sliced_ell_matrix<T,I> >
261 template<
typename T,
unsigned int I>
262 struct tag_of< viennacl::hyb_matrix<T,I> >
267 template<
typename T,
unsigned int I>
268 struct tag_of< viennacl::circulant_matrix<T,I> >
273 template<
typename T,
unsigned int I>
274 struct tag_of< viennacl::hankel_matrix<T,I> >
279 template<
typename T,
unsigned int I>
280 struct tag_of< viennacl::toeplitz_matrix<T,I> >
285 template<
typename T,
unsigned int I>
286 struct tag_of< viennacl::vandermonde_matrix<T,I> >
300 template<
typename Tag>
308 struct is_mtl4< viennacl::tag_mtl4 >
310 enum {
value =
true };
318 template<
typename Tag>
326 struct is_eigen< viennacl::tag_eigen >
328 enum {
value =
true };
337 template<
typename Tag>
345 struct is_ublas< viennacl::tag_ublas >
347 enum {
value =
true };
355 template<
typename Tag>
363 struct is_stl< viennacl::tag_stl >
365 enum {
value =
true };
374 template<
typename Tag>
382 struct is_viennacl< viennacl::tag_viennacl >
384 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.
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.