view m-toolbox/classes/+utils/@helper/isSubclassOf.m @ 2:18e956c96a1b
database-connection-manager
Add LTPDADatabaseConnectionManager implementation. Matlab code
author
Daniele Nicolodi <nicolodi@science.unitn.it>
date
Sun, 04 Dec 2011 21:23:09 +0100 (2011-12-04)
parents
f0afece42f48
children
line source
+ − % ISSUBCLASSOF determines if the one class is a subclass of another
+ − %
+ − % CALL:
+ − % res = isSubclassOf('class1', 'class2')
+ − % res = isSubclassOf(metaObject, 'class2');
+ − % res = isSubclassOf(metaObject1, metaObject2);
+ − %
+ − % $Id: isSubclassOf.m,v 1.3 2011/04/29 15:02:17 ingo Exp $
+ − %
+ − function res = isSubclassOf(varargin)
+ −
+ − if nargin ~= 2
+ − help(mfilename);
+ − error('Incorrect inputs');
+ − end
+ −
+ − mo1 = getMetaObject(varargin{1});
+ − mo2 = getMetaObject(varargin{2});
+ −
+ − if isempty(mo1) || isempty(mo2)
+ − error('### One of the inputs is not a meta class object/name');
+ − end
+ −
+ − res = lt(mo1, mo2);
+ −
+ − end
+ −
+ − function obj = getMetaObject(in)
+ − if ischar(in)
+ − obj = meta.class.fromName(in);
+ − elseif isa(in, 'meta.class')
+ − obj = in;
+ − else
+ − error('Unknown input format for object of class %s', class(in));
+ − end
+ − end
+ −
+ − function res = checkIsSubclass(mo1, mo2)
+ −
+ − res = false;
+ −
+ − % is the super class a user object subclass?
+ − if strcmp(mo1.Name, mo2.Name)
+ − res = true;
+ − else
+ − for kk=1:numel(mo1.SuperclassList)
+ − mo = mo1.SuperclassList(kk);
+ −
+ − res = checkIsSubclass(mo, mo2);
+ − if res
+ − return;
+ − else
+ − % keep searching...
+ − end
+ −
+ − end
+ − end
+ − end