Point2 specialized

release/4.3a0
dellaert 2014-10-18 14:22:01 +02:00
parent f08dc6c031
commit ec69949f43
1 changed files with 20 additions and 4 deletions

View File

@ -337,8 +337,7 @@ struct is_manifold: public false_type {
// dimension // dimension
template<typename T> template<typename T>
struct dimension: public integral_constant<size_t, T::dimension> { struct dimension;
};
// Fixed size Eigen::Matrix type // Fixed size Eigen::Matrix type
template<int M, int N, int Options> template<int M, int N, int Options>
@ -351,6 +350,16 @@ struct dimension<Eigen::Matrix<double, M, N, Options> > : public integral_consta
BOOST_STATIC_ASSERT(M!=Eigen::Dynamic && N!=Eigen::Dynamic); BOOST_STATIC_ASSERT(M!=Eigen::Dynamic && N!=Eigen::Dynamic);
}; };
// Point2
template<>
struct is_manifold<Point2> : public true_type {
};
template<>
struct dimension<Point2> : public integral_constant<size_t, 2> {
};
template<typename T> template<typename T>
struct manifold_traits { struct manifold_traits {
typedef T type; typedef T type;
@ -381,8 +390,15 @@ struct manifold_traits<Eigen::Matrix<double, M, N, Options> > {
} }
}; };
// Test dimension traits // is_manifold
TEST(Expression, Traits) { TEST(Expression, is_manifold) {
EXPECT(!is_manifold<int>::value);
EXPECT(is_manifold<Point2>::value);
EXPECT(is_manifold<Matrix24>::value);
}
// dimension
TEST(Expression, dimension) {
EXPECT_LONGS_EQUAL(2, dimension<Point2>::value); EXPECT_LONGS_EQUAL(2, dimension<Point2>::value);
EXPECT_LONGS_EQUAL(8, dimension<Matrix24>::value); EXPECT_LONGS_EQUAL(8, dimension<Matrix24>::value);
} }