FUNCTION relatives_of_shape_representations
(shape_representation_set : SET [0:?] OF shape_representation) : SET [0:?] OF shape_representation;
FUNCTION local_relatives_of_shape_representations (shape_representation_set : SET OF shape_representation; total_reps : SET OF shape_representation):SET OF shape_representation; LOCAL local_shape_rep : SET OF shape_representation := []; local_srr : SET OF shape_representation_relationship := []; local_total : SET OF shape_representation := []; END_LOCAL;
REPEAT i := 1 TO HIINDEX(shape_representation_set); local_srr := local_srr + QUERY(rr <* bag_to_set(USEDIN(shape_representation_set[i], 'REPRESENTATION_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1')) | 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.SHAPE_REPRESENTATION_RELATIONSHIP' IN TYPEOF(rr)); END_REPEAT; REPEAT i := 1 TO HIINDEX(local_srr); IF 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.' + 'SHAPE_REPRESENTATION_RELATIONSHIP' IN TYPEOF(local_srr[i]) THEN local_shape_rep := local_shape_rep + local_srr[i].rep_2; END_IF; END_REPEAT; IF SIZEOF(local_shape_rep - total_reps) = 0 THEN RETURN (shape_representation_set); ELSE local_total := total_reps + local_shape_rep; RETURN (local_shape_rep + (local_relatives_of_shape_representations(local_shape_rep - total_reps, local_total))); END_IF; END_FUNCTION;
RETURN (local_relatives_of_shape_representations(shape_representation_set, shape_representation_set)); END_FUNCTION; -- relatives_of_shape_representations
|