From 57308528289e07ff9e8b87578a92dacd6bc89b14 Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Mon, 3 Jul 2017 14:52:06 +0200
Subject: [PATCH] preprocessor: to_string is in the new C++ standard

---
 ExprNode.cc      | 17 ++++++++++++-----
 ParsingDriver.cc | 11 +++++++++--
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/ExprNode.cc b/ExprNode.cc
index c81a24d3..855f6d57 100644
--- a/ExprNode.cc
+++ b/ExprNode.cc
@@ -4316,13 +4316,20 @@ BinaryOpNode::substituteAdlAndDiff() const
 
   expr_t arg1subst = arg1->substituteAdlAndDiff();
   int i = 1;
-  int param_symb_id = datatree.symbol_table.getID(adlparam + "_lag_" + to_string(i));
+  ostringstream inttostr;
+  inttostr << i;
+  int param_symb_id = datatree.symbol_table.getID(adlparam + "_lag_" + inttostr.str());
   expr_t retval = datatree.AddTimes(datatree.AddVariable(param_symb_id, 0), arg1subst->decreaseLeadsLags(i));
   i++;
-  for (; i <= (int) arg2->eval(eval_context_t()); i++)
-    retval = datatree.AddPlus(retval,
-                              datatree.AddTimes(datatree.AddVariable(datatree.symbol_table.getID(adlparam + "_lag_" + to_string(i)), 0),
-                                                arg1subst->decreaseLeadsLags(i)));
+  for (; i <= (int) arg2->eval(eval_context_t());)
+    {
+      inttostr.clear();
+      inttostr.str("");
+      inttostr << i++;
+      retval = datatree.AddPlus(retval,
+                                datatree.AddTimes(datatree.AddVariable(datatree.symbol_table.getID(adlparam + "_lag_" + inttostr.str()), 0),
+                                                  arg1subst->decreaseLeadsLags(i)));
+    }
   return retval;
 }
 
diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index 9072fc3b..dc0943cb 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -2598,8 +2598,15 @@ ParsingDriver::add_adl(expr_t arg1, string *name, string *lag)
                                 data_tree->AddNonNegativeConstant(*lag));
 
   // Declare parameters here so that parameters can be initialized after the model block
-  for (int i = 0; i < atoi(lag->c_str()); i++)
-    declare_parameter(new string(*name + "_lag_" + to_string(i+1)));
+  int i = 0;
+  ostringstream inttostr;
+  for (; i < atoi(lag->c_str()); i++)
+    {
+      inttostr.clear();
+      inttostr.str("");
+      inttostr << i + 1;
+      declare_parameter(new string(*name + "_lag_" + inttostr.str()));
+    }
 
   delete name;
   delete lag;
-- 
GitLab