item_in_context

EXPRESS specification:

FUNCTION item_in_context
(item : representation_item; cntxt : representation_context) : BOOLEAN; LOCAL i : INTEGER; y : BAG OF representation_item; END_LOCAL; (* If there is one or more representation using both the item and cntxt return true. *) IF SIZEOF(USEDIN(item,'STRUCTURAL_FRAME_SCHEMA.REPRESENTATION.ITEMS') * cntxt.representations_in_context) > 0 THEN RETURN (TRUE); (* Determine the bag of representation_items that reference item. *) ELSE y := QUERY(z <* USEDIN (item , '') | 'STRUCTURAL_FRAME_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z)); (* Ensure that the bag is not empty. *) IF SIZEOF(y) > 0 THEN (* For each element in the bag *) REPEAT i := 1 TO HIINDEX(y); (* Check to see it is an item in the input cntxt. *) IF item_in_context(y[i], cntxt) THEN RETURN (TRUE); END_IF; END_REPEAT; END_IF; END_IF; (* Return false when all possible branches have been checked with no success. *) RETURN (FALSE);
END_FUNCTION;