From dca294de3aafd2a5163de2b55b7dfab32210d452 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Fri, 23 Apr 2021 17:55:28 +0200
Subject: [PATCH] Julia: refactor the auxiliary variable/series files
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

— rename the files with camel case
— encapsulate the functions with modules
— change the signature of function <MODFILE>_dynamic_set_series!, by removing
  the output argument and appending the exclamation mark, since this function
  modifies one of its arguments, and for symmetry with the static version

Ref. DynareJulia/Dynare.jl#1
---
 src/DynamicModel.cc | 17 +++++++++++++----
 src/StaticModel.cc  | 15 ++++++++-------
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index da33a68b..efcfad76 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -4595,19 +4595,28 @@ DynamicModel::writeSetAuxiliaryVariables(const string &basename, bool julia) con
   if (output_func_body.str().empty())
     return;
 
-  string func_name = julia ? basename + "_dynamic_set_auxiliary_series" : "dynamic_set_auxiliary_series";
+  string func_name = julia ? basename + "_dynamic_set_auxiliary_series!" : "dynamic_set_auxiliary_series";
   string comment = julia ? "#" : "%";
 
   stringstream output;
-  output << "function ds = " << func_name + "(ds, params)" << endl
+  if (julia)
+    output << "module " << basename << "DynamicSetAuxiliarySeries" << endl
+           << "export " << func_name << endl;
+  output << "function ";
+  if (!julia)
+    output << "ds = ";
+  output << func_name + "(ds, params)" << endl
          << comment << endl
          << comment << " Status : Computes Auxiliary variables of the dynamic model and returns a dseries" << endl
          << comment << endl
          << comment << " Warning : this file is generated automatically by Dynare" << endl
          << comment << "           from model file (.mod)" << endl << endl
-         << output_func_body.str();
+         << output_func_body.str()
+         << "end" << endl;
+  if (julia)
+    output << "end" << endl;
 
-  writeToFileIfModified(output, julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m");
+  writeToFileIfModified(output, julia ? basename + "DynamicSetAuxiliarySeries.jl" : packageDir(basename) + "/" + func_name + ".m");
 }
 
 void
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index eafb81f8..32b17bff 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -2115,27 +2115,28 @@ StaticModel::writeSetAuxiliaryVariables(const string &basename, bool julia) cons
   if (output_func_body.str().empty())
     return;
 
-  string func_name = julia ? basename + "_set_auxiliary_variables" : "set_auxiliary_variables";
+  string func_name = julia ? basename + "_set_auxiliary_variables!" : "set_auxiliary_variables";
   string comment = julia ? "#" : "%";
 
   stringstream output;
+  if (julia)
+    output << "module " << basename << "SetAuxiliaryVariables" << endl
+           << "export " << func_name << endl;
   output << "function ";
   if (!julia)
     output << "y = ";
-  output << func_name;
-  if (julia)
-    output << "!";
-  output << "(y, x, params)" << endl
+  output << func_name << "(y, x, params)" << endl
          << comment << endl
          << comment << " Status : Computes static model for Dynare" << endl
          << comment << endl
          << comment << " Warning : this file is generated automatically by Dynare" << endl
          << comment << "           from model file (.mod)" << endl << endl
-         << output_func_body.str();
+         << output_func_body.str()
+         << "end" << endl;
   if (julia)
     output << "end" << endl;
 
-  writeToFileIfModified(output, julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m");
+  writeToFileIfModified(output, julia ? basename + "SetAuxiliaryVariables.jl" : packageDir(basename) + "/" + func_name + ".m");
 }
 
 void
-- 
GitLab