Home > classes > @pole > set.m

set

PURPOSE ^

SET set a pole property.

SYNOPSIS ^

function p = set(p, varargin)

DESCRIPTION ^

 SET set a pole property.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION: SET a history property.

 CALL:        p = set(p, 'name',    'name');
              p = set(p, 'f',        f);
              p = set(p, 'q',        q);
              p = set(p, 'ri',       ri);
              p = set(p, 'created',  time-object);
              p = set(p, 'version', 'plist/set.m,v 1.7...');

 VERSION:     $Id: set.m,v 1.10 2008/02/16 22:22:42 hewitson Exp $

 HISTORY:     30-01-07 M Hewitson
                 Creation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function p = set(p, varargin)
0002 % SET set a pole property.
0003 %
0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0005 %
0006 % DESCRIPTION: SET a history property.
0007 %
0008 % CALL:        p = set(p, 'name',    'name');
0009 %              p = set(p, 'f',        f);
0010 %              p = set(p, 'q',        q);
0011 %              p = set(p, 'ri',       ri);
0012 %              p = set(p, 'created',  time-object);
0013 %              p = set(p, 'version', 'plist/set.m,v 1.7...');
0014 %
0015 % VERSION:     $Id: set.m,v 1.10 2008/02/16 22:22:42 hewitson Exp $
0016 %
0017 % HISTORY:     30-01-07 M Hewitson
0018 %                 Creation
0019 %
0020 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0021 
0022 %%% REMARK: This function don't use the generic set-function!!!
0023 
0024 VERSION       = '$Id: set.m,v 1.10 2008/02/16 22:22:42 hewitson Exp $';
0025 CATEGORY      = 'Helper';
0026 DEFAULT_PLIST =  plist('name',    '',      ...
0027                        'f',       [],      ...
0028                        'q',       [],      ...
0029                        'ri',      [],      ...
0030                        'plist',   plist(), ...
0031                        'version', '',      ...
0032                        'created', time());
0033 
0034 propArgin    = varargin;
0035 pole_fields = fieldnames(p);
0036 
0037 %%% Plausible check: The default parameter list must contain all fieldnames
0038 if length(pole_fields) ~= nparams(DEFAULT_PLIST)
0039   error('\n### The DEFAULT_PLIST doesn''t contain all field names of the %s-class!', class(p));
0040 end
0041 
0042 %%% Check if this is a special call: default parameter list, cvs-version, category
0043 if ~isempty(varargin{1}) == 1 && ischar(varargin{1})
0044   in = varargin{1};
0045   if strcmp(in, 'Params')
0046     p = DEFAULT_PLIST;
0047     return
0048   elseif strcmp(in, 'Version')
0049     p = VERSION;
0050     return
0051   elseif strcmp(in, 'Category')
0052     p = CATEGORY;
0053     return
0054   end
0055 end
0056 
0057 if nargin >= 2 && isa(propArgin{1}, 'plist')
0058   pl         = propArgin{1};
0059   propArgin = {};
0060   for ii = 1:nparams(pl)
0061     %% The 'key' name of a plist/param is always stored with upper case
0062     %% characters. To set a ao property with this key we have to lower the
0063     %% 'key' characters.
0064     propArgin{end+1} = lower(pl.params(ii).key);
0065     propArgin{end+1} =       pl.params(ii).val;
0066   end
0067 end
0068 
0069 while length(propArgin) >= 2
0070 
0071   prop       = propArgin{1};
0072   val        = propArgin{2};
0073   propArgin = propArgin(3:end);
0074 
0075   %%% Special case: If propName is equal to 'f' then we have to compute 'ri'
0076   if strcmp(prop, 'f')
0077     for jj = 1:numel(p)
0078       p(jj).f  = val;
0079       p(jj).ri = pfq2ri(p(jj).f, p(jj).q);
0080     end
0081 
0082   %%% Special case: If propName is equal to 'q' then we have to compute 'ri'
0083   elseif strcmp(prop, 'q')
0084     for jj = 1:numel(p)
0085       p(jj).q  = val;
0086       p(jj).ri = pfq2ri(p(jj).f, p(jj).q);
0087     end
0088 
0089   %%% Special case: If propName is equal to 'ri' then we have to compute 'q' and 'f'
0090   elseif strcmp(prop, 'ri')
0091     if size(val,2) > size(val,1), val = val.'; end
0092     for jj = 1:numel(p)
0093       if length(val) == 1
0094         p(jj).ri = [val; conj(val)];
0095       else
0096         p(jj).ri = val;
0097       end
0098       [p(jj).f, p(jj).q] = pri2fq(p(jj).ri);
0099     end
0100 
0101   %%% Normal case
0102   elseif ismember(prop, pole_fields)
0103     for jj = 1:numel(p)
0104       p(jj).(prop) = val;
0105     end
0106   else
0107     error('### ''%s'' is not a valid %s-object property.', prop, class(p));
0108   end
0109 
0110 end
0111 
0112 if (nargout == 0)
0113   display(p);
0114   error('\n### No output variable!\n### Please use: %s = set(%s, ''key'', ''value'');', inputname(1), inputname(1));
0115 end
0116

Generated on Mon 31-Mar-2008 13:54:54 by m2html © 2003