Overview Schemas Index

REPRESENTATION_SCHEMA (jsdai.SRepresentation_schema)


FUNCTION acyclic_mapped_representation
          (mi : mapped_item) : BOOLEAN;

LOCAL
      rms : SET  OF  representation_map;
      mis : SET  OF  mapped_item;
      rs1, rs2 : SET  OF  representation;
    END_LOCAL;
 
    rs1 := using_representations(mi);
    rs2 := [];
    -- loop AS  long AS there are elements IN rs1
    REPEAT  WHILE SIZEOF(rs1) > 0; 
      REPEAT  i := 1 TO  HIINDEX(rs1);
        -- Determine the SET OF representation_map that REFERENCE the parent_set
        rms := bag_to_set(USEDIN(rs1[i], 'REPRESENTATION_SCHEMA.REPRESENTATION_MAP.MAPPED_REPRESENTATION'));
        IF  SIZEOF(rms) > 0 THEN
          REPEAT  j := 1 TO  HIINDEX(rms);
            mis := bag_to_set(USEDIN(rms[i], 'REPRESENTATION_SCHEMA.MAPPED_ITEM.MAPPING_SOURCE'));
            IF  SIZEOF(mis) > 0 THEN
              REPEAT j := 1 TO HIINDEX(mis);
                -- check mis members FOR instance equal WITH mi. IF  so THEN there is a cycle
                IF mis[i] :=: mi THEN
                  RETURN  (FALSE);
                END_IF;
                rs2 := rs2 + using_representations(mis[i]);
              END_REPEAT;
            END_IF;
          END_REPEAT;
        END_IF;
      END_REPEAT;
      rs1 := rs2;
      rs2 := [];
    END_REPEAT;
    RETURN (TRUE);

END_FUNCTION; -- acyclic_mapped_representation

public class FAcyclic_mapped_representation
          public static Value run(SdaiContext _context, Value mi)