view m-toolbox/classes/+utils/@helper/struct2obj.m @ 23:a71a40911c27
database-connection-manager
Update check for repository connection parameter in constructors
author
Daniele Nicolodi <nicolodi@science.unitn.it>
date
Mon, 05 Dec 2011 16:20:06 +0100 (2011-12-05)
parents
f0afece42f48
children
line source
+ − % STRUCT2OBJ converts a structure to the wanted object.
+ − %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ − %
+ − % DESCRIPTION: STRUCT2OBJ converts a structure to the wanted object.
+ − %
+ − % CALL: objs = struct2obj(struct, class_name)
+ − % objs = struct2obj(struct)
+ − %
+ − % If the class type is not specified, then the fieldnames of the input
+ − % structure are compared to the fieldnames of all LTPDA classes until a
+ − % matching class is found.
+ − %
+ − % INPUTS: struct: Structure which should be converted
+ − % class_name: Class name
+ − %
+ − % OUTPUTS: objs: Vector of the wanted objects.
+ − %
+ − % VERSION: $Id: struct2obj.m,v 1.4 2008/10/16 15:45:39 ingo Exp $
+ − %
+ − % HISTORY: 09-05-07 M Hewitson
+ − % Creation
+ − %
+ − %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ −
+ − function varargout = struct2obj(varargin)
+ −
+ − if nargin < 1
+ − error('### Unknown number of inputs.%s### Please use: struct2obj(struct, class_name)', char(10))
+ − end
+ −
+ − obj_struct = varargin{1};
+ − if nargin >= 2
+ − class_name = varargin{2};
+ − else
+ − class_name = utils.helper.classFromStruct(obj_struct);
+ − end
+ −
+ − if isempty(class_name)
+ − error('### The input structure doesn''t match any LTPDA class.');
+ − end
+ −
+ − obj_vec = [];
+ −
+ − for jj = 1:numel(obj_struct)
+ − if isstruct(obj_struct(jj))
+ − if strcmp(class_name, 'sym')
+ − obj = sym(obj_struct(jj).s);
+ − else
+ − obj = feval(class_name, obj_struct(jj));
+ − end
+ − obj_vec = [obj_vec obj];
+ − elseif isa(obj_struct(jj), class_name)
+ − obj_vec = [obj_vec obj_struct(jj)];
+ − else
+ − error('### Unknown Object (%s) for a %s object.', class(hist_s(jj)));
+ − end
+ − end
+ −
+ − obj_vec = reshape(obj_vec, size(obj_struct));
+ −
+ − varargout{1} = obj_vec;
+ −