<> <> DIRECTORY BasicTime, OrderedSymbolTableRef, Rope; TermCaps: CEDAR DEFINITIONS = { GMT: TYPE = BasicTime.GMT; nullGMT: GMT = BasicTime.nullGMT; ROPE: TYPE = Rope.ROPE; RopeList: TYPE = LIST OF ROPE; SymbolTable: TYPE = OrderedSymbolTableRef.Table; TermCap: TYPE = REF TermCapRep; TermCapRep: TYPE = RECORD [ fileID: FileID, contents: SymbolTable, complaints: ROPE _ NIL]; FileID: TYPE = RECORD [gName: ROPE, create: GMT]; Term: TYPE = REF TermRep; TermRep: TYPE = RECORD [ names: RopeList _ NIL, bestName: ROPE _ NIL, <> caps: SymbolTable, default: Term _ NIL]; Alias: TYPE = REF AliasRep; AliasRep: TYPE = RECORD [name: ROPE, val: Term]; Cap: TYPE = REF CapRep; CapRep: TYPE = RECORD [ name: ROPE, val: Val]; Val: TYPE = REF ANY --actually UNION [{cancel}, RefBool, RefInt, String]--; cancel: Val; RefBool: TYPE = REF BOOL; RefInt: TYPE = REF INT; String: TYPE = REF StringRep; StringRep: TYPE = RECORD [ pad: REAL _ 0, proportional: BOOL _ FALSE, str: ROPE]; GetTermCap: PROC [fileName: ROPE, wDir: ROPE _ NIL] RETURNS [tc: TermCap]; GetTerm: PROC [tc: TermCap, name: ROPE] RETURNS [term: Term]; GetCap: PROC [term: Term, name: ROPE, default: Val _ NIL] RETURNS [val: Val]; EnumerateCaps: PROC [term: Term, consume: PROC [cap: Cap] RETURNS [stop: BOOL]]; EnumerateTerms: PROC [tc: TermCap, consume: PROC [term: Term] RETURNS [stop: BOOL]]; }.