From c9f789ba32f028f6944ce426c5cfc102b38d67f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Wed, 13 Nov 2024 16:35:47 +0100
Subject: [PATCH] =?UTF-8?q?Refactor=20implementation=20of=20=E2=80=9Cset?=
 =?UTF-8?q?=5Ftime=E2=80=9D=20(hidden)=20command?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/ComputingTasks.cc | 13 +++----------
 src/ComputingTasks.hh |  4 ++--
 src/ParsingDriver.cc  |  6 ++----
 src/ParsingDriver.hh  |  4 ++--
 4 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index e05e9fa2..4b1b7589 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -3713,8 +3713,7 @@ SvarGlobalIdentificationCheckStatement::writeJsonOutput(ostream& output) const
   output << R"({"statementName": "svar_global_identification"})";
 }
 
-SetTimeStatement::SetTimeStatement(OptionsList options_list_arg) :
-    options_list {move(options_list_arg)}
+SetTimeStatement::SetTimeStatement(string period_arg) : period {move(period_arg)}
 {
 }
 
@@ -3722,19 +3721,13 @@ void
 SetTimeStatement::writeOutput(ostream& output, [[maybe_unused]] const string& basename,
                               [[maybe_unused]] bool minimal_workspace) const
 {
-  options_list.writeOutput(output);
+  output << "options_.initial_period = " << period << endl;
 }
 
 void
 SetTimeStatement::writeJsonOutput(ostream& output) const
 {
-  output << R"({"statementName": "set_time")";
-  if (!options_list.empty())
-    {
-      output << ", ";
-      options_list.writeJsonOutput(output);
-    }
-  output << "}";
+  output << R"({"statementName": "set_time", "period": ")" << period << R"("})";
 }
 
 EstimationDataStatement::EstimationDataStatement(OptionsList options_list_arg) :
diff --git a/src/ComputingTasks.hh b/src/ComputingTasks.hh
index 747bb0a5..2e4df64a 100644
--- a/src/ComputingTasks.hh
+++ b/src/ComputingTasks.hh
@@ -1007,10 +1007,10 @@ public:
 class SetTimeStatement : public Statement
 {
 private:
-  const OptionsList options_list;
+  const string period;
 
 public:
-  explicit SetTimeStatement(OptionsList options_list_arg);
+  explicit SetTimeStatement(string period_arg);
   void writeOutput(ostream& output, const string& basename, bool minimal_workspace) const override;
   void writeJsonOutput(ostream& output) const override;
 };
diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc
index d8191d74..5afacaf7 100644
--- a/src/ParsingDriver.cc
+++ b/src/ParsingDriver.cc
@@ -1739,11 +1739,9 @@ ParsingDriver::set_unit_root_vars()
 }
 
 void
-ParsingDriver::set_time(const string& arg)
+ParsingDriver::set_time(string period)
 {
-  option_date("initial_period", arg);
-  mod_file->addStatement(make_unique<SetTimeStatement>(move(options_list)));
-  options_list.clear();
+  mod_file->addStatement(make_unique<SetTimeStatement>(move(period)));
 }
 
 void
diff --git a/src/ParsingDriver.hh b/src/ParsingDriver.hh
index ffb2f4cb..132dee58 100644
--- a/src/ParsingDriver.hh
+++ b/src/ParsingDriver.hh
@@ -559,8 +559,8 @@ public:
   void osr_params_bounds();
   //! Add a line in an osr params block
   void add_osr_params_element();
-  //! Sets the frequency of the data
-  void set_time(const string& arg);
+  // Sets the initial period for estimation
+  void set_time(string period);
   //! Estimation Data
   void estimation_data();
   //! Sets the prior for a parameter
-- 
GitLab