0001 function p = param(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 VERSION = '$Id: param.m,v 1.16 2007/12/12 18:45:08 ingo Exp $';
0030
0031
0032 if nargin == 2 && ischar(varargin{2}) && strcmp(varargin{2}, 'Params')
0033 p = plist();
0034 return
0035 elseif nargin == 2 && ischar(varargin{2}) && strcmp(varargin{2}, 'Version')
0036 p = VERSION;
0037 return
0038 end
0039
0040
0041
0042
0043 function p = init()
0044 p.name = 'param object';
0045 p.key = '';
0046 p.val = [];
0047 p.created = time;
0048 p.version = VERSION;
0049 p = class(p, 'param');
0050 end
0051
0052
0053
0054
0055
0056 if nargin == 0
0057
0058 p = init();
0059
0060 elseif nargin == 1
0061
0062
0063 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0064 p = fromxml(varargin{1});
0065
0066
0067 elseif isa(varargin{1}, 'param')
0068 p = varargin{1};
0069
0070
0071 elseif isa(varargin{1}, 'plist')
0072
0073 pl = varargin{1};
0074 key = upper(find(pl, 'key'));
0075 val = find(pl, 'val');
0076 if isempty(key)
0077 error('### building a parameter from a plist requires one parameter in the plist is called ''key''');
0078 end
0079 if isempty(val)
0080 error('### building a parameter from a plist requires one parameter in the plist is called ''val''');
0081 end
0082
0083 p = init();
0084 p.key = key;
0085 p.val = val;
0086 p.name = p.key;
0087
0088
0089 elseif isstruct(varargin{1})
0090
0091 p = init();
0092 p.name = varargin{1}.name;
0093 p.key = upper(varargin{1}.key);
0094 p.val = varargin{1}.val;
0095 if isstruct(varargin{1}.created)
0096 varargin{1}.created = time(varargin{1}.created);
0097 end
0098 p.version = varargin{1}.version;
0099
0100 elseif ischar(varargin{1})
0101
0102 filename = varargin{1};
0103 [path, name, ext, vers] = fileparts(filename);
0104 switch ext
0105 case '.mat'
0106 p = load(filename);
0107 p = p.a;
0108 case '.xml'
0109 p = xmlparse(param, filename);
0110 otherwise
0111 error('### Unknown file type.');
0112 end
0113
0114 else
0115 error('### unknown constructor type for param object.');
0116 end
0117 elseif nargin == 2
0118
0119 if isa(varargin{1}, 'database')
0120
0121 p = retrieve(varargin{1}, varargin{2:end});
0122
0123
0124 else
0125 p = init();
0126 p.key = upper(varargin{1});
0127 p.val = varargin{2};
0128 p.name = p.key;
0129 end
0130 else
0131 error('### Unknown number of constructor arguments.');
0132 end
0133
0134 end
0135
0136
0137
0138
0139