0001 function h = history(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
0030
0031
0032
0033 VERSION = '$Id: history.m,v 1.17 2007/12/05 16:26:22 ingo Exp $';
0034
0035
0036 if nargin == 2 && isa(varargin{1}, 'history') && ischar(varargin{2})
0037 if strcmp(varargin{2}, 'Params')
0038 h = plist();
0039 return
0040 elseif strcmp(varargin{2}, 'Version')
0041 h = VERSION;
0042 return
0043 end
0044 end
0045
0046
0047
0048 function h = init()
0049 h.name = 'None';
0050 h.version = VERSION;
0051 h.plist = plist();
0052 h.inhists = [];
0053 h.invars = {};
0054 h.n = -1;
0055 h.pn = -1;
0056 h.created = time;
0057 h.consver = VERSION;
0058 h = class(h, 'history');
0059 end
0060
0061
0062
0063
0064
0065 if nargin == 0
0066
0067 h = init();
0068
0069 elseif nargin == 1
0070
0071
0072 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0073 h = fromxml(varargin{1});
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 h = load(filename);
0082 h = h.a;
0083 case '.xml'
0084 h = xmlparse(history, filename);
0085 otherwise
0086 error('### Unknown file type.');
0087 end
0088
0089 elseif isstruct(varargin{1})
0090
0091 h = init();
0092
0093 hstruct = varargin{1};
0094 h.name = hstruct.name;
0095 h.version = hstruct.version;
0096 pl = hstruct.plist;
0097 if isstruct(pl)
0098 pl = plist(pl);
0099 end
0100 h.plist = pl;
0101 inh = hstruct.inhists;
0102 inhists = [];
0103 for j=1:length(inh)
0104 if isstruct(inh(j))
0105 inhists = [inhists history(inh(j))];
0106 else
0107 inhists = [inhists inh(j)];
0108 end
0109 end
0110 h.inhists = inhists;
0111 h.invars = hstruct.invars;
0112 h.n = hstruct.n;
0113 h.pn = hstruct.pn;
0114 created = hstruct.created;
0115 if isstruct(created)
0116 created = time(created);
0117 end
0118 h.created = created;
0119 h.consver = hstruct.consver;
0120
0121
0122 else
0123 h = varargin{1};
0124 h.consver = VERSION;
0125 end
0126
0127
0128 elseif nargin == 2
0129
0130 if isa(varargin{1}, 'database')
0131 h = retrieve(varargin{1}, varargin{2:end});
0132 else
0133 h = init();
0134 h.name = varargin{1};
0135 h.version = varargin{2};
0136 end
0137
0138
0139 elseif nargin == 3
0140 if isempty(varargin{3})
0141 varargin{3} = plist();
0142 end
0143
0144 h = init();
0145 h.name = varargin{1};
0146 h.version = varargin{2};
0147 h.plist = varargin{3};
0148
0149
0150 elseif nargin == 4
0151 if isempty(varargin{3})
0152 varargin{3} = plist();
0153 end
0154
0155 h = init();
0156 h.name = varargin{1};
0157 h.version = varargin{2};
0158 h.plist = varargin{3};
0159 h.inhists = varargin{4};
0160
0161 else
0162 error('### Unknown number of constructor arguments.');
0163 end
0164
0165 end