<> <> <> <> <<>> FIFOQueue: CEDAR DEFINITIONS = BEGIN <<>> <> <<>> Queue: TYPE = REF QueueRec; QueueRec: TYPE = PRIVATE MONITORED RECORD [front, tail: LIST OF REF ANY _ NIL, cond: CONDITION]; Create: PROC [] RETURNS [queue: Queue]; <> Include: PROC [queue: Queue, value: REF]; <> Remove: PROC [queue: Queue] RETURNS [value: REF]; <> <> Empty: ERROR; --Logically a SIGNAL which can't be resumed RemoveNWait: PROC [queue: Queue] RETURNS [value: REF]; <> <> <<>> IsEmpty: PROC [queue: Queue] RETURNS [BOOL]; <> <> Flush: PROC [queue: Queue]; <> END.