view m-toolbox/classes/+utils/@helper/getClassFromStruct.m @ 49:0bcdf74587d1 database-connection-manager

Cleanup
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 07 Dec 2011 17:24:36 +0100
parents f0afece42f48
children
line wrap: on
line source



function objCl = getClassFromStruct(obj_struct)
  
  objCl = '';
  if isfield(obj_struct, 'class')
    objCl = obj_struct.class;
  elseif isstruct(obj_struct)
    cls = utils.helper.ltpda_non_abstract_classes();
    snames = fieldnames(obj_struct);
    for jj=1:numel(cls)
      cl = cls{jj};
      m = meta.class.fromName(cl);
      p = [m.Properties{:}];
      idxPub = [strcmpi({p.GetAccess}, 'public')] & ~[p.Hidden];
      pubCnames = {p(idxPub).Name}; % public and not hidden properties. (same as properties(cl))
      allCnames = {p.Name}; % 
      if numel(allCnames) == numel(snames) && all(utils.helper.ismember(snames, allCnames))
        objCl = cl;
        return;
      elseif numel(pubCnames) == numel(snames) && all(utils.helper.ismember(snames, pubCnames))
        objCl = cl;
        return;
      end
    end
  end
  
end