From 87acca9252892c034a07996870319b5763b9b157 Mon Sep 17 00:00:00 2001 From: "Marco A. Gutierrez" Date: Mon, 19 Sep 2022 05:04:22 +0000 Subject: [PATCH] adding errors parameter to function calls Signed-off-by: Marco A. Gutierrez --- include/sdf/Noise.hh | 8 +++++++ src/Noise.cc | 52 ++++++++++++++++++++++++++++---------------- 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/include/sdf/Noise.hh b/include/sdf/Noise.hh index 0d99c4dcf..361e12f7e 100644 --- a/include/sdf/Noise.hh +++ b/include/sdf/Noise.hh @@ -169,6 +169,14 @@ namespace sdf /// \return SDF element pointer with updated noise values. public: sdf::ElementPtr ToElement() const; + /// \brief Create and return an SDF element filled with data from this + /// noise. + /// Note that parameter passing functionality is not captured with this + /// function. + /// \param[out] _errors Vector of errors. + /// \return SDF element pointer with updated noise values. + public: sdf::ElementPtr ToElement(sdf::Errors &_errors) const; + /// \brief Private data pointer. GZ_UTILS_IMPL_PTR(dataPtr) }; diff --git a/src/Noise.cc b/src/Noise.cc index e286ed51a..450723b3d 100644 --- a/src/Noise.cc +++ b/src/Noise.cc @@ -19,6 +19,7 @@ #include "sdf/Noise.hh" #include "sdf/parser.hh" #include "sdf/Types.hh" +#include "Utils.hh" using namespace sdf; @@ -78,7 +79,8 @@ Errors Noise::Load(ElementPtr _sdf) return errors; } - std::pair type = _sdf->Get("type", "none"); + std::pair type = + _sdf->Get(errors, "type", "none"); if (!type.second) { errors.push_back({ErrorCode::ELEMENT_MISSING, @@ -102,26 +104,26 @@ Errors Noise::Load(ElementPtr _sdf) this->dataPtr->type = NoiseType::NONE; } - this->dataPtr->mean = _sdf->Get("mean", + this->dataPtr->mean = _sdf->Get(errors, "mean", this->dataPtr->mean).first; - this->dataPtr->stdDev = _sdf->Get("stddev", + this->dataPtr->stdDev = _sdf->Get(errors, "stddev", this->dataPtr->stdDev).first; - this->dataPtr->biasMean = _sdf->Get("bias_mean", + this->dataPtr->biasMean = _sdf->Get(errors, "bias_mean", this->dataPtr->biasMean).first; - this->dataPtr->biasStdDev = _sdf->Get("bias_stddev", + this->dataPtr->biasStdDev = _sdf->Get(errors, "bias_stddev", this->dataPtr->biasStdDev).first; - this->dataPtr->precision = _sdf->Get("precision", + this->dataPtr->precision = _sdf->Get(errors, "precision", this->dataPtr->precision).first; - this->dataPtr->dynamicBiasStdDev = _sdf->Get("dynamic_bias_stddev", - this->dataPtr->dynamicBiasStdDev).first; + this->dataPtr->dynamicBiasStdDev = _sdf->Get( + errors, "dynamic_bias_stddev", this->dataPtr->dynamicBiasStdDev).first; this->dataPtr->dynamicBiasCorrelationTime = _sdf->Get( - "dynamic_bias_correlation_time", + errors, "dynamic_bias_correlation_time", this->dataPtr->dynamicBiasCorrelationTime).first; return errors; @@ -252,6 +254,15 @@ bool Noise::operator==(const Noise &_noise) const ///////////////////////////////////////////////// sdf::ElementPtr Noise::ToElement() const +{ + sdf::Errors errors; + auto result = this->ToElement(errors); + sdf::throwOrPrintErrors(errors); + return result; +} + +///////////////////////////////////////////////// +sdf::ElementPtr Noise::ToElement(sdf::Errors &_errors) const { sdf::ElementPtr elem(new sdf::Element); sdf::initFile("noise.sdf", elem); @@ -271,18 +282,21 @@ sdf::ElementPtr Noise::ToElement() const default: noiseType = "none"; } - elem->GetAttribute("type")->Set(noiseType); - elem->GetElement("mean")->Set(this->Mean()); - elem->GetElement("stddev")->Set(this->StdDev()); + elem->GetAttribute("type")->Set(noiseType, _errors); + elem->GetElement("mean", _errors)->Set(this->Mean(), _errors); + elem->GetElement("stddev", _errors)->Set(this->StdDev(), _errors); // camera and lidar does not have the sdf params below - elem->GetElement("bias_mean")->Set(this->BiasMean()); - elem->GetElement("bias_stddev")->Set(this->BiasStdDev()); - elem->GetElement("dynamic_bias_stddev")->Set( - this->DynamicBiasStdDev()); - elem->GetElement("dynamic_bias_correlation_time")->Set( - this->DynamicBiasCorrelationTime()); - elem->GetElement("precision")->Set(this->Precision()); + elem->GetElement("bias_mean", _errors)->Set( + this->BiasMean(), _errors); + elem->GetElement("bias_stddev", _errors)->Set( + this->BiasStdDev(), _errors); + elem->GetElement("dynamic_bias_stddev", _errors)->Set( + this->DynamicBiasStdDev(), _errors); + elem->GetElement("dynamic_bias_correlation_time", _errors)->Set( + this->DynamicBiasCorrelationTime(), _errors); + elem->GetElement("precision", _errors)->Set( + this->Precision(), _errors); return elem; }