Home > classes > @plist > plist.m

plist

PURPOSE ^

PLIST Plist class object constructor.

SYNOPSIS ^

function pl = plist(varargin)

DESCRIPTION ^

 PLIST Plist class object constructor.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION: PLIST Plist class object constructor.

 CONSTRUCTORS:

       pl = plist()                            - create an empty plist object.
       pl = plist(p)                           - create a plist with elements p
                                                 where p is an array of param objects.
       pl = plist('key1, val1, 'key2', 'val2') - create a plist with the
                                                 key/values pairs

 VERSION:     $Id: plist.m,v 1.12 2007/11/02 15:22:44 ingo Exp $

 HISTORY:     30-01-07 M Hewitson
                Creation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function pl = plist(varargin)
0002 % PLIST Plist class object constructor.
0003 %
0004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0005 %
0006 % DESCRIPTION: PLIST Plist class object constructor.
0007 %
0008 % CONSTRUCTORS:
0009 %
0010 %       pl = plist()                            - create an empty plist object.
0011 %       pl = plist(p)                           - create a plist with elements p
0012 %                                                 where p is an array of param objects.
0013 %       pl = plist('key1, val1, 'key2', 'val2') - create a plist with the
0014 %                                                 key/values pairs
0015 %
0016 % VERSION:     $Id: plist.m,v 1.12 2007/11/02 15:22:44 ingo Exp $
0017 %
0018 % HISTORY:     30-01-07 M Hewitson
0019 %                Creation
0020 %
0021 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0022 
0023 VERSION  = '$Id: plist.m,v 1.12 2007/11/02 15:22:44 ingo Exp $';
0024 
0025 %%%%%%%%%%%%%%%%%%%%   define parameter properties list   %%%%%%%%%%%%%%%%%%%%%
0026 
0027   function pl = init()
0028     pl.name     = 'plist object';
0029     pl.params   = [];
0030     pl.version  = VERSION;
0031     pl.created  = time;
0032     pl = class(pl, 'plist');
0033   end
0034 
0035 %%%%%%%%%%%%%%%%%%%%%%   Create parameter list object   %%%%%%%%%%%%%%%%%%%%%%%
0036 
0037 %%%%%%%%%%   pl = plist()   %%%%%%%%%%
0038 % create default parameter list object
0039 if nargin == 0
0040 
0041   pl = init();
0042 
0043 elseif nargin == 1
0044 
0045   %%%%%%%%%% Create from XML fragment %%%%%%%%%%%
0046   if isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl')
0047     pl = fromxml(varargin{1});
0048 
0049   %%%%%%%%%%   pl = plist(struct)   %%%%%%%%%%
0050   elseif isstruct(varargin{1})
0051     plstruct = varargin{1};
0052 
0053     pi = plstruct.params;
0054     params = [];
0055     for j=1:length(pi)
0056       if isstruct(pi(j))
0057         params = [params param(pi(j))];
0058       elseif isa(pi(j), 'param')
0059         params = [params pi(j)];
0060       else
0061         error ('### the parameter is not from class param.')
0062       end
0063     end
0064 
0065     pl         = init();
0066     pl.name    = plstruct.name;
0067     pl.created    = plstruct.created;
0068     if isstruct(pl.created)
0069       pl.created = time(pl.created);
0070     end
0071     pl.params  = params;
0072     pl.version = plstruct.version;
0073 
0074   %%%%%%%%%%% From file %%%%%%%%%%%%%%%%%%%%%%%%
0075   elseif ischar(varargin{1})
0076 
0077     filename = varargin{1};
0078     [path, name, ext, vers] = fileparts(filename);
0079     switch ext
0080       case '.mat'
0081         pl = load(filename);
0082       case '.xml'
0083         pl = xmlparse(plist, filename);
0084       otherwise
0085         error('### Unknown file type.');
0086     end
0087   %%%%%%%%%%   pl = plist(param)   %%%%%%%%%%
0088   elseif isa(varargin{1}, 'param')
0089     pl        = init();
0090     pl.params = varargin{1};
0091 
0092   else
0093     error ('### unknown arguments to construct a parameter list')
0094   end
0095 elseif nargin == 2
0096   %%%%%%%%%%%   From DATABASE   %%%%%%%%%%%
0097   if isa(varargin{1}, 'database')
0098 
0099     pl = retrieve(varargin{1}, varargin{2:end});
0100 
0101   %%%%%%%%%%   pl = plist('key1, val1)   %%%%%%%%%%
0102   else
0103     pl         = init();
0104     pl.params  = param(varargin{1}, varargin{2});
0105   end
0106 
0107 elseif nargin > 2
0108 
0109   %%%%%%%%%%   pl = plist('key1, val1, 'key2', 'val2' , ...)   %%%%%%%%%%
0110   params = [];
0111   argin  = varargin;
0112   while length(argin) >= 2
0113     key = argin{1};
0114     val = argin{2};
0115     argin = argin(3:end);
0116 
0117     if ~ischar(key)
0118       error('### the key ''%s'' must be a character string', key)
0119     end
0120 
0121     params = [params param(key, val)];
0122   end
0123 
0124   pl         = init();
0125   pl.params  = params;
0126 
0127 else
0128   error('### Unknown number of constructor arguments.');
0129 end
0130 
0131 end
0132 
0133 % END

Generated on Fri 02-Nov-2007 19:39:27 by m2html © 2003