FUNCTION no_cyclic_domain_reference
(ref : maths_space_or_function, used : SET [0:?] OF maths_function) : BOOLEAN;
LOCAL typenames : SET OF STRING := TYPEOF (ref); func : maths_function; END_LOCAL; IF (NOT EXISTS (ref)) OR (NOT EXISTS (used)) THEN RETURN (FALSE); END_IF; IF (schema_prefix + 'MATHS_SPACE') IN typenames THEN RETURN (TRUE); END_IF; func := ref; IF func IN used THEN RETURN (FALSE); END_IF; IF (schema_prefix + 'CONSTANT_FUNCTION') IN typenames THEN RETURN (no_cyclic_domain_reference (func\constant_function.source_of_domain, used + [func])); END_IF; IF (schema_prefix + 'SELECTOR_FUNCTION') IN typenames THEN RETURN (no_cyclic_domain_reference (func\selector_function.source_of_domain, used + [func])); END_IF; IF (schema_prefix + 'PARALLEL_COMPOSED_FUNCTION') IN typenames THEN RETURN (no_cyclic_domain_reference ( func\parallel_composed_function.source_of_domain, used + [func])); END_IF; RETURN (TRUE); END_FUNCTION; -- no_cyclic_domain_reference
|