diff m-toolbox/classes/+utils/@models/processModelInputs.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/+utils/@models/processModelInputs.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,85 @@
+% PROCESSMODELINPUTS processes the various input options for built-in
+% models. 
+% 
+% The function requires various pieces of information about the model:
+% 
+% [info, pl, constructorInfo, fcn] = ...
+%         processModelInputs(options, ... 
+%                            modelname, ...
+%                            getModelDescription,  ...
+%                            getModelDocumentation, ...
+%                            getVersion, ...
+%                            versionTable)
+% 
+% options - the options passed by the constructor to the model
+%                       
+% 
+
+function [info, pl, constructorInfo, fcn] = processModelInputs(options, modelname, getModelDescription, getModelDocumentation, getVersion, versionTable)
+  
+  info = [];
+  pl   = [];
+  constructorInfo = [];
+  fcn  = [];
+    
+  if ischar(options{1})
+    if strcmpi(options{1}, 'describe') || strcmpi(options{1}, 'description')
+      if numel(options) == 2 && ischar(options{2})
+        version = options{2};
+      else
+        vt = versionTable();
+        version = vt{1};
+      end
+      info = utils.models.getDescription(getModelDescription, versionTable, version, getVersion);
+    elseif strcmpi(options{1}, 'doc')
+      info = getModelDocumentation();
+      if isempty(info)
+        info = 'no documentation';
+      end
+    elseif strcmpi(options{1}, 'versionTable')
+      info = versionTable();
+    elseif strcmpi(options{1}, 'version')
+      info = getVersion();
+    elseif strcmpi(options{1}, 'plist') % for backwards compatibility
+      if numel(options) == 2 && ischar(options{2})
+        info = utils.models.getDefaultPlist(getModelDescription, versionTable, options{2});
+      else
+        info = utils.models.getDefaultPlist(getModelDescription, versionTable);
+      end
+    elseif strcmpi(options{1}, 'info')
+      if numel(options) == 2 && ischar(options{2})
+        ver = options{2};
+      else
+        pl = utils.models.getDefaultPlist(getModelDescription, versionTable);
+        ver = pl.find('version');
+      end
+      info = utils.models.getInfo(modelname, getModelDescription, versionTable, ver, getVersion);
+    else
+      error('incorrect inputs');
+    end
+    return
+  end
+  
+  % Inputs and default values
+  userPlist = options{1};
+  version = userPlist.find('version');
+  if isempty(version)
+    vers = versionTable();
+    version = vers{1};
+  end
+  if numel(options) > 1
+    constructorInfo = options{2};
+    pl = combine(userPlist, constructorInfo.plists, utils.models.getDefaultPlist(getModelDescription, versionTable, version));
+  else
+    constructorInfo = '';
+    pl = combine(userPlist, utils.models.getDefaultPlist(getModelDescription, versionTable, version));
+  end
+    
+  % Build the object
+  fcn = utils.models.functionForVersion(getModelDescription, versionTable, version);
+  
+  if ~isempty(constructorInfo)
+    constructorInfo.addChildren(utils.models.getInfo(modelname, getModelDescription, versionTable, version, getVersion));
+  end
+  
+end
\ No newline at end of file