RopeEditingAlloc.mesa
written by Bill Paxton, March 1981
last edit by McGregor, June 10, 1982 2:31 pm
Doug Wyatt, January 17, 1984 11:38:24 am PST
DIRECTORY
Rope USING [ROPE],
RopeReader USING [CharsArray];
RopeEditingAlloc: CEDAR DEFINITIONS =
BEGIN
CharsArray: TYPE = RopeReader.CharsArray;
Chars: TYPE = REF CharsArray;
ROPE: TYPE = Rope.ROPE;
AllocChars:
PROC [len:
NAT]
RETURNS [chars: Chars, start: NAT, base: ROPE];
-- for use by routines in RopeFrom. not for general use.
-- allocates room for len characters
-- chars is the array to hold them starting at start
-- base is rope pointing to the entire chars array
AllocWords:
PROC [nwords:
NAT]
RETURNS [chars: Chars, start: NAT, base: ROPE];
-- for use by routines in RopeFrom. not for general use.
-- ensures that start is even, i.e., start on word boundary
TryAllocAdjacent:
PROC [base:
ROPE, start:
NAT, len:
NAT]
RETURNS [ok: BOOLEAN, chars: Chars];
-- for use by routines in RopeFrom. not for general use.
-- if base is current CharsArray
-- and start is current next free loc in base
-- and there are at least len free chars remaining
-- then allocates those chars and returns true
-- these provide a cache of text buffers
GetBlock: PROC RETURNS [blk: REF TEXT];
FreeBlock: PROC [blk: REF TEXT];
END.