Macro used to clean up after encountering an error in a mex file (previously handled by mexErrMsgTxt) and helper m file

time-shift
Houtan Bastani 2010-09-20 13:17:20 +02:00
parent a3640239ab
commit 6631f2d1d0
2 changed files with 57 additions and 1 deletions

42
matlab/mexErrCheck.m Normal file
View File

@ -0,0 +1,42 @@
function mexErrCheck(mexFunctionName, err)
% function mexErrCheck(mexFunctionName, err)
% this function halts processing if err is equal to 1.
%
% INPUTS
% mexFunctionName [char] Name of the mexFunction
% err [double] error code returned from mexFunction
%
% OUTPUTS
% none.
%
% ALGORITHM
% ...
%
% SPECIAL REQUIREMENTS
% none.
%
% Copyright (C) 2010 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if ~ischar(mexFunctionName) || ~isscalar(err)
error('The first argument must be a char and the second a scalar');
end
if err
error(['Error encountered in: ' mexFunctionName '.']);
end

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2009 Dynare Team
* Copyright (C) 2009-2010 Dynare Team
*
* This file is part of Dynare.
*
@ -32,4 +32,18 @@ typedef int mwIndex;
typedef int mwSize;
#endif
/*
* Fix for trac ticket Ticket #137
*/
#if !defined(DYN_MEX_FUNC_ERR_MSG_TXT)
#define DYN_MEX_FUNC_ERR_MSG_TXT(str) \
do { \
mexPrintf("%s\n", str); \
int i; \
for (i = 0; i < nlhs; i++) \
plhs[i] = mxCreateDoubleScalar(1); \
return; \
} while(0)
#endif
#endif