<> <> <> <> DIRECTORY CD, CDGenerate, Rope; CDGenerateRemote: CEDAR DEFINITIONS = BEGIN GetRemoteTable: PROC [designName: Rope.ROPE] RETURNS [CDGenerate.Table]; <<--will do IO when necessary; assumes filename = designname>> <<--if you want to prevent IO, use CacheRemoteDesign first>> RemoteName: PUBLIC PROC [table: CDGenerate.Table] RETURNS [Rope.ROPE]; CacheRemoteDesign: PROC [for: CD.Design, remote: CD.Design]; <<--caller MUST guarantee: remote will NEVER be changed>> <<-- (but a different design with the same name might be cached later...)>> <<--CDGenerateRemote guarantees: it will never change remote >> FetchRemoteDesign: PROC [for: CD.Design, name: Rope.ROPE] RETURNS [remote: CD.Design]; <<--NIL if no design cached>> <<--caller MUST guarantee: caller will NEVER change remote>> <<--CDGenerateRemote guarantees: CDGenerateRemote will never change remote >> <<-- (but a different design with the same name might be cached later...)>> END.