diff --git a/DynamicModel.cc b/DynamicModel.cc index 8d92a564..be0dd601 100644 --- a/DynamicModel.cc +++ b/DynamicModel.cc @@ -5536,84 +5536,43 @@ DynamicModel::writeJsonOutput(ostream &output) const writeJsonXrefs(output); } +void +DynamicModel::writeJsonXrefsHelper(ostream &output, const map, set > &xrefs) const +{ + for (map, set >::const_iterator it = xrefs.begin(); + it != xrefs.end(); it++) + { + if (it != xrefs.begin()) + output << ", "; + output << "{\"name\": \"" << symbol_table.getName(it->first.first) << "\"" + << ", \"shift\": " << it->first.second + << ", \"equations\": ["; + for (set::const_iterator it1 = it->second.begin(); + it1 != it->second.end(); it1++) + { + if (it1 != it->second.begin()) + output << ", "; + output << *it1 + 1; + } + output << "]}"; + } +} + void DynamicModel::writeJsonXrefs(ostream &output) const { output << "\"xrefs\": {" << "\"parameters\": ["; - for (map, set >::const_iterator it = xref_param.begin(); - it != xref_param.end(); it++) - { - if (it != xref_param.begin()) - output << ", "; - output << "{\"parameter\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } + writeJsonXrefsHelper(output, xref_param); output << "]" << ", \"endogenous\": ["; - for (map, set >::const_iterator it = xref_endo.begin(); - it != xref_endo.end(); it++) - { - if (it != xref_endo.begin()) - output << ", "; - output << "{\"endogenous\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"shift\": " << it->first.second - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } + writeJsonXrefsHelper(output, xref_endo); output << "]" << ", \"exogenous\": ["; - for (map, set >::const_iterator it = xref_exo.begin(); - it != xref_exo.end(); it++) - { - if (it != xref_exo.begin()) - output << ", "; - output << "{\"exogenous\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"shift\": " << it->first.second - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } + writeJsonXrefsHelper(output, xref_exo); output << "]" << ", \"exogenous_deterministic\": ["; - for (map, set >::const_iterator it = xref_exo_det.begin(); - it != xref_exo_det.end(); it++) - { - if (it != xref_exo_det.begin()) - output << ", "; - output << "{\"exogenous_det\": \"" << symbol_table.getName(it->first.first) << "\"" - << ", \"shift\": " << it->first.second - << ", \"equations\": ["; - for (set::const_iterator it1 = it->second.begin(); - it1 != it->second.end(); it1++) - { - if (it1 != it->second.begin()) - output << ", "; - output << *it1 + 1; - } - output << "]}"; - } + writeJsonXrefsHelper(output, xref_exo_det); output << "]}" << endl; } diff --git a/DynamicModel.hh b/DynamicModel.hh index 36926611..e5b9be49 100644 --- a/DynamicModel.hh +++ b/DynamicModel.hh @@ -264,6 +264,7 @@ public: //! Write cross reference output if the xref maps have been filed void writeJsonXrefs(ostream &output) const; + void writeJsonXrefsHelper(ostream &output, const map, set > &xrefs) const; //! Return true if the hessian is equal to zero inline bool checkHessianZero() const;