support 4 concept asserts

release/4.3a0
Frank Dellaert 2023-02-06 01:03:33 -08:00
parent 7afccbc446
commit 29c25970ad
2 changed files with 15 additions and 12 deletions

View File

@ -15,14 +15,17 @@
#define GTSAM_CONCEPT_ASSERT1(concept) BOOST_CONCEPT_ASSERT((concept))
#define GTSAM_CONCEPT_ASSERT2(concept) BOOST_CONCEPT_ASSERT((concept))
#define GTSAM_CONCEPT_ASSERT3(concept) BOOST_CONCEPT_ASSERT((concept))
#define GTSAM_CONCEPT_ASSERT4(concept) BOOST_CONCEPT_ASSERT((concept))
#define GTSAM_CONCEPT_REQUIRES(concept, return_type) BOOST_CONCEPT_REQUIRES((concept), (return_type))
#else
// These do something sensible:
#define GTSAM_CONCEPT_USAGE(concept) void check##concept()
// TODO(dellaert): would be nice if it was a single macro...
#define GTSAM_CONCEPT_ASSERT(concept) concept checkConcept [[maybe_unused]];
#define GTSAM_CONCEPT_ASSERT1(concept) concept checkConcept1 [[maybe_unused]];
#define GTSAM_CONCEPT_ASSERT2(concept) concept checkConcept2 [[maybe_unused]];
#define GTSAM_CONCEPT_ASSERT3(concept) concept checkConcept3 [[maybe_unused]];
#define GTSAM_CONCEPT_ASSERT4(concept) concept checkConcept4 [[maybe_unused]];
// This one just ignores concept for now:
#define GTSAM_CONCEPT_REQUIRES(concept, return_type) return_type
#endif

View File

@ -38,26 +38,26 @@ typedef PinholeCamera<Cal3Bundler> Camera;
//******************************************************************************
TEST(Manifold, SomeManifoldsGTSAM) {
//GTSAM_CONCEPT_ASSERT(IsManifold<int>); // integer is not a manifold
GTSAM_CONCEPT_ASSERT(IsManifold<Camera>);
GTSAM_CONCEPT_ASSERT(IsManifold<Cal3_S2>);
GTSAM_CONCEPT_ASSERT(IsManifold<Cal3Bundler>);
GTSAM_CONCEPT_ASSERT(IsManifold<Camera>);
GTSAM_CONCEPT_ASSERT1(IsManifold<Camera>);
GTSAM_CONCEPT_ASSERT2(IsManifold<Cal3_S2>);
GTSAM_CONCEPT_ASSERT3(IsManifold<Cal3Bundler>);
GTSAM_CONCEPT_ASSERT4(IsManifold<Camera>);
}
//******************************************************************************
TEST(Manifold, SomeLieGroupsGTSAM) {
GTSAM_CONCEPT_ASSERT(IsLieGroup<Rot2>);
GTSAM_CONCEPT_ASSERT(IsLieGroup<Pose2>);
GTSAM_CONCEPT_ASSERT(IsLieGroup<Rot3>);
GTSAM_CONCEPT_ASSERT(IsLieGroup<Pose3>);
GTSAM_CONCEPT_ASSERT1(IsLieGroup<Rot2>);
GTSAM_CONCEPT_ASSERT2(IsLieGroup<Pose2>);
GTSAM_CONCEPT_ASSERT3(IsLieGroup<Rot3>);
GTSAM_CONCEPT_ASSERT4(IsLieGroup<Pose3>);
}
//******************************************************************************
TEST(Manifold, SomeVectorSpacesGTSAM) {
GTSAM_CONCEPT_ASSERT(IsVectorSpace<double>);
GTSAM_CONCEPT_ASSERT(IsVectorSpace<float>);
GTSAM_CONCEPT_ASSERT(IsVectorSpace<Point2>);
GTSAM_CONCEPT_ASSERT(IsVectorSpace<Matrix24>);
GTSAM_CONCEPT_ASSERT1(IsVectorSpace<double>);
GTSAM_CONCEPT_ASSERT2(IsVectorSpace<float>);
GTSAM_CONCEPT_ASSERT3(IsVectorSpace<Point2>);
GTSAM_CONCEPT_ASSERT4(IsVectorSpace<Matrix24>);
}
//******************************************************************************