Mercurial > hg > ltpda
diff m-toolbox/classes/@paramValue/paramValue.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/@paramValue/paramValue.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,370 @@ +% PARAMVALUE object class constructor. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: Parameter value object class constructor. +% Create a parameter value object. +% +% SUPERCLASSES: ltpda_nuo < ltpda_obj +% +% CONSTRUCTORS: +% +% p = paramValue(); - creates an empty parameter value +% p = paramVAlue(pl) - creates a parameter value from a +% parameter list with the keys: +% 'valIndex', 'options' and 'selection' +% p = paramValue(valIdx, ... +% options) - creates a parameter value from +% value index and the options +% p = paramValue(valIdx, ... +% options, ... +% selectionMode) - creates a parameter value from +% value index, options and +% selection mode. +% +% VERSION: $Id: paramValue.m,v 1.29 2011/04/07 11:01:28 ingo Exp $ +% +% SEE ALSO: ltpda_obj, ltpda_nuo, param, plist +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +classdef (Sealed = true, Hidden = true) paramValue < ltpda_nuo + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Property definition % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %---------- Public (read/write) Properties ---------- + properties + end + + %---------- Protected read-only Properties ---------- + properties (SetAccess = protected) + valIndex = -1; % Index to the value inside 'options' + options = {}; % Possible values for 'val' if they exist + selection = 0; % Selection mode for the 'options' + property = struct([]); % A list which contains all additional infromation about the value like: min, max, ... + end + + %---------- Protected Properties ---------- + properties (SetAccess = protected) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Check property setting % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods + function set.valIndex(obj, val) + if isnumeric(val) + obj.valIndex = val; + else + error('### The value for the property ''valIndex'' must be a index (Interger) to the options. The value is from the class %s', class(val)); + end + end + function set.options(obj, val) + if iscell(val) + obj.options = val; + else + error('### The value for the property ''options'' must be a cell with all possible values. The value is from the class %s', class(val)); + end + end + function set.selection(obj, val) + if isnumeric(val) + obj.selection = val; + else + error('### The value for the property ''selection'' must be a Interger. The value is from the class %s', class(val)); + end + end + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Constructor % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods + function obj = paramValue(varargin) + + switch nargin + case 0 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%% no input %%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % Do nothing + + case 1 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%% one input %%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + if isa(varargin{1}, 'paramValue') + %%%%%%%%%% obj = paramValue(paramValue) %%%%%%%%%% + obj = copy(varargin{1}, 1); + + elseif isa(varargin{1}, 'plist') + %%%%%%%%%% obj = paramValue(plist) %%%%%%%%%% + + if nparams(varargin{1}) == 0 + %%%%%%%%%% obj = paramValue(plist()) %%%%%%%%%% + %%% is the plist is empty then return an empty paramValue object + + else + %%%%%%%%%% pl = plist('valIndex', 1, 'OPTIONS', {'a', 'b'}, 'SELECTION', 0) %%%%%%%%%% + %%%%%%%%%% obj = paramValue(pl) %%%%%%%%%% + pl = varargin{1}; + pl_valIndex = pl.find('valIndex'); + pl_options = pl.find('options'); + pl_selection = pl.find('selection'); + + % Set the value index to 1 if there is only one option. + if isempty(pl_valIndex) && numel(pl_options) == 1 + pl_valIndex = 1; + end + + if isempty(pl_valIndex) + error('### building a parameter from a plist requires one value index in the plist is called ''valIndex'''); + end + if isempty(pl_options) + error('### building a parameter from a plist requires at least one option in the plist is calles ''options'''); + end + + obj.valIndex = pl_valIndex; + obj.options = pl_options; + if ~isempty(pl_selection) + obj.selection = pl_selection; + end + end + + elseif isstruct(varargin{1}) + %%%%%%%%%% obj = paramValue(struct) %%%%%%%%%% + obj = fromStruct(obj, varargin{1}); + + else + error('### Unknown single input paramValue constructor'); + end + + case 2 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%% two inputs %%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %%%%%%%%%% obj = paramValue(valIndex, {options}) %%%%%%%%%% + obj.valIndex = varargin{1}; + obj.options = varargin{2}; + + case 3; + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%% three inputs %%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %%%%%%%% obj = paramValue(valIndex, {options}, selection) %%%%%%%% + obj.valIndex = varargin{1}; + obj.options = varargin{2}; + if varargin{3} ~= obj.selection + obj.selection = varargin{3}; + end + otherwise + error('### Unknown number of arguments.'); + end + + % Plausibility check. + if ~(obj.valIndex <= numel(obj.options)) + error('### The valIndex must point to one element inside the ''options''. But valIndex is %d and the length of ''options'' is %d', obj.valIndex, numel(obj.options)); + end + + end + end + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (public) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods + %%% Define Abstract methods + varargout = char(varargin) + varargout = copy(varargin) + varargout = display(varargin) + + varargout = getVal(varargin) + varargout = getOptions(varargin) + + varargout = setValIndex(varargin) + varargout = setValIndexAndOptions(varargin) + varargout = setOptions(varargin) + varargout = setSelection(varargin) + + varargout = setProperty(varargin) + varargout = getProperty(varargin) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (protected) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Access = protected) + varargout = fromStruct(varargin) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (private) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Access = private) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (Static, Public) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Static = true) + + + % Param Value types + function out = EMPTY_STRING + out = ''; + end + function out = EMPTY_DOUBLE + out = []; + end + function out = EMPTY_CELL + out = {}; + end + + function out = YES_NO + out = {1, {'yes', 'no'}, paramValue.SINGLE}; + end + function out = NO_YES + out = {1, {'no', 'yes'}, paramValue.SINGLE}; + end + + function out = DATA_TYPES + out = {4,{'tsdata', 'fsdata', 'xydata', 'cdata'}, paramValue.SINGLE}; + end + + function out = WINDOW + prefs = getappdata(0, 'LTPDApreferences'); + dwin = find(strcmpi(char(prefs.getMiscPrefs.getDefaultWindow), specwin.getTypes)); + out = {dwin, specwin.getTypes, paramValue.SINGLE}; + end + + function out = STRING_VALUE(s) + out = {1, {s}, paramValue.OPTIONAL}; + end + + function out = DOUBLE_VALUE(v) + out = {1, {v}, paramValue.OPTIONAL}; + end + + function out = DETREND_ORDER + out = {1, {-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, paramValue.SINGLE}; + end + + function out = TRUE_FALSE + out = {1, {true, false}, paramValue.SINGLE}; + end + + function out = FALSE_TRUE + out = {1, {false, true}, paramValue.SINGLE}; + end + + function out = TIMEFORMAT + prefs = getappdata(0, 'LTPDApreferences'); + tf = {... + 'dd-mm-yyyy HH:MM:SS', ... + 'yyyy-mm-dd HH:MM:SS', ... + 'dd-mm-yyyy HH:MM:SS.FFF', ... + 'yyyy-mm-dd HH:MM:SS.FFF', ... + 'HH:MM:SS dd-mm-yyyy', ... + 'HH:MM:SS yyyy-mm-dd', ... + 'HH:MM:SS.FFF dd-mm-yyyy', ... + 'HH:MM:SS.FFF yyyy-mm-dd', ... + 'dd.mm.yyyy HH:MM:SS', ... + 'yyyy.mm.dd HH:MM:SS', ... + 'dd.mm.yyyy HH:MM:SS.FFF', ... + 'yyyy.mm.dd HH:MM:SS.FFF', ... + 'HH:MM:SS dd.mm.yyyy', ... + 'HH:MM:SS yyyy.mm.dd', ... + 'HH:MM:SS.FFF dd.mm.yyyy', ... + 'HH:MM:SS.FFF yyyy.mm.dd', ... + 'MM:SS', ... + 'MM:SS.FFF'}; + + idx = find(strcmp(char(prefs.getTimePrefs.getTimestringFormat), tf)); + if isempty(idx) + tf = [{char(prefs.getTimePrefs.getTimestringFormat)} tf]; + idx = 1; + end + out = {idx, tf, paramValue.OPTIONAL}; + end + + function out = TIMEZONE + prefs = getappdata(0, 'LTPDApreferences'); + tz = utils.timetools.getTimezone; + + idx = find(strcmp(prefs.getTimePrefs.getTimeTimezone(), tz)); + out = {idx, tz, paramValue.SINGLE}; + end + + function res = OPTIONAL(); res = 0; end + function res = SINGLE(); res = 1; end + function res = MULTI(); res = 2; end + function str = getSelectionMode(val) + switch val + case 0 + str = 'OPTIONAL'; + case 1 + str = 'SINGLE'; + case 2 + str = 'MULTI'; + otherwise + str = '''selection'' is not valid!'; + end + end + + varargout = update_struct(varargin); + + function out = VEROUT() + out = '$Id: paramValue.m,v 1.29 2011/04/07 11:01:28 ingo Exp $'; + end + + function ii = getInfo(varargin) + ii = utils.helper.generic_getInfo(varargin{:}, 'paramValue'); + end + + function out = SETS() + out = {'Default'}; + end + + function out = getDefaultPlist(set) + switch lower(set) + case 'default' + out = plist(); + otherwise + error('### Unknown set [%s]', set'); + end + end + + function obj = initObjectWithSize(n,m) + obj = paramValue.newarray([n m]); + end + + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (Static, Private) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Static = true, Access = private) + end + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Methods (static, hidden) % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + methods (Static = true, Hidden = true) + varargout = loadobj(varargin) + end + +end +