Skip to content

Commit 4302ee3

Browse files
committed
make None the default HybridCategory
1 parent 97eb6bc commit 4302ee3

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

gtsam/hybrid/HybridFactor.cpp

+19-8
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,28 @@ HybridFactor::HybridFactor(const KeyVector &keys)
5555
continuousKeys_(keys) {}
5656

5757
/* ************************************************************************ */
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) {
6360
if ((continuousKeys.size() == 0) && (discreteKeys.size() != 0)) {
64-
category_ = HybridCategory::Discrete;
61+
return HybridCategory::Discrete;
6562
} 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;
6766
} else {
68-
category_ = HybridCategory::Hybrid;
67+
// Case where we have no keys. Should never happen.
68+
return HybridCategory::None;
6969
}
7070
}
7171

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+
7280
/* ************************************************************************ */
7381
HybridFactor::HybridFactor(const DiscreteKeys &discreteKeys)
7482
: Base(CollectKeys({}, discreteKeys)),
@@ -98,6 +106,9 @@ void HybridFactor::print(const std::string &s,
98106
case HybridCategory::Hybrid:
99107
std::cout << "Hybrid ";
100108
break;
109+
case HybridCategory::None:
110+
std::cout << "None ";
111+
break;
101112
}
102113

103114
std::cout << "[";

gtsam/hybrid/HybridFactor.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ DiscreteKeys CollectDiscreteKeys(const DiscreteKeys &key1,
4242
const DiscreteKeys &key2);
4343

4444
/// Enum to help with categorizing hybrid factors.
45-
enum class HybridCategory { Discrete, Continuous, Hybrid };
45+
enum class HybridCategory { None, Discrete, Continuous, Hybrid };
4646

4747
/**
4848
* Base class for *truly* hybrid probabilistic factors
@@ -57,7 +57,7 @@ enum class HybridCategory { Discrete, Continuous, Hybrid };
5757
class GTSAM_EXPORT HybridFactor : public Factor {
5858
private:
5959
/// Record what category of HybridFactor this is.
60-
HybridCategory category_;
60+
HybridCategory category_ = HybridCategory::None;
6161

6262
protected:
6363
// Set of DiscreteKeys for this factor.

0 commit comments

Comments
 (0)