<> <> <> <> <> <> <<>> <> <<>> DIRECTORY TextNode USING [Node]; NodeAddrs: CEDAR DEFINITIONS = BEGIN Node: TYPE = TextNode.Node; AddrsProp: PROC RETURNS [ATOM]; PutTextAddr: PROC [n: Node, addr: REF, location: INT, pin: BOOL _ FALSE]; <> <> <> RemTextAddr: PROC [n: Node, addr: REF]; <> <> PinTextAddr: PROC [n: Node, addr: REF]; <> UnpinTextAddr: PROC [n: Node, addr: REF]; UnpinAll: PROC [n: Node]; MoveTextAddr: PROC [from, to: Node, addr: REF, location: INT]; <> <> GetTextAddr: PROC [n: Node, addr: REF] RETURNS [node: Node, location: INT]; <> <> TryGetTextAddr: PROC [n: Node, addr: REF] RETURNS [found: BOOL, node: Node, location: INT]; TextAddrNotFound: ERROR; MapTextAddrs: PROC [n: Node, action: TextAddrsAction] RETURNS [BOOL]; <> <> <> TextAddrsAction: TYPE = PROC [addr: REF, location: INT] RETURNS [BOOL]; <> AddNotifyProc: PROC [proc: AddrNotifyProc]; RemoveNotifyProc: PROC [proc: AddrNotifyProc]; AddrNotifyProc: TYPE = PROC [node: Node, new: PROC [old: INT] RETURNS [INT]]; <> Replace: PROC [node: Node, start, len, newlen: INT]; <> <> <> <> AfterReplace: PROC [initLoc, start, len, newlen: INT] RETURNS [newLoc: INT]; END.