From edddc9d8caa292e7cf66768f4d1d1b0766354818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 18 Jul 2018 16:35:19 +0200 Subject: [PATCH] C++11: convert NodeTreeReference to a class enum --- src/CodeInterpreter.hh | 26 ++++++++++---------- src/ModelTree.cc | 56 +++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/src/CodeInterpreter.hh b/src/CodeInterpreter.hh index ccb4c774..ef8cfdc0 100644 --- a/src/CodeInterpreter.hh +++ b/src/CodeInterpreter.hh @@ -254,17 +254,17 @@ enum PriorDistributions eWeibull = 8 }; -enum NodeTreeReference +enum class NodeTreeReference { - eResiduals = 0, - eFirstDeriv = 1, - eSecondDeriv = 2, - eThirdDeriv = 3, - eResidualsParamsDeriv = 4, - eJacobianParamsDeriv = 5, - eResidualsParamsSecondDeriv = 6, - eJacobianParamsSecondDeriv = 7, - eHessianParamsDeriv = 8 + residuals, + firstDeriv, + secondDeriv, + thirdDeriv, + residualsParamsDeriv, + jacobianParamsDeriv, + residualsParamsSecondDeriv, + jacobianParamsSecondDeriv, + hessianParamsDeriv }; /*! Lists elements of the NodeTreeReference enum that come “before” the argument. @@ -275,7 +275,7 @@ nodeTreeReferencesBefore(NodeTreeReference tr) vector v; // Should be same order as the one appearing in ModelTree::computeTemporaryTerms() - for (auto tr2 : { eResiduals, eFirstDeriv, eSecondDeriv, eThirdDeriv }) + for (auto tr2 : { NodeTreeReference::residuals, NodeTreeReference::firstDeriv, NodeTreeReference::secondDeriv, NodeTreeReference::thirdDeriv }) if (tr == tr2) return v; else @@ -283,8 +283,8 @@ nodeTreeReferencesBefore(NodeTreeReference tr) v.clear(); // Should be same order as the one appearing in ModelTree::computeParamsDerivativesTemporaryTerms() - for (auto tr2 : { eResidualsParamsDeriv, eJacobianParamsDeriv, eResidualsParamsSecondDeriv, - eJacobianParamsSecondDeriv, eHessianParamsDeriv}) + for (auto tr2 : { NodeTreeReference::residualsParamsDeriv, NodeTreeReference::jacobianParamsDeriv, NodeTreeReference::residualsParamsSecondDeriv, + NodeTreeReference::jacobianParamsSecondDeriv, NodeTreeReference::hessianParamsDeriv}) if (tr == tr2) return v; else diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 853ecfe8..31343942 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -1126,43 +1126,43 @@ ModelTree::computeTemporaryTerms(bool is_matlab) { VariableNode *v = AddVariable(used_local_var); temporary_terms_mlv[v] = local_variables_table.find(used_local_var)->second; - reference_count[v] = { ExprNode::min_cost(is_matlab)+1, eResiduals }; + reference_count[v] = { ExprNode::min_cost(is_matlab)+1, NodeTreeReference::residuals }; } map temp_terms_map; - temp_terms_map[eResiduals] = temporary_terms_res; - temp_terms_map[eFirstDeriv] = temporary_terms_g1; - temp_terms_map[eSecondDeriv] = temporary_terms_g2; - temp_terms_map[eThirdDeriv] = temporary_terms_g3; + temp_terms_map[NodeTreeReference::residuals] = temporary_terms_res; + temp_terms_map[NodeTreeReference::firstDeriv] = temporary_terms_g1; + temp_terms_map[NodeTreeReference::secondDeriv] = temporary_terms_g2; + temp_terms_map[NodeTreeReference::thirdDeriv] = temporary_terms_g3; for (auto & equation : equations) equation->computeTemporaryTerms(reference_count, temp_terms_map, - is_matlab, eResiduals); + is_matlab, NodeTreeReference::residuals); for (auto & first_derivative : first_derivatives) first_derivative.second->computeTemporaryTerms(reference_count, temp_terms_map, - is_matlab, eFirstDeriv); + is_matlab, NodeTreeReference::firstDeriv); for (auto & second_derivative : second_derivatives) second_derivative.second->computeTemporaryTerms(reference_count, temp_terms_map, - is_matlab, eSecondDeriv); + is_matlab, NodeTreeReference::secondDeriv); for (auto & third_derivative : third_derivatives) third_derivative.second->computeTemporaryTerms(reference_count, temp_terms_map, - is_matlab, eThirdDeriv); + is_matlab, NodeTreeReference::thirdDeriv); for (map::const_iterator it = temp_terms_map.begin(); it != temp_terms_map.end(); it++) temporary_terms.insert(it->second.begin(), it->second.end()); - temporary_terms_res = temp_terms_map[eResiduals]; - temporary_terms_g1 = temp_terms_map[eFirstDeriv]; - temporary_terms_g2 = temp_terms_map[eSecondDeriv]; - temporary_terms_g3 = temp_terms_map[eThirdDeriv]; + temporary_terms_res = temp_terms_map[NodeTreeReference::residuals]; + temporary_terms_g1 = temp_terms_map[NodeTreeReference::firstDeriv]; + temporary_terms_g2 = temp_terms_map[NodeTreeReference::secondDeriv]; + temporary_terms_g3 = temp_terms_map[NodeTreeReference::thirdDeriv]; int idx = 0; for (map::const_iterator it = temporary_terms_mlv.begin(); @@ -1897,49 +1897,49 @@ ModelTree::computeParamsDerivativesTemporaryTerms() map> reference_count; params_derivs_temporary_terms.clear(); map temp_terms_map; - temp_terms_map[eResidualsParamsDeriv] = params_derivs_temporary_terms_res; - temp_terms_map[eJacobianParamsDeriv] = params_derivs_temporary_terms_g1; - temp_terms_map[eResidualsParamsSecondDeriv] = params_derivs_temporary_terms_res2; - temp_terms_map[eJacobianParamsSecondDeriv] = params_derivs_temporary_terms_g12; - temp_terms_map[eHessianParamsDeriv] = params_derivs_temporary_terms_g2; + temp_terms_map[NodeTreeReference::residualsParamsDeriv] = params_derivs_temporary_terms_res; + temp_terms_map[NodeTreeReference::jacobianParamsDeriv] = params_derivs_temporary_terms_g1; + temp_terms_map[NodeTreeReference::residualsParamsSecondDeriv] = params_derivs_temporary_terms_res2; + temp_terms_map[NodeTreeReference::jacobianParamsSecondDeriv] = params_derivs_temporary_terms_g12; + temp_terms_map[NodeTreeReference::hessianParamsDeriv] = params_derivs_temporary_terms_g2; for (auto & residuals_params_derivative : residuals_params_derivatives) residuals_params_derivative.second->computeTemporaryTerms(reference_count, temp_terms_map, - true, eResidualsParamsDeriv); + true, NodeTreeReference::residualsParamsDeriv); for (auto & jacobian_params_derivative : jacobian_params_derivatives) jacobian_params_derivative.second->computeTemporaryTerms(reference_count, temp_terms_map, - true, eJacobianParamsDeriv); + true, NodeTreeReference::jacobianParamsDeriv); for (second_derivatives_t::const_iterator it = residuals_params_second_derivatives.begin(); it != residuals_params_second_derivatives.end(); ++it) it->second->computeTemporaryTerms(reference_count, temp_terms_map, - true, eResidualsParamsSecondDeriv); + true, NodeTreeReference::residualsParamsSecondDeriv); for (third_derivatives_t::const_iterator it = jacobian_params_second_derivatives.begin(); it != jacobian_params_second_derivatives.end(); ++it) it->second->computeTemporaryTerms(reference_count, temp_terms_map, - true, eJacobianParamsSecondDeriv); + true, NodeTreeReference::jacobianParamsSecondDeriv); for (third_derivatives_t::const_iterator it = hessian_params_derivatives.begin(); it != hessian_params_derivatives.end(); ++it) it->second->computeTemporaryTerms(reference_count, temp_terms_map, - true, eHessianParamsDeriv); + true, NodeTreeReference::hessianParamsDeriv); for (map::const_iterator it = temp_terms_map.begin(); it != temp_terms_map.end(); it++) params_derivs_temporary_terms.insert(it->second.begin(), it->second.end()); - params_derivs_temporary_terms_res = temp_terms_map[eResidualsParamsDeriv]; - params_derivs_temporary_terms_g1 = temp_terms_map[eJacobianParamsDeriv]; - params_derivs_temporary_terms_res2 = temp_terms_map[eResidualsParamsSecondDeriv]; - params_derivs_temporary_terms_g12 = temp_terms_map[eJacobianParamsSecondDeriv]; - params_derivs_temporary_terms_g2 = temp_terms_map[eHessianParamsDeriv]; + params_derivs_temporary_terms_res = temp_terms_map[NodeTreeReference::residualsParamsDeriv]; + params_derivs_temporary_terms_g1 = temp_terms_map[NodeTreeReference::jacobianParamsDeriv]; + params_derivs_temporary_terms_res2 = temp_terms_map[NodeTreeReference::residualsParamsSecondDeriv]; + params_derivs_temporary_terms_g12 = temp_terms_map[NodeTreeReference::jacobianParamsSecondDeriv]; + params_derivs_temporary_terms_g2 = temp_terms_map[NodeTreeReference::hessianParamsDeriv]; int idx = 0; for (auto tt : params_derivs_temporary_terms_res)