<> <> <> <> <> DIRECTORY BasicTime USING [GMT], Rope USING [ROPE]; Queue: CEDAR DEFINITIONS = BEGIN MQ: TYPE = REF MQRep; MQRep: TYPE; QElem: TYPE = REF QElemRep; QElemRep: TYPE; ROPE: TYPE = Rope.ROPE; GMT: TYPE = BasicTime.GMT; <> NewElem: PROC [value: REF ANY] RETURNS [newElem: QElem]; <> Value: PROC [qElem: QElem] RETURNS [value: REF ANY]; <> Create: PROC [name: ROPE] RETURNS [newQueue: MQ]; <> Name: PROC [queue: MQ] RETURNS [ROPE]; <> IsEmpty: PROC [queue: MQ] RETURNS [BOOL]; <> Enqueue: PROC [queue: MQ, qElem: QElem]; <> Dequeue: PROC [queue: MQ, value: REF ANY]; <> NotOnQueue: ERROR; GetHead: PROC [queue: MQ] RETURNS [qElem: QElem]; <> GetProcessableElement: PROC [queue: MQ] RETURNS [qElem: QElem]; <> QueueEmpty: ERROR; Enumerate: PROC [queue: MQ, proc: ElemProc, procData: REF ANY _ NIL]; <> ElemProc: TYPE = PROC[qElem: QElem, procData: REF ANY _ NIL] RETURNS [continue: BOOL _ TRUE]; <> Inhibit: PROC [qElem: QElem, for --seconds--: INT, why: ROPE]; <> Uninhibit: PROC [qElem: QElem, queue: MQ]; <> Inhibition: PROC [qElem: QElem] RETURNS [for: INT, why: ROPE]; <> END.