DIRECTORY Rope USING [ROPE, Text]; Atom: CEDAR DEFINITIONS = BEGIN 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.ROPE] RETURNS[ATOM]; MakeAtomFromChar: PROC [char: CHARACTER] RETURNS[ATOM]; MakeAtomFromRefText: PROC [rt: REF READONLY TEXT] RETURNS[ATOM]; GetPName: PROC[atom: ATOM] RETURNS[pName: Rope.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: BOOLEAN]] RETURNS[ATOM]; NILNotAnAtom: ERROR; END. ΤAtom.Mesa last edited October 26, 1982 4:15 pm by Warren Teitelman last edited September 19, 1983 8:43 pm by Paul Rovner Types Creating Atoms The following identity holds: Rope.Equal[r1,r2] <=> MakeAtom[r1] = MakeAtom[r2]. In particular, MakeAtom[""] = MakeAtom[NIL] = emptyAtom. Note that NIL # MakeAtom[NIL]. PNames Property list operations provides a way of associating information with unique keys (atoms) using a single global name space. Note: An alternative way of associating information with unique keys... that can be arbitrary REFS, in a non-global fashion using specific structures (hash tables) is provided by the RefTab interface, which is also exported by ListsAndAtoms.bcd Enumeration of atoms Errors ΚΔ– "Cedar" style˜J˜Jšœ ™ Jšœ8™8Jšœ5™5J˜šΟk ˜ Jšœœœ˜J˜—JšΠblœœ œ˜Jšœ˜headšΟn™šŸœœœœ ˜$JšΟb œœœ˜&Jš  œœœ œœ˜2——šŸ™Jš Ÿ œœœœΟc#˜BJ˜š Ÿœœœœœ˜0Jšœ¨™¨—J˜Jš Ÿœœ œœœ˜7JšŸœœœœœœœ˜@—šŸ™JšŸœœœœ˜6—šœ™Jšœd™dšœG™GJšœ­™­—J˜Jš Ÿœœœœ ‘˜RJšŸœœœœœœœœ˜;JšŸœœœœœœœ˜KJšŸœœœœœœœ˜9JšŸ œœœœœœœ ˜XJš Ÿœœœœœ˜+Jš Ÿœœœœœ ˜L—šœ™JšŸœœœœ˜'JšŸœœœœœœœœ˜L—šŸ™JšŸ œœ˜J˜—Jšœ˜J˜—…—j