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.10 2007/10/15 17:16:56 ingo Exp $';
0024
0025
0026
0027 function pl = init()
0028 pl.name = 'plist object';
0029 pl.params = [];
0030 pl.version = VERSION;
0031 pl.created = time;
0032 pl = class(pl, 'plist');
0033 end
0034
0035
0036
0037
0038
0039 if nargin == 0
0040
0041 pl = init();
0042
0043 elseif nargin == 1
0044
0045
0046 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0047 pl = fromxml(varargin{1});
0048
0049
0050 elseif isstruct(varargin{1})
0051 plstruct = varargin{1};
0052
0053 pi = plstruct.params;
0054 params = [];
0055 for j=1:length(pi)
0056 if isstruct(pi(j))
0057 params = [params param(pi(j))];
0058 elseif isa(pi(j), 'param')
0059 params = [params pi(j)];
0060 else
0061 error ('### the parameter is not from class param.')
0062 end
0063 end
0064
0065 pl = init();
0066 pl.name = plstruct.name;
0067 created = plstruct.created;
0068 if isstruct(created)
0069 created = time(created);
0070 end
0071 pl.params = params;
0072 pl.version = plstruct.version;
0073
0074
0075 elseif ischar(varargin{1})
0076
0077 filename = varargin{1};
0078 [path, name, ext, vers] = fileparts(filename);
0079 switch ext
0080 case '.mat'
0081 pl = load(filename);
0082 case '.xml'
0083 pl = xmlparse(plist, filename);
0084 otherwise
0085 error('### Unknown file type.');
0086 end
0087
0088 elseif isa(varargin{1}, 'param')
0089 pl = init();
0090 pl.params = varargin{1};
0091
0092 else
0093 error ('### unknown arguments to construct a parameter list')
0094 end
0095 elseif nargin == 2
0096
0097 if isa(varargin{1}, 'database')
0098
0099 pl = retrieve(varargin{1}, varargin{2:end});
0100
0101
0102 else
0103 pl = init();
0104 pl.params = param(varargin{1}, varargin{2});
0105 end
0106
0107 elseif nargin > 2
0108
0109
0110 params = [];
0111 argin = varargin;
0112 while length(argin) >= 2
0113 key = argin{1};
0114 val = argin{2};
0115 argin = argin(3:end);
0116
0117 if ~ischar(key)
0118 error('### the key ''%s'' must be a character string', key)
0119 end
0120
0121 params = [params param(key, val)];
0122 end
0123
0124 pl = init();
0125 pl.params = params;
0126
0127 else
0128 error('### Unknown number of constructor arguments.');
0129 end
0130
0131 end
0132
0133