<<>> <> <> <> <> <<>> DIRECTORY Xl USING [Window, nullWindow]; XlAssoc: CEDAR DEFINITIONS ~ BEGIN OPEN Xl; <<>> <> <> <> <> Table: TYPE = REF AssocTabRep; AssocTabRep: TYPE = MONITORED RECORD [impl: REF AssocTabImplRep]; AssocTabImplRep: TYPE; ParentUnknown: ERROR; NullWindowUsed: ERROR; Create: PROC [mod: NAT ¬ 17] RETURNS [Table]; <> GetSize: PROC [x: Table] RETURNS [INT]; <> InsertWindow: PROC [x: Table, window: Window, parent: Window ¬ nullWindow, val: REF ¬ NIL] RETURNS [done: BOOL]; <> <> <> <> <> StoreWindow: PROC [x: Table, window: Window, parent: Window ¬ nullWindow] RETURNS [new: BOOL]; <> <> <> <> <> <> <<>> RemoveWindow: PROC [x: Table, window: Window] RETURNS [found: BOOL]; <> <> FetchValue: PROC [x: Table, window: Window] RETURNS [found: BOOL, parent: Window, val: REF]; <> <> <> <> StoreValue: PROC [x: Table, window: Window, val: REF ¬ NIL] RETURNS [found: BOOL]; <> <> EachChildAction: TYPE = PROC [window: Window, val: REF, parent: Window, data: REF] RETURNS [quit: BOOL ¬ FALSE]; Recurse: TYPE = {oneLevelOnly, topDown, bottomUp}; EnumerateChildren: PROC [x: Table, window: Window, action: EachChildAction, recurse: Recurse ¬ oneLevelOnly, data: REF ¬ NIL] RETURNS [found: BOOL, quit: BOOL]; <> <> <> <> Erase: PROC [x: Table]; <> <<[and breaks circularities]>> END.