FUNCTION acyclic_composite_text
(start_composite : composite_text, child_text : SET [1:?] OF text_or_character) : LOGICAL;
LOCAL i : INTEGER; local_composite_text : SET [0:?] OF composite_text; local_annotation_text : SET [0:?] OF annotation_text; local_children : SET [0:?] OF text_or_character; END_LOCAL;
local_composite_text := QUERY (child <* child_text | ('PRESENTATION_DEFINITION_SCHEMA.COMPOSITE_TEXT' IN TYPEOF (child)));
IF (SIZEOF (local_composite_text) > 0) THEN REPEAT i := 1 TO HIINDEX (local_composite_text); IF (start_composite :=: local_composite_text[i]) THEN RETURN (FALSE); END_IF; END_REPEAT; END_IF;
local_children := child_text;
IF (SIZEOF (local_composite_text)) > 0 THEN REPEAT i := 1 TO HIINDEX (local_composite_text); local_children := local_children + local_composite_text[i].collected_text; END_REPEAT; END_IF;
local_annotation_text := QUERY (child <* child_text | ('PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TEXT' IN TYPEOF (child)));
IF (SIZEOF (local_annotation_text) > 0) THEN REPEAT i := 1 TO HIINDEX (local_annotation_text); local_children := local_children + QUERY (item <* local_annotation_text[i]\mapped_item. mapping_source.mapped_representation.items | SIZEOF(['PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TEXT', 'PRESENTATION_DEFINITION_SCHEMA.COMPOSITE_TEXT'] * TYPEOF(item)) > 0); END_REPEAT; END_IF;
IF (local_children :<>: child_text) THEN RETURN (acyclic_composite_text (start_composite, local_children)); ELSE RETURN (TRUE); END_IF; END_FUNCTION; -- acyclic_composite_text
|