-- XQueue.mesa -- Created by Jeff Weinstein on 30-Apr-87 23:07:20 XQueue: DEFINITIONS = BEGIN --Types Data:TYPE = LONG POINTER TO UNSPECIFIED; QueuePtr:TYPE = LONG POINTER TO Queue; Queue:TYPE = RECORD[ count:CARDINAL ¬ 0, head:RecPtr ¬ NIL, tail:RecPtr ¬ NIL ]; RecPtr:TYPE = LONG POINTER TO Rec; Rec:TYPE = RECORD[ data:Data ¬ NIL, size:LONG CARDINAL ¬ 0, next:RecPtr ¬ NIL, prev:RecPtr ¬ NIL ]; --Procedures NewQueue:PROCEDURE RETURNS[q:QueuePtr]; FreeQueue:PROCEDURE [qPtr:LONG POINTER TO QueuePtr]; EnQueue:PROCEDURE [q:QueuePtr, data:Data, size:LONG CARDINAL ¬ 0]; DeQueue:PROCEDURE [q:QueuePtr] RETURNS [data:Data, size:LONG CARDINAL]; QueueCount:PROCEDURE[q:QueuePtr] RETURNS [count:CARDINAL]; END...