From 29c25970adf5246f37e0357bfba32d642775b3b3 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 6 Feb 2023 01:03:33 -0800 Subject: [PATCH] support 4 concept asserts --- gtsam/base/concepts.h | 3 +++ tests/testManifold.cpp | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/gtsam/base/concepts.h b/gtsam/base/concepts.h index 8962dd28d..fe73e3c66 100644 --- a/gtsam/base/concepts.h +++ b/gtsam/base/concepts.h @@ -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 diff --git a/tests/testManifold.cpp b/tests/testManifold.cpp index 5e93da2f5..6b853061b 100644 --- a/tests/testManifold.cpp +++ b/tests/testManifold.cpp @@ -38,26 +38,26 @@ typedef PinholeCamera Camera; //****************************************************************************** TEST(Manifold, SomeManifoldsGTSAM) { //GTSAM_CONCEPT_ASSERT(IsManifold); // integer is not a manifold - GTSAM_CONCEPT_ASSERT(IsManifold); - GTSAM_CONCEPT_ASSERT(IsManifold); - GTSAM_CONCEPT_ASSERT(IsManifold); - GTSAM_CONCEPT_ASSERT(IsManifold); + GTSAM_CONCEPT_ASSERT1(IsManifold); + GTSAM_CONCEPT_ASSERT2(IsManifold); + GTSAM_CONCEPT_ASSERT3(IsManifold); + GTSAM_CONCEPT_ASSERT4(IsManifold); } //****************************************************************************** TEST(Manifold, SomeLieGroupsGTSAM) { - GTSAM_CONCEPT_ASSERT(IsLieGroup); - GTSAM_CONCEPT_ASSERT(IsLieGroup); - GTSAM_CONCEPT_ASSERT(IsLieGroup); - GTSAM_CONCEPT_ASSERT(IsLieGroup); + GTSAM_CONCEPT_ASSERT1(IsLieGroup); + GTSAM_CONCEPT_ASSERT2(IsLieGroup); + GTSAM_CONCEPT_ASSERT3(IsLieGroup); + GTSAM_CONCEPT_ASSERT4(IsLieGroup); } //****************************************************************************** TEST(Manifold, SomeVectorSpacesGTSAM) { - GTSAM_CONCEPT_ASSERT(IsVectorSpace); - GTSAM_CONCEPT_ASSERT(IsVectorSpace); - GTSAM_CONCEPT_ASSERT(IsVectorSpace); - GTSAM_CONCEPT_ASSERT(IsVectorSpace); + GTSAM_CONCEPT_ASSERT1(IsVectorSpace); + GTSAM_CONCEPT_ASSERT2(IsVectorSpace); + GTSAM_CONCEPT_ASSERT3(IsVectorSpace); + GTSAM_CONCEPT_ASSERT4(IsVectorSpace); } //******************************************************************************