Mercurial > hg > ltpda
diff m-toolbox/classes/@param/setDefaultOption.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@param/setDefaultOption.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,90 @@ +% SETDEFAULTOPTION Sets the default option of the a param object. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: SETDEFAULTOPTION Sets the default option of the a param +% object. If the option doesn't exist in the options of the +% param object then this method throws an error. +% +% CALL: obj = obj.setDefaultOption(option); +% +% INPUTS: obj - A single param object +% option - An option which should to be set. +% +% VERSION: $Id: setDefaultOption.m,v 1.7 2011/04/22 21:14:57 mauro Exp $ +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function p = setDefaultOption(p, option) + + % Check input + if numel(p) ~= 1 + error('### This method works only with one input parameter object.'); + end + if ~ischar(option) && isa(option, 'paramValue') && numel(option) ~= 1 + error('### This method works only with one input option.'); + end + + if ~isa(p.val, 'paramValue') + p.val = option; + return; + end + + % Make a copy if the user doesn't use the modifier command + p = copy(p, nargout); + + found = false; + for ii = 1:numel(p.val.options) + + % Use different compare methods for the different types of 'option' + switch class(option) + case 'char' + + % CHAR + if strcmpi(p.val.options{ii}, option) + p.val.setValIndex(ii); + found = true; + break; + end + + case 'specwin' + + % SPECWIN + if strcmpi(p.val.options{ii}, option.type) + p.val.setValIndex(ii); + found = true; + break; + end + + case 'paramValue' + if isequal(p.val.options{ii}, option.options{option.valIndex}) + p.val.setValIndex(ii); + found = true; + break; + end + + otherwise + + % ALL OTHER TYPES + if isequal(p.val.options{ii}, option) + p.val.setValIndex(ii); + found = true; + break; + end + + end + end + + if ~found + % IF the selection mode of the param-object is OPTIONAL then append + % this new option to the param.options + if (p.val.selection == paramValue.OPTIONAL) + newOptions = [reshape(p.val.options, [], 1); {option}]; + p.val.setValIndexAndOptions(numel(newOptions), newOptions); + else + % throw an error if the option is not found in the param-options + error('### I couldn''t find the option [%s] in the param-options.', utils.helper.val2str(option)); + end + end + +end +