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.9 2007/08/31 17:40:08 hewitson Exp $';
0030
0031
0032
0033 function p = init()
0034 p.key = '';
0035 p.val = [];
0036 p.version = VERSION;
0037 p = class(p, 'param');
0038 end
0039
0040
0041
0042
0043
0044 if nargin == 0
0045
0046 p = init();
0047
0048 elseif nargin == 1
0049
0050
0051 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0052 p = fromxml(varargin{1});
0053
0054
0055 elseif isa(varargin{1}, 'plist')
0056
0057 pl = varargin{1};
0058 key = find(pl, 'key');
0059 val = find(pl, 'val');
0060 if isempty(key)
0061 error('### building a parameter from a plist requires one parameter in the plist is called ''key''');
0062 end
0063 if isempty(val)
0064 error('### building a parameter from a plist requires one parameter in the plist is called ''val''');
0065 end
0066
0067 p = init();
0068 p.key = key;
0069 p.val = val;
0070
0071
0072 elseif isstruct(varargin{1})
0073
0074 p = init();
0075 p.key = varargin{1}.key;
0076 p.val = varargin{1}.val;
0077 p.version = varargin{1}.version;
0078
0079 elseif ischar(varargin{1})
0080
0081 filename = varargin{1};
0082 [path, name, ext, vers] = fileparts(filename);
0083 switch ext
0084 case '.mat'
0085 p = load(filename);
0086 case '.xml'
0087 p = xmlparse(param, filename);
0088 otherwise
0089 error('### Unknown file type.');
0090 end
0091
0092 else
0093 error('### unknown constructor type for param object.');
0094 end
0095 elseif nargin == 2
0096
0097 if isa(varargin{1}, 'plist') || isa(varargin{2}, 'plist')
0098 if isa(varargin{1}, 'plist')
0099 pl = varargin{1};
0100 pi = pl(1);
0101 key = pi.key;
0102 else
0103 val = varargin{1};
0104 end
0105
0106 if isa(varargin{2}, 'plist')
0107 pl = varargin{2};
0108 pi = pl(1);
0109 key = pi.key;
0110 else
0111 val = varargin{2};
0112 end
0113
0114 p.key = key;
0115 p.val = val;
0116 p.version = VERSION;
0117 p = class(p, 'param');
0118
0119
0120 elseif isa(varargin{1}, 'database')
0121
0122 p = retrieve(varargin{1}, varargin{2:end});
0123
0124
0125 else
0126 p = init();
0127 p.key = varargin{1};
0128 p.val = varargin{2};
0129 end
0130 else
0131 error('### Unknown number of constructor arguments.');
0132 end
0133
0134 end
0135
0136
0137
0138
0139