Navigation

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;