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.14 2007/08/31 17:40:08 hewitson Exp $';
0034
0035
0036
0037 function h = init()
0038 h.name = 'None';
0039 h.version = VERSION;
0040 h.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 h.created = hstruct.created;
0103 h.consver = hstruct.consver;
0104
0105
0106 else
0107
0108 h = varargin{1};
0109 h.consver = VERSION;
0110 end
0111
0112
0113 elseif nargin == 2
0114
0115 if isa(varargin{1}, 'database')
0116 h = retrieve(varargin{1}, varargin{2:end});
0117 else
0118 h = init();
0119 h.name = varargin{1};
0120 h.version = varargin{2};
0121 end
0122
0123
0124 elseif nargin == 3
0125 h = init();
0126 h.name = varargin{1};
0127 h.version = varargin{2};
0128 h.plist = varargin{3};
0129
0130
0131 elseif nargin == 4
0132 h = init();
0133 h.name = varargin{1};
0134 h.version = varargin{2};
0135 h.plist = varargin{3};
0136 h.inhists = varargin{4};
0137
0138 else
0139 error('### Unknown number of constructor arguments.');
0140 end
0141
0142 end