0001 function pl = plist(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 VERSION = '$Id: plist.m,v 1.9 2007/08/31 17:40:09 hewitson Exp $';
0024
0025
0026
0027 function pl = init()
0028 pl.params = [];
0029 pl.version = VERSION;
0030 pl = class(pl, 'plist');
0031 end
0032
0033
0034
0035
0036
0037 if nargin == 0
0038
0039 pl = init();
0040
0041 elseif nargin == 1
0042
0043
0044 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0045 pl = fromxml(varargin{1});
0046
0047
0048 elseif isstruct(varargin{1})
0049 plstruct = varargin{1};
0050 pi = plstruct.params;
0051 params = [];
0052 for j=1:length(pi)
0053 if isstruct(pi(j))
0054 params = [params param(pi(j))];
0055 elseif isa(pi(j), 'param')
0056 params = [params pi(j)];
0057 else
0058 error ('### the parameter is not from class param.')
0059 end
0060 end
0061
0062 pl = init();
0063 pl.params = params;
0064 pl.version = plstruct.version;
0065
0066
0067 elseif ischar(varargin{1})
0068
0069 filename = varargin{1};
0070 [path, name, ext, vers] = fileparts(filename);
0071 switch ext
0072 case '.mat'
0073 pl = load(filename);
0074 case '.xml'
0075 pl = xmlparse(plist, filename);
0076 otherwise
0077 error('### Unknown file type.');
0078 end
0079
0080 elseif isa(varargin{1}, 'param')
0081 pl = init();
0082 pl.params = varargin{1};
0083
0084 else
0085 error ('### unknown arguments to construct a parameter list')
0086 end
0087 elseif nargin == 2
0088
0089 if isa(varargin{1}, 'database')
0090
0091 pl = retrieve(varargin{1}, varargin{2:end});
0092
0093 else
0094 pl = init();
0095 pl.params = param(varargin{1}, varargin{2});
0096 end
0097
0098 elseif nargin > 1
0099
0100
0101 params = [];
0102 argin = varargin;
0103 while length(argin) >= 2
0104 key = argin{1};
0105 val = argin{2};
0106 argin = argin(3:end);
0107
0108 if ~ischar(key)
0109 error('### the key ''%s'' must be a character string', key)
0110 end
0111
0112 params = [params param(key, val)];
0113 end
0114
0115 pl = init();
0116 pl.params = params;
0117
0118 else
0119 error('### Unknown number of constructor arguments.');
0120 end
0121
0122 end
0123
0124