|
FUNCTION acyclic_mapped_representation (parent_set : SET [0:?] OF representation, children_set : SET [0:?] OF representation_item) : BOOLEAN; LOCAL x , y : SET OF representation_item ; END_LOCAL ; x := QUERY ( z <* children_set | 'representation_schema.mapped_item' IN TYPEOF ( z ) ) ; IF SIZEOF ( x ) > 0 THEN REPEAT i := 1 TO HIINDEX ( x ) ; IF x [ i ] \ mapped_item . mapping_source . mapped_representation IN parent_set THEN RETURN ( FALSE ) ; END_IF ; IF NOT acyclic_mapped_representation ( parent_set + x [ i ] \ mapped_item . mapping_source . mapped_representation , x [ i ] \ mapped_item . mapping_source . mapped_representation . items ) THEN RETURN ( FALSE ) ; END_IF ; END_REPEAT ; END_IF ; x := children_set - x ; IF SIZEOF ( x ) > 0 THEN REPEAT i := 1 TO HIINDEX ( x ) ; y := QUERY ( z <* bag_to_set ( USEDIN ( x [ i ] , '' ) ) | 'representation_schema.representation_item' IN TYPEOF ( z ) ) ; IF NOT acyclic_mapped_representation ( parent_set , y ) THEN RETURN ( FALSE ) ; END_IF ; END_REPEAT ; END_IF ; RETURN ( TRUE ) ; END_FUNCTION; -- acyclic_mapped_representation |
|
public class FAcyclic_mapped_representation public static Value run(SdaiContext _context, Value parent_set, Value children_set) |