@@ -55,20 +55,28 @@ HybridFactor::HybridFactor(const KeyVector &keys)
55
55
continuousKeys_(keys) {}
56
56
57
57
/* ************************************************************************ */
58
- HybridFactor::HybridFactor (const KeyVector &continuousKeys,
59
- const DiscreteKeys &discreteKeys)
60
- : Base(CollectKeys(continuousKeys, discreteKeys)),
61
- discreteKeys_(discreteKeys),
62
- continuousKeys_(continuousKeys) {
58
+ HybridCategory GetCategory (const KeyVector &continuousKeys,
59
+ const DiscreteKeys &discreteKeys) {
63
60
if ((continuousKeys.size () == 0 ) && (discreteKeys.size () != 0 )) {
64
- category_ = HybridCategory::Discrete;
61
+ return HybridCategory::Discrete;
65
62
} else if ((continuousKeys.size () != 0 ) && (discreteKeys.size () == 0 )) {
66
- category_ = HybridCategory::Continuous;
63
+ return HybridCategory::Continuous;
64
+ } else if ((continuousKeys.size () != 0 ) && (discreteKeys.size () != 0 )) {
65
+ return HybridCategory::Hybrid;
67
66
} else {
68
- category_ = HybridCategory::Hybrid;
67
+ // Case where we have no keys. Should never happen.
68
+ return HybridCategory::None;
69
69
}
70
70
}
71
71
72
+ /* ************************************************************************ */
73
+ HybridFactor::HybridFactor (const KeyVector &continuousKeys,
74
+ const DiscreteKeys &discreteKeys)
75
+ : Base(CollectKeys(continuousKeys, discreteKeys)),
76
+ category_(GetCategory(continuousKeys, discreteKeys)),
77
+ discreteKeys_(discreteKeys),
78
+ continuousKeys_(continuousKeys) {}
79
+
72
80
/* ************************************************************************ */
73
81
HybridFactor::HybridFactor (const DiscreteKeys &discreteKeys)
74
82
: Base(CollectKeys({}, discreteKeys)),
@@ -98,6 +106,9 @@ void HybridFactor::print(const std::string &s,
98
106
case HybridCategory::Hybrid:
99
107
std::cout << " Hybrid " ;
100
108
break ;
109
+ case HybridCategory::None:
110
+ std::cout << " None " ;
111
+ break ;
101
112
}
102
113
103
114
std::cout << " [" ;
0 commit comments