make None the default HybridCategory

release/4.3a0
Varun Agrawal 2024-09-16 13:30:07 -04:00
parent 97eb6bc8b9
commit 4302ee33c9
2 changed files with 22 additions and 11 deletions

View File

@ -54,20 +54,28 @@ HybridFactor::HybridFactor(const KeyVector &keys)
category_(HybridCategory::Continuous),
continuousKeys_(keys) {}
/* ************************************************************************ */
HybridCategory GetCategory(const KeyVector &continuousKeys,
const DiscreteKeys &discreteKeys) {
if ((continuousKeys.size() == 0) && (discreteKeys.size() != 0)) {
return HybridCategory::Discrete;
} else if ((continuousKeys.size() != 0) && (discreteKeys.size() == 0)) {
return HybridCategory::Continuous;
} else if ((continuousKeys.size() != 0) && (discreteKeys.size() != 0)) {
return HybridCategory::Hybrid;
} else {
// Case where we have no keys. Should never happen.
return HybridCategory::None;
}
}
/* ************************************************************************ */
HybridFactor::HybridFactor(const KeyVector &continuousKeys,
const DiscreteKeys &discreteKeys)
: Base(CollectKeys(continuousKeys, discreteKeys)),
category_(GetCategory(continuousKeys, discreteKeys)),
discreteKeys_(discreteKeys),
continuousKeys_(continuousKeys) {
if ((continuousKeys.size() == 0) && (discreteKeys.size() != 0)) {
category_ = HybridCategory::Discrete;
} else if ((continuousKeys.size() != 0) && (discreteKeys.size() == 0)) {
category_ = HybridCategory::Continuous;
} else {
category_ = HybridCategory::Hybrid;
}
}
continuousKeys_(continuousKeys) {}
/* ************************************************************************ */
HybridFactor::HybridFactor(const DiscreteKeys &discreteKeys)
@ -98,6 +106,9 @@ void HybridFactor::print(const std::string &s,
case HybridCategory::Hybrid:
std::cout << "Hybrid ";
break;
case HybridCategory::None:
std::cout << "None ";
break;
}
std::cout << "[";

View File

@ -42,7 +42,7 @@ DiscreteKeys CollectDiscreteKeys(const DiscreteKeys &key1,
const DiscreteKeys &key2);
/// Enum to help with categorizing hybrid factors.
enum class HybridCategory { Discrete, Continuous, Hybrid };
enum class HybridCategory { None, Discrete, Continuous, Hybrid };
/**
* Base class for *truly* hybrid probabilistic factors
@ -57,7 +57,7 @@ enum class HybridCategory { Discrete, Continuous, Hybrid };
class GTSAM_EXPORT HybridFactor : public Factor {
private:
/// Record what category of HybridFactor this is.
HybridCategory category_;
HybridCategory category_ = HybridCategory::None;
protected:
// Set of DiscreteKeys for this factor.