FUNCTION is_subclass
(sub : class, super : class) : LOGICAL;
IF (NOT EXISTS(sub)) OR (NOT EXISTS(super)) THEN RETURN(UNKNOWN); END_IF; IF sub = super THEN RETURN(TRUE); END_IF; IF NOT EXISTS(sub.its_superclass) THEN RETURN(FALSE); END_IF; IF SIZEOF(sub.its_superclass.definition) = 1 THEN
IF (sub.its_superclass.definition[1] = super) THEN RETURN(TRUE); ELSE RETURN(is_subclass(sub.its_superclass.definition[1], super)); END_IF; ELSE RETURN(UNKNOWN); END_IF; END_FUNCTION; -- is_subclass
|