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.16 2007/10/22 12:01:13 ingo Exp $';
0034
0035
0036
0037 function h = init()
0038 h.name = 'None';
0039 h.version = VERSION;
0040 h.plist = plist();
0041 h.inhists = [];
0042 h.invars = {};
0043 h.n = -1;
0044 h.pn = -1;
0045 h.created = time;
0046 h.consver = VERSION;
0047 h = class(h, 'history');
0048 end
0049
0050
0051
0052
0053
0054 if nargin == 0
0055
0056 h = init();
0057
0058 elseif nargin == 1
0059
0060
0061 if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0062 h = fromxml(varargin{1});
0063
0064 elseif ischar(varargin{1})
0065
0066 filename = varargin{1};
0067 [path, name, ext, vers] = fileparts(filename);
0068 switch ext
0069 case '.mat'
0070 h = load(filename);
0071 case '.xml'
0072 h = xmlparse(history, filename);
0073 otherwise
0074 error('### Unknown file type.');
0075 end
0076
0077 elseif isstruct(varargin{1})
0078
0079 h = init();
0080
0081 hstruct = varargin{1};
0082 h.name = hstruct.name;
0083 h.version = hstruct.version;
0084 pl = hstruct.plist;
0085 if isstruct(pl)
0086 pl = plist(pl);
0087 end
0088 h.plist = pl;
0089 inh = hstruct.inhists;
0090 inhists = [];
0091 for j=1:length(inh)
0092 if isstruct(inh(j))
0093 inhists = [inhists history(inh(j))];
0094 else
0095 inhists = [inhists inh(j)];
0096 end
0097 end
0098 h.inhists = inhists;
0099 h.invars = hstruct.invars;
0100 h.n = hstruct.n;
0101 h.pn = hstruct.pn;
0102 created = hstruct.created;
0103 if isstruct(created)
0104 created = time(created);
0105 end
0106 h.created = created;
0107 h.consver = hstruct.consver;
0108
0109
0110 else
0111
0112 h = varargin{1};
0113 h.consver = VERSION;
0114 end
0115
0116
0117 elseif nargin == 2
0118
0119 if isa(varargin{1}, 'database')
0120 h = retrieve(varargin{1}, varargin{2:end});
0121 else
0122 h = init();
0123 h.name = varargin{1};
0124 h.version = varargin{2};
0125 end
0126
0127
0128 elseif nargin == 3
0129 h = init();
0130 h.name = varargin{1};
0131 h.version = varargin{2};
0132 h.plist = varargin{3};
0133
0134
0135 elseif nargin == 4
0136 h = init();
0137 h.name = varargin{1};
0138 h.version = varargin{2};
0139 h.plist = varargin{3};
0140 h.inhists = varargin{4};
0141
0142 else
0143 error('### Unknown number of constructor arguments.');
0144 end
0145
0146 end