From d26ff576717b8aca536f81989da25c84016b309c Mon Sep 17 00:00:00 2001
From: sebastien <sebastien@ac1d8469-bf42-47a9-8791-bf33cf982152>
Date: Thu, 3 Sep 2009 10:10:06 +0000
Subject: [PATCH] Cleanup "cutoff" and "mfs" options (the former is no longer
 in options_)

git-svn-id: https://www.dynare.org/svn/dynare/trunk@2888 ac1d8469-bf42-47a9-8791-bf33cf982152
---
 DynamicModel.cc  |  6 +++---
 DynareBison.yy   |  4 ++--
 ParsingDriver.cc | 28 ++++++++++++++++++----------
 ParsingDriver.hh |  4 ++++
 4 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/DynamicModel.cc b/DynamicModel.cc
index 78be858b..51ca2beb 100644
--- a/DynamicModel.cc
+++ b/DynamicModel.cc
@@ -1595,7 +1595,7 @@ DynamicModel::writeSparseDynamicMFile(const string &dynamic_basename, const stri
             mDynamicModelFile << "  y = solve_one_boundary('"  << dynamic_basename << "_" <<  i + 1 << "'" <<
             ", y, x, params, y_index, " << nze <<
             ", options_.periods, " << block_triangular.ModelBlock->Block_List[i].is_linear <<
-            ", blck_num, y_kmin, options_.maxit_, options_.solve_tolf, options_.slowc, options_.cutoff, options_.stack_solve_algo, 1, 1, 0);\n";
+              ", blck_num, y_kmin, options_.maxit_, options_.solve_tolf, options_.slowc, " << cutoff << ", options_.stack_solve_algo, 1, 1, 0);\n";
             mDynamicModelFile << "  tmp = y(:,M_.block_structure.block(" << i + 1 << ").variable);\n";
             mDynamicModelFile << "  if(isnan(tmp) | isinf(tmp))\n";
             mDynamicModelFile << "    disp(['Inf or Nan value during the resolution of block " << i <<"']);\n";
@@ -1626,7 +1626,7 @@ DynamicModel::writeSparseDynamicMFile(const string &dynamic_basename, const stri
             mDynamicModelFile << "  y = solve_one_boundary('"  << dynamic_basename << "_" <<  i + 1 << "'" <<
             ", y, x, params, y_index, " << nze <<
             ", options_.periods, " << block_triangular.ModelBlock->Block_List[i].is_linear <<
-            ", blck_num, y_kmin, options_.maxit_, options_.solve_tolf, options_.slowc, options_.cutoff, options_.stack_solve_algo, 1, 1, 0);\n";
+            ", blck_num, y_kmin, options_.maxit_, options_.solve_tolf, options_.slowc, " << cutoff << ", options_.stack_solve_algo, 1, 1, 0);\n";
             mDynamicModelFile << "  tmp = y(:,M_.block_structure.block(" << i + 1 << ").variable);\n";
             mDynamicModelFile << "  if(isnan(tmp) | isinf(tmp))\n";
             mDynamicModelFile << "    disp(['Inf or Nan value during the resolution of block " << i <<"']);\n";
@@ -1658,7 +1658,7 @@ DynamicModel::writeSparseDynamicMFile(const string &dynamic_basename, const stri
             ", options_.periods, " << block_triangular.ModelBlock->Block_List[i].Max_Lag <<
             ", " << block_triangular.ModelBlock->Block_List[i].Max_Lead <<
             ", " << block_triangular.ModelBlock->Block_List[i].is_linear <<
-            ", blck_num, y_kmin, options_.maxit_, options_.solve_tolf, options_.slowc, options_.cutoff, options_.stack_solve_algo);\n";
+            ", blck_num, y_kmin, options_.maxit_, options_.solve_tolf, options_.slowc, " << cutoff << ", options_.stack_solve_algo);\n";
             mDynamicModelFile << "  tmp = y(:,M_.block_structure.block(" << i + 1 << ").variable);\n";
             mDynamicModelFile << "  if(isnan(tmp) | isinf(tmp))\n";
             mDynamicModelFile << "    disp(['Inf or Nan value during the resolution of block " << i <<"']);\n";
diff --git a/DynareBison.yy b/DynareBison.yy
index d978d5fd..79b67bbe 100644
--- a/DynareBison.yy
+++ b/DynareBison.yy
@@ -1495,9 +1495,9 @@ o_hp_filter : HP_FILTER EQUAL INT_NUMBER { driver.option_num("hp_filter", $3); }
 o_hp_ngrid : HP_NGRID EQUAL INT_NUMBER { driver.option_num("hp_ngrid", $3); };
 o_periods : PERIODS EQUAL INT_NUMBER
             { driver.option_num("periods", $3); driver.option_num("simul", "1"); };
-o_cutoff : CUTOFF EQUAL number { driver.option_num("cutoff", $3); }
+o_cutoff : CUTOFF EQUAL number { driver.cutoff($3); }
 o_markowitz : MARKOWITZ EQUAL number { driver.option_num("markowitz", $3); };
-o_mfs : MFS EQUAL number { driver.option_num("mfs", $3); };
+o_mfs : MFS EQUAL INT_NUMBER { driver.mfs($3); };
 o_simul : SIMUL { driver.option_num("simul", "1"); };
 o_simul_seed : SIMUL_SEED EQUAL INT_NUMBER { driver.option_num("simul_seed", $3); } ;
 o_qz_criterium : QZ_CRITERIUM EQUAL number { driver.option_num("qz_criterium", $3); };
diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index e3e4b2a8..9c2aa740 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -355,6 +355,24 @@ ParsingDriver::byte_code()
   mod_file->byte_code = true;
 }
 
+void
+ParsingDriver::cutoff(string *value)
+{
+  double val = atof(value->c_str());
+  mod_file->dynamic_model.cutoff = val;
+  mod_file->static_dll_model.cutoff = val;
+  delete value;
+}
+
+void
+ParsingDriver::mfs(string *value)
+{
+  int val = atoi(value->c_str());
+  mod_file->dynamic_model.mfs = val;
+  mod_file->static_dll_model.mfs = val;
+  delete value;
+}
+
 void
 ParsingDriver::end_initval()
 {
@@ -612,16 +630,6 @@ ParsingDriver::option_num(const string &name_option, const string &opt)
 
   if ((name_option == "periods") && mod_file->block)
     mod_file->dynamic_model.block_triangular.periods = atoi(opt.c_str());
-  else if (name_option == "cutoff")
-    {
-      mod_file->dynamic_model.cutoff = atof(opt.c_str());
-      mod_file->static_dll_model.cutoff = atof(opt.c_str());
-    }
-	else if (name_option == "mfs")
-	  {
-		  mod_file->dynamic_model.mfs = atoi(opt.c_str());
-		  mod_file->static_dll_model.mfs = atoi(opt.c_str());
-	  }
 
   options_list.num_options[name_option] = opt;
 }
diff --git a/ParsingDriver.hh b/ParsingDriver.hh
index 07fdb9f5..7bc0752d 100644
--- a/ParsingDriver.hh
+++ b/ParsingDriver.hh
@@ -179,6 +179,10 @@ public:
   void block();
   //! the model is stored in a binary file
   void byte_code();
+  //! cutoff option of model block
+  void cutoff(string *value);
+  //! mfs option of model block
+  void mfs(string *value);
   //! Sets the FILENAME for the initial value in initval
   void initval_file(string *filename);
   //! Declares an endogenous variable
-- 
GitLab