Switch to dynamic pointer cast

release/4.3a0
Frank Dellaert 2022-12-28 13:52:40 -05:00
parent 911e46b0a0
commit c984a5ffa2
1 changed files with 9 additions and 14 deletions

View File

@ -131,34 +131,29 @@ class GTSAM_EXPORT HybridConditional
/** /**
* @brief Return HybridConditional as a GaussianMixture * @brief Return HybridConditional as a GaussianMixture
* * @return nullptr if not a mixture
* @return GaussianMixture::shared_ptr * @return GaussianMixture::shared_ptr otherwise
*/ */
GaussianMixture::shared_ptr asMixture() { GaussianMixture::shared_ptr asMixture() {
if (!isHybrid()) throw std::invalid_argument("Not a mixture"); return boost::dynamic_pointer_cast<GaussianMixture>(inner_);
return boost::static_pointer_cast<GaussianMixture>(inner_);
} }
/** /**
* @brief Return HybridConditional as a GaussianConditional * @brief Return HybridConditional as a GaussianConditional
* * @return nullptr if not a GaussianConditional
* @return GaussianConditional::shared_ptr * @return GaussianConditional::shared_ptr otherwise
*/ */
GaussianConditional::shared_ptr asGaussian() { GaussianConditional::shared_ptr asGaussian() {
if (!isContinuous()) return boost::dynamic_pointer_cast<GaussianConditional>(inner_);
throw std::invalid_argument("Not a continuous conditional");
return boost::static_pointer_cast<GaussianConditional>(inner_);
} }
/** /**
* @brief Return conditional as a DiscreteConditional * @brief Return conditional as a DiscreteConditional
* * @return nullptr if not a DiscreteConditional
* @return DiscreteConditional::shared_ptr * @return DiscreteConditional::shared_ptr
*/ */
DiscreteConditional::shared_ptr asDiscreteConditional() { DiscreteConditional::shared_ptr asDiscrete() {
if (!isDiscrete()) return boost::dynamic_pointer_cast<DiscreteConditional>(inner_);
throw std::invalid_argument("Not a discrete conditional");
return boost::static_pointer_cast<DiscreteConditional>(inner_);
} }
/// @} /// @}