00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef MTL_TRAITS_EVAL_DENSE_INCLUDE
00013 #define MTL_TRAITS_EVAL_DENSE_INCLUDE
00014
00015 #include <boost/mpl/bool.hpp>
00016 #include <boost/numeric/mtl/mtl_fwd.hpp>
00017
00018 namespace mtl { namespace traits {
00019
00020
00021 template <typename T>
00022 struct eval_dense
00023 : boost::mpl::false_
00024 {};
00025
00026 template <typename Value, typename Parameter>
00027 struct eval_dense< mtl::vector::dense_vector<Value, Parameter> >
00028 : boost::mpl::true_
00029 {};
00030
00031 template <typename Value, typename Parameter>
00032 struct eval_dense< mtl::matrix::dense2D<Value, Parameter> >
00033 : boost::mpl::true_
00034 {};
00035
00036 template <typename Value, long unsigned Mask, typename Parameter>
00037 struct eval_dense< mtl::matrix::morton_dense<Value, Mask, Parameter> >
00038 : boost::mpl::true_
00039 {};
00040
00041
00042
00043 template <typename Value1, typename Vector>
00044 struct eval_dense< mtl::vector::scaled_view<Value1, Vector> >
00045 : eval_dense<Vector>
00046 {};
00047
00048 template <typename Value1, typename Vector>
00049 struct eval_dense< mtl::vector::rscaled_view<Value1, Vector> >
00050 : eval_dense<Vector>
00051 {};
00052
00053
00054
00055 template <typename E1, typename E2>
00056 struct eval_dense< mtl::matrix::mat_mat_asgn_expr<E1, E2> >
00057 : boost::mpl::bool_< eval_dense<E1>::value && eval_dense<E2>::value >
00058 {};
00059
00060 template <typename E1, typename E2>
00061 struct eval_dense< mtl::matrix::mat_mat_plus_expr<E1, E2> >
00062 : boost::mpl::bool_< eval_dense<E1>::value && eval_dense<E2>::value >
00063 {};
00064
00065 template <typename E1, typename E2>
00066 struct eval_dense< mtl::matrix::mat_mat_minus_expr<E1, E2> >
00067 : boost::mpl::bool_< eval_dense<E1>::value && eval_dense<E2>::value >
00068 {};
00069
00070 template <typename E1, typename E2>
00071 struct eval_dense< mtl::matrix::mat_mat_ele_times_expr<E1, E2> >
00072 : boost::mpl::bool_< eval_dense<E1>::value && eval_dense<E2>::value >
00073 {};
00074
00075 template <typename Value1, typename Matrix>
00076 struct eval_dense< mtl::matrix::scaled_view<Value1, Matrix> >
00077 : eval_dense<Matrix>
00078 {};
00079
00080 template <typename Value1, typename Matrix>
00081 struct eval_dense< mtl::matrix::rscaled_view<Value1, Matrix> >
00082 : eval_dense<Matrix>
00083 {};
00084
00085
00086 }}
00087
00088 #endif // MTL_TRAITS_EVAL_DENSE_INCLUDE