Skip to content

Commit 63982b1

Browse files
committed
merge in develop with #1930 changes
2 parents e32ddd6 + bb7b6b3 commit 63982b1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+406
-323
lines changed

GTSAM-Concepts.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ In GTSAM, all properties and operations needed to use a type must be defined thr
2222
In detail, we ask that the following items are defined in the traits object (although, not all are needed for optimization):
2323

2424
* values:
25-
* `enum { dimension = D};`, an enum that indicates the dimensionality *n* of the manifold. In Eigen-fashion, we also support manifolds whose dimensionality is only defined at runtime, by specifying the value -1.
25+
* `inline constexpr static auto dimension = D;`, a constexpr that indicates the dimensionality *n* of the manifold. In Eigen-fashion, we also support manifolds whose dimensionality is only defined at runtime, by specifying the value -1.
2626
* types:
2727
* `TangentVector`, type that lives in tangent space. This will almost always be an `Eigen::Matrix<double,n,1>`.
2828
* `ChartJacobian`, a typedef for `OptionalJacobian<dimension, dimension>`.

gtsam/base/GenericValue.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,8 @@ class GenericValue: public Value {
184184
}
185185
#endif
186186

187-
188187
// Alignment, see https://eigen.tuxfamily.org/dox/group__TopicStructHavingEigenMembers.html
189-
enum { NeedsToAlign = (sizeof(T) % 16) == 0 };
188+
constexpr static const bool NeedsToAlign = (sizeof(T) % 16) == 0;
190189
public:
191190
GTSAM_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
192191
};

gtsam/base/Lie.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ namespace gtsam {
3636
template <class Class, int N>
3737
struct LieGroup {
3838

39-
enum { dimension = N };
39+
inline constexpr static auto dimension = N;
4040
typedef OptionalJacobian<N, N> ChartJacobian;
4141
typedef Eigen::Matrix<double, N, N> Jacobian;
4242
typedef Eigen::Matrix<double, N, 1> TangentVector;
@@ -183,7 +183,7 @@ struct LieGroupTraits: GetDimensionImpl<Class, Class::dimension> {
183183
/// @name Manifold
184184
/// @{
185185
typedef Class ManifoldType;
186-
enum { dimension = Class::dimension };
186+
inline constexpr static auto dimension = Class::dimension;
187187
typedef Eigen::Matrix<double, dimension, 1> TangentVector;
188188
typedef OptionalJacobian<dimension, dimension> ChartJacobian;
189189

gtsam/base/Manifold.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ namespace internal {
5555
template<class Class>
5656
struct HasManifoldPrereqs {
5757

58-
enum { dim = Class::dimension };
58+
inline constexpr static auto dim = Class::dimension;
5959

6060
Class p, q;
6161
Eigen::Matrix<double, dim, 1> v;
@@ -95,7 +95,7 @@ struct ManifoldTraits: GetDimensionImpl<Class, Class::dimension> {
9595
GTSAM_CONCEPT_ASSERT(HasManifoldPrereqs<Class>);
9696

9797
// Dimension of the manifold
98-
enum { dimension = Class::dimension };
98+
inline constexpr static auto dimension = Class::dimension;
9999

100100
// Typedefs required by all manifold types.
101101
typedef Class ManifoldType;

gtsam/base/Matrix.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ struct MultiplyWithInverse {
479479
*/
480480
template <typename T, int N>
481481
struct MultiplyWithInverseFunction {
482-
enum { M = traits<T>::dimension };
482+
inline constexpr static auto M = traits<T>::dimension;
483483
typedef Eigen::Matrix<double, N, 1> VectorN;
484484
typedef Eigen::Matrix<double, N, N> MatrixN;
485485

gtsam/base/ProductLieGroup.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ class ProductLieGroup: public std::pair<G, H> {
3232
typedef std::pair<G, H> Base;
3333

3434
protected:
35-
enum {dimension1 = traits<G>::dimension};
36-
enum {dimension2 = traits<H>::dimension};
35+
constexpr static const size_t dimension1 = traits<G>::dimension;
36+
constexpr static const size_t dimension2 = traits<H>::dimension;
3737

3838
public:
3939
/// Default constructor yields identity
@@ -67,9 +67,9 @@ class ProductLieGroup: public std::pair<G, H> {
6767

6868
/// @name Manifold
6969
/// @{
70-
enum {dimension = dimension1 + dimension2};
71-
inline static size_t Dim() {return dimension;}
72-
inline size_t dim() const {return dimension;}
70+
inline constexpr static auto dimension = dimension1 + dimension2;
71+
inline static size_t Dim() { return dimension; }
72+
inline size_t dim() const { return dimension; }
7373

7474
typedef Eigen::Matrix<double, dimension, 1> TangentVector;
7575
typedef OptionalJacobian<dimension, dimension> ChartJacobian;

gtsam/base/VectorSpace.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ struct VectorSpaceImpl<Class,Eigen::Dynamic> {
163163
template<class Class>
164164
struct HasVectorSpacePrereqs {
165165

166-
enum { dim = Class::dimension };
166+
inline constexpr static auto dim = Class::dimension;
167167

168168
Class p, q;
169169
Vector v;
@@ -197,7 +197,7 @@ GTSAM_CONCEPT_ASSERT(HasVectorSpacePrereqs<Class>);
197197

198198
/// @name Manifold
199199
/// @{
200-
enum { dimension = Class::dimension};
200+
inline constexpr static auto dimension = Class::dimension;
201201
typedef Class ManifoldType;
202202
/// @}
203203
};
@@ -232,7 +232,7 @@ struct ScalarTraits : VectorSpaceImpl<Scalar, 1> {
232232
/// @name Manifold
233233
/// @{
234234
typedef Scalar ManifoldType;
235-
enum { dimension = 1 };
235+
inline constexpr static auto dimension = 1;
236236
typedef Eigen::Matrix<double, 1, 1> TangentVector;
237237
typedef OptionalJacobian<1, 1> ChartJacobian;
238238

@@ -305,7 +305,7 @@ struct traits<Eigen::Matrix<double, M, N, Options, MaxRows, MaxCols> > :
305305

306306
/// @name Manifold
307307
/// @{
308-
enum { dimension = M*N};
308+
inline constexpr static auto dimension = M * N;
309309
typedef Fixed ManifoldType;
310310
typedef Eigen::Matrix<double, dimension, 1> TangentVector;
311311
typedef Eigen::Matrix<double, dimension, dimension> Jacobian;
@@ -377,7 +377,7 @@ struct DynamicTraits {
377377

378378
/// @name Manifold
379379
/// @{
380-
enum { dimension = Eigen::Dynamic };
380+
inline constexpr static auto dimension = Eigen::Dynamic;
381381
typedef Eigen::VectorXd TangentVector;
382382
typedef Eigen::MatrixXd Jacobian;
383383
typedef OptionalJacobian<dimension, dimension> ChartJacobian;

gtsam/basis/Basis.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ class Basis {
291291
*/
292292
template <class T>
293293
class ManifoldEvaluationFunctor : public VectorEvaluationFunctor {
294-
enum { M = traits<T>::dimension };
294+
inline constexpr static auto M = traits<T>::dimension;
295295
using Base = VectorEvaluationFunctor;
296296

297297
public:

gtsam/discrete/DecisionTreeFactor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace gtsam {
4848
return false;
4949
} else {
5050
const auto& f(static_cast<const DecisionTreeFactor&>(other));
51-
return ADT::equals(f, tol);
51+
return Base::equals(other, tol) && ADT::equals(f, tol);
5252
}
5353
}
5454

gtsam/discrete/DiscreteFactor.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ using namespace std;
2828

2929
namespace gtsam {
3030

31+
/* ************************************************************************* */
32+
bool DiscreteFactor::equals(const DiscreteFactor& lf, double tol) const {
33+
return Base::equals(lf, tol) && cardinalities_ == lf.cardinalities_;
34+
}
35+
3136
/* ************************************************************************ */
3237
DiscreteKeys DiscreteFactor::discreteKeys() const {
3338
DiscreteKeys result;

0 commit comments

Comments
 (0)