-- Heap.mesa (last edited by: McJones on: May 28, 1980 1:07 PM) -- Alto version, HGM, January 30, 1981 4:40 PM Heap: DEFINITIONS = BEGIN NWords: TYPE = [0..32766); -- Limit on node size systemZone: READONLY UNCOUNTED ZONE; systemMDSZone: READONLY MDSZone; MakeNode: PROCEDURE [z: UNCOUNTED ZONE _ systemZone, n: NWords] RETURNS [LONG POINTER]; FreeNode: PROCEDURE [z: UNCOUNTED ZONE _ systemZone, p: LONG POINTER]; MakeMDSNode: PROCEDURE [z: MDSZone _ systemMDSZone, n: NWords] RETURNS [POINTER]; FreeMDSNode: PROCEDURE [z: MDSZone _ systemMDSZone, p: POINTER]; MakeString: PROCEDURE [z: UNCOUNTED ZONE _ systemZone, maxlength: CARDINAL] RETURNS [LONG STRING] = INLINE {RETURN[z.NEW[StringBody [maxlength]]]}; FreeString: PROCEDURE [z: UNCOUNTED ZONE _ systemZone, s: LONG STRING] = INLINE {z.FREE[@s]}; -- note this sets local s to NIL MakeMDSString: PROCEDURE [z: MDSZone _ systemMDSZone, maxlength: CARDINAL] RETURNS [STRING] = INLINE {RETURN[z.NEW[StringBody [maxlength]]]}; FreeMDSString: PROCEDURE [z: MDSZone _ systemMDSZone, s: STRING] = INLINE { z.FREE[@s]}; -- note this sets local s to NIL END.