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 p#NIL AND 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]; }; EnumerateProtocols: PUBLIC PROC [Consume: PROC [Protocol]] ~ { FOR pl: List.AList _ protocols, pl.rest WHILE pl#NIL DO p: Protocol ~ NARROW[pl.first.val]; Consume[p]; ENDLOOP; RETURN}; }. ZProtocolsImpl.Mesa Last tweaked by Mike Spreitzer on April 4, 1990 12:23:28 pm PDT ΚZ– "cedar" style˜code™K™?—K˜KšΟk œ˜&K˜šΠbx œœ˜Kšœ˜Kšœ ˜K˜Kšœœ ˜K˜Kšœœ˜K˜š Οn œœœœœ˜?Kšœœ˜Kšœœ'˜1Kš œœœœœœ˜/K˜—K˜šŸ œœœ˜*Kšœœ˜ Kšœ<˜šœ%œœ˜7Kšœœ˜#K˜ Kšœ˜—Kšœ˜—K˜K˜——…—Άj