@@ -50,41 +50,56 @@ DiscreteKeys CollectDiscreteKeys(const DiscreteKeys &key1,
50
50
51
51
/* ************************************************************************ */
52
52
HybridFactor::HybridFactor (const KeyVector &keys)
53
- : Base(keys), isContinuous_(true ), continuousKeys_(keys) {}
53
+ : Base(keys),
54
+ category_ (HybridCategory::Continuous),
55
+ continuousKeys_(keys) {}
54
56
55
57
/* ************************************************************************ */
56
58
HybridFactor::HybridFactor (const KeyVector &continuousKeys,
57
59
const DiscreteKeys &discreteKeys)
58
60
: Base(CollectKeys(continuousKeys, discreteKeys)),
59
- isDiscrete_ ((continuousKeys.size() == 0) && (discreteKeys.size() != 0)),
60
- isContinuous_((continuousKeys.size() != 0) && (discreteKeys.size() == 0)),
61
- isHybrid_((continuousKeys.size() != 0) && (discreteKeys.size() != 0)),
62
61
discreteKeys_(discreteKeys),
63
- continuousKeys_(continuousKeys) {}
62
+ continuousKeys_(continuousKeys) {
63
+ if ((continuousKeys.size () == 0 ) && (discreteKeys.size () != 0 )) {
64
+ category_ = HybridCategory::Discrete;
65
+ } else if ((continuousKeys.size () != 0 ) && (discreteKeys.size () == 0 )) {
66
+ category_ = HybridCategory::Continuous;
67
+ } else {
68
+ category_ = HybridCategory::Hybrid;
69
+ }
70
+ }
64
71
65
72
/* ************************************************************************ */
66
73
HybridFactor::HybridFactor (const DiscreteKeys &discreteKeys)
67
74
: Base(CollectKeys({}, discreteKeys)),
68
- isDiscrete_( true ),
75
+ category_(HybridCategory::Discrete ),
69
76
discreteKeys_(discreteKeys),
70
77
continuousKeys_({}) {}
71
78
72
79
/* ************************************************************************ */
73
80
bool HybridFactor::equals (const HybridFactor &lf, double tol) const {
74
81
const This *e = dynamic_cast <const This *>(&lf);
75
- return e != nullptr && Base::equals (*e, tol) &&
76
- isDiscrete_ == e->isDiscrete_ && isContinuous_ == e->isContinuous_ &&
77
- isHybrid_ == e->isHybrid_ && continuousKeys_ == e->continuousKeys_ &&
82
+ return e != nullptr && Base::equals (*e, tol) && category_ == e->category_ &&
83
+ continuousKeys_ == e->continuousKeys_ &&
78
84
discreteKeys_ == e->discreteKeys_ ;
79
85
}
80
86
81
87
/* ************************************************************************ */
82
88
void HybridFactor::print (const std::string &s,
83
89
const KeyFormatter &formatter) const {
84
90
std::cout << (s.empty () ? " " : s + " \n " );
85
- if (isContinuous_) std::cout << " Continuous " ;
86
- if (isDiscrete_) std::cout << " Discrete " ;
87
- if (isHybrid_) std::cout << " Hybrid " ;
91
+ switch (category_) {
92
+ case HybridCategory::Continuous:
93
+ std::cout << " Continuous " ;
94
+ break ;
95
+ case HybridCategory::Discrete:
96
+ std::cout << " Discrete " ;
97
+ break ;
98
+ case HybridCategory::Hybrid:
99
+ std::cout << " Hybrid " ;
100
+ break ;
101
+ }
102
+
88
103
std::cout << " [" ;
89
104
for (size_t c = 0 ; c < continuousKeys_.size (); c++) {
90
105
std::cout << formatter (continuousKeys_.at (c));
0 commit comments