Back to TIM Matlab implementation
% PROCESS_OPTIONS
% A function pre-preprocessing optional input arguments. This function is
% required by multiple functions of TIM Matlab interface
%
% [command, remove] = process_options(keySet, argumentSet)
%
% where
%
% KEYSET is a cell array with the names of the optional input arguments,
% e.g. {'threads', 'lags'}
%
% ARGUMENTSET is the varargin argument at the calling function, e.g.
% {'threads', 4, 'lags', [1 10 20]}
%
% COMMAND is the string that should be evaluated by the calling function in
% order to assign the provided values to the corresponding argument names,
% e.g. COMMAND would be 'threads=argumentSet{4};lags={argumentSet{2};' if
% argumentSet = {'lags', [1 10 20], 'threads', 4}
%
% Type 'help tim' for more documentation
% Description: Input arguments pre-processing
% Documentation: tim_matlab_impl.txt
function [command, remove] = process_options(keySet, argumentSet)
command = '';
if nargin < 2,
remove = [];
return;
end
arguments = length(argumentSet);
remove = false(1, arguments);
i = 1;
while i < arguments
key = argumentSet{i};
if ~ischar(key),
error('MISC:process_options:invalidInput', ...
'Optional input arguments must be given in key-value pairs.');
end
[ignore, loc] = ismember(key, keySet);
if loc > 0
% The option is supported.
if ~all(isempty(argumentSet{i + 1}))
command = [command, key, ' = varargin{', num2str(i + 1), '};'];
remove(i : i + 1) = true;
end
else
% This option is not supported.
error([key, ' is not a name of an optional argument.']);
end
i = i + 2;
end