-- XEventQImpl.mesa
-- Created By Jeff Weinstein on 29-Mar-87 18:30:37

DIRECTORY
  Heap,
  XEventQ,
  XQueue;
  
XEventQImpl:MONITOR IMPORTS Heap, XQueue EXPORTS XEventQ =
  BEGIN
  
  QueueEmpty:PUBLIC ERROR = CODE;
  
  zone:PUBLIC UNCOUNTED ZONE ← Heap.systemZone;
  q:XQueue.QueuePtr;
  
  EnQEvent:PUBLIC ENTRY PROCEDURE[event:XEventQ.EventPtr] =
    BEGIN
    XQueue.EnQueue[q,event];
    END;
    
  DeQEvent:PUBLIC ENTRY PROCEDURE RETURNS[event:XEventQ.EventPtr] =
    BEGIN
      [data:event] ← XQueue.DeQueue[q];
      IF event = NIL THEN
        RETURN WITH ERROR QueueEmpty;	   
    END;
  
  q ← XQueue.NewQueue[];
      
  END...