diff --git a/.gitignore b/.gitignore index 1f117b4b0f8f180745090549ce5b2d020b7f67e2..be2c96947966ddba989593fabbf2d203f9171cb9 100644 --- a/.gitignore +++ b/.gitignore @@ -116,8 +116,6 @@ mex/build/matlab/run_m2html.m /matlab/dynare_m /matlab/dynare_m.exe /matlab/dynare_version.m -/matlab/empty-dates-object.mat -/matlab/empty-dseries-object.mat # DLL rules *.mex diff --git a/matlab/@dates/dates.m b/matlab/@dates/dates.m index b52eb9c93f42d080bc30a6cd52ee7b04c9921b2a..5df103424a6798a10a6232564a0c2c58a229caac 100644 --- a/matlab/@dates/dates.m +++ b/matlab/@dates/dates.m @@ -62,13 +62,15 @@ function dd = dates(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -if exist('empty-dates-object.mat','file') - load('empty-dates-object'); -else +if nargin>0 && isequal(varargin{1},'initialize') dd = struct('ndat', 0, 'freq', NaN(0), 'time', NaN(0,2)); dd = class(dd,'dates'); + assignin('base','emptydatesobject',dd); + return end +dd = evalin('base','emptydatesobject'); + switch nargin case 0 % Returns an empty object diff --git a/matlab/@dseries/dseries.m b/matlab/@dseries/dseries.m index 55ed8c3b75e0983f93898dcc4232bcba7faffde7..213800c70a9702655558c89a82e9590b32ee3cea 100644 --- a/matlab/@dseries/dseries.m +++ b/matlab/@dseries/dseries.m @@ -76,9 +76,7 @@ function ts = dseries(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -if exist('empty-dseries-object.mat','file') - load('empty-dseries-object'); -else +if nargin>0 && isequal(varargin{1},'initialize') ts = struct; ts.data = []; ts.nobs = 0; @@ -88,8 +86,13 @@ else ts.freq = []; ts.init = dates(); ts.dates = dates(); + ts = class(ts,'dseries'); + assignin('base','emptydseriesobject',ts); + return end +ts = evalin('base','emptydseriesobject'); + switch nargin case 0 % Create an empty dseries object. diff --git a/matlab/dynare_config.m b/matlab/dynare_config.m index 9f8f706c092c27c8017e993ec189649afa8fe66c..2eb992b36e81c768b8d0d07dfcc8493d406104ab 100644 --- a/matlab/dynare_config.m +++ b/matlab/dynare_config.m @@ -249,18 +249,8 @@ if verbose skipline() end -% Delete empty dates and dseries saved on disk. -if exist('empty-dates-object.mat','file') - delete([dynareroot 'empty-dates-object.mat']); -end -if exist('empty-dseries-object.mat','file') - delete([dynareroot 'empty-dseries-object.mat']); -end - -% Save empty dates and dseries objects on disk. -dd = dates(); -ts = dseries(); -save([dynareroot 'empty-dates-object.mat'],'dd'); -save([dynareroot 'empty-dseries-object.mat'],'ts'); +% Save empty dates and dseries objects (necessary if a mod file is not preprocessed). +dates('initialize'); +dseries('initialize'); cd(origin); diff --git a/preprocessor/ModFile.cc b/preprocessor/ModFile.cc index 314fd504e493c416a40559c2bb4939d9b4c7179a..5c6c9fa752e93ec70cf99e96058cc8e0b1f462c3 100644 --- a/preprocessor/ModFile.cc +++ b/preprocessor/ModFile.cc @@ -554,6 +554,10 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, b mOutputFile << "clear all" << endl; mOutputFile << "tic;" << endl + << "% Save empty dates and dseries objects in memory." << endl + << "dates('initialize');" << endl + << "dseries('initialize');" << endl + << "% Define global variables." << endl << "global M_ oo_ options_ ys0_ ex0_ estimation_info" << endl << "options_ = [];" << endl << "M_.fname = '" << basename << "';" << endl