<> <> DIRECTORY Basics, Rope, Convert, List USING [AList, Assoc, PutAssoc] QEDataManager; QEDataManagerImpl: CEDAR PROGRAM IMPORTS List, Convert EXPORTS QEDataManager ~ BEGIN OPEN QEDataManager; <> ROPE: TYPE ~ Rope.ROPE; AList: TYPE ~ List.AList; <> LoganBerryLog: LBLog; -- a global simulated LoganBerry Log <> OnlineQEObjects: List.AList _ NIL; <> ResetWorld: PUBLIC PROC[] ~ { LoganBerryLog _ NIL; OnlineQEObjects _ NIL; }; OnlineQEObject: PROC [in: AlgebraClasses.Object, tryConnect: BOOL _ FALSE] RETURNS [out: AlgebraClasses.Object]; <> InstallAtomClass: PUBLIC PROC[class: AtomClass] ~ { <> <<>> <> GlobalAtomClasses _ List.PutAssoc[key: class.name, val: class, aList: GlobalAtomClasses]; <> AtomClassNames _ CONS[class.name, AtomClassNames]; }; LookupAtomClass: PUBLIC PROC[name: ATOM] RETURNS[AtomClass] ~ { <> << SIGNALS notFound if no association exists>> <<>> atomClass: AtomClass _ NARROW[List.Assoc[key: name, aList: GlobalAtomClasses]]; IF atomClass = NIL THEN ERROR notFound; RETURN[atomClass]; }; KillAtomClass: PUBLIC PROC[name: ATOM] ~{ GlobalAtomClasses _ KillAssoc[name, GlobalAtomClasses] }; <> GlobalOperatorTable: List.AList _ NIL; <> notFound: PUBLIC ERROR = CODE; <> ResetWorld[]; END.