<> <> DIRECTORY Atom, List, Protocols, Rope; ProtocolsImpl: CEDAR PROGRAM IMPORTS Atom, List, Rope EXPORTS Protocols = {OPEN Protocols; protocols: List.AList _ NIL; GetProtocol: PUBLIC PROC [name: ROPE] RETURNS [p: Protocol] = { a: ATOM _ Atom.MakeAtom[name]; p _ NARROW[List.Assoc[key: a, aList: protocols]]; IF NOT name.Equal[p.name] THEN ERROR; }; RegProtocol: PUBLIC PROC [p: Protocol] = { a: ATOM _ Atom.MakeAtom[p.name]; protocols _ List.PutAssoc[key: a, val: p, aList: protocols]; }; }.