<> <> <> <> <> <> <> DIRECTORY Rope USING [ROPE, Text]; Atom: CEDAR DEFINITIONS = BEGIN <> <<>> <> <> ROPE: TYPE = Rope.ROPE; Text: TYPE = Rope.Text; PropList: TYPE = LIST OF DottedPair; DottedPair: TYPE = REF DottedPairNode; DottedPairNode: TYPE = RECORD [key, val: REF ANY]; <> EmptyAtom: PROC RETURNS[ATOM]; <<... returns the atom with pname = "">> <<>> MakeAtom: PROC [pName: ROPE] RETURNS [ATOM]; < MakeAtom[r1] = MakeAtom[r2]. In particular, MakeAtom[""] = MakeAtom[NIL] = emptyAtom. Note that NIL # MakeAtom[NIL].>> <<>> MakeAtomFromChar: PROC [char: CHAR] RETURNS [ATOM]; MakeAtomFromRefText: PROC [rt: REF READONLY TEXT] RETURNS [ATOM]; <> GetPName: PROC[atom: ATOM] RETURNS[pName: Text]; <> GetPropertyList: PROC [atom: ATOM] RETURNS [PropList]; -- gets entire property list GetProp: PROC [atom: ATOM, prop: REF ANY] RETURNS [REF ANY]; GetPropFromList: PROC [propList: PropList, prop: REF ANY] RETURNS [REF ANY]; PutProp: PROC [atom: ATOM, prop: REF ANY, val: REF ANY]; PutPropOnList: PROC [propList: PropList, prop: REF ANY, val: REF ANY] RETURNS [PropList]; RemProp: PROC [atom: ATOM, prop: REF ANY]; RemPropFromList: PROC [propList: PropList, prop: REF ANY] RETURNS [PropList]; <> MapAtoms: PROC[proc: PROC[atom: ATOM]]; FindAtom: PROC[proc: PROC[atom: ATOM] RETURNS [stop: BOOL]] RETURNS[ATOM]; <> NILNotAnAtom: ERROR; END.