7 #ifndef MDS_UTILS_UBLAS_TRAITS_HPP_INCLUDED 8 #define MDS_UTILS_UBLAS_TRAITS_HPP_INCLUDED 26 #include <boost/numeric/ublas/matrix.hpp> 27 #include <boost/numeric/ublas/matrix_sparse.hpp> 28 #include <boost/mpl/if.hpp> 29 #include <boost/mpl/and.hpp> 30 #include <boost/mpl/not.hpp> 31 #include <boost/mpl/has_xxx.hpp> 55 BOOST_MPL_HAS_XXX_TRAIT_DEF(storage_category)
68 BOOST_MPL_HAS_XXX_TRAIT_DEF(index_array_type)
81 BOOST_MPL_HAS_XXX_TRAIT_DEF(value_array_type)
84 template<
class T,
class Enable =
void>
86 struct is_vector : std::false_type {};
88 template<
class T,
class Enable =
void>
89 struct is_matrix : std::false_type {};
91 template<
class T,
class Enable =
void>
92 struct is_compressed_matrix : std::false_type {};
114 typename
std::enable_if<
117 boost::numeric::ublas::vector_container<T>,
120 has_storage_category<T>,
122 typename T::storage_category,
123 boost::numeric::ublas::dense_tag
127 > : std::true_type {};
148 typename std::enable_if<
151 boost::numeric::ublas::matrix_container<T>,
154 has_storage_category<T>,
156 typename T::storage_category,
157 boost::numeric::ublas::dense_tag
161 > : std::true_type {};
182 struct is_compressed_matrix<T,
183 typename std::enable_if<
186 boost::numeric::ublas::matrix_container<T>,
189 has_storage_category<T>,
190 has_index_array_type<T>,
191 has_value_array_type<T>,
193 typename T::storage_category,
194 boost::numeric::ublas::sparse_tag
198 > : std::true_type {};
216 template<
class orientation_category>
222 typedef boost::numeric::ublas::column_major type;
227 typedef boost::numeric::ublas::row_major type;
Main namespace of all Michele De Stefano's C++ utilities.
Allows the computation of the opposite orientation tag with respect to the one passed as template par...