<> <> <> <> DIRECTORY CD, CDGenerate, Rope; CDRemote: CEDAR DEFINITIONS = BEGIN <> <> GetContext: PROC [remoteDesign: Rope.ROPE] RETURNS [CDGenerate.Context]; <<--Creates a generator context, "generating" = fetching an object from the remote design. >> <<--Generating objects with the context will cause reading remoteDesign if it >> <<--is not loaded; the design read will then be cached for the destination design. >> DesignName: PROC [context: CDGenerate.Context] RETURNS [Rope.ROPE]; <<--Returns design name of remote design, if context was generated using GetContext>> Get: PROC [for: CD.Design, remoteDesign: Rope.ROPE, object: Rope.ROPE] RETURNS [CD.Object]; <<--Transferes object (and its children) from other remoteDesign.>> <<--Reads remoteDesign if necessary. >> <<--Returns NIL if object not found.>> IsCached: PROC [for: CD.Design, remoteDesign: Rope.ROPE] RETURNS [BOOL]; <<--returns whether a version of remoteDesign is cached for "for">> ForgetCache: PROC [for: CD.Design, remoteDesign: Rope.ROPE]; <<--forgets cacheing of remoteDesign>> LoadCache: PROC [for: CD.Design, remoteDesign: Rope.ROPE, remoteFile: Rope.ROPE _ NIL, reload: BOOL _ FALSE] RETURNS [loaded: BOOL]; <<--loads remoteDesign into cache>> <<--remoteFilefile name; make up name if NIL >> <<--reload >> <<-- if true: discards previous cache contents >> <<-- if false: skips loading if remoteDesign is already cached >> MakupName: PROC [for: CD.Design, remoteDesign: Rope.ROPE] RETURNS [Rope.ROPE]; <<--checks whether for wants a special file name to be used for remoteDesign>> <<--returns remoteDesign if no file name could be made up >> <<--might use properties, user profile, or magic to find a name >> CacheDesign: PRIVATE 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...)>> <<--CDRemote guarantees: it will never change remote >> FetchDesign: PRIVATE PROC [for: CD.Design, name: Rope.ROPE] RETURNS [remote: CD.Design]; <<--NIL if no design cached>> <<--caller MUST guarantee: caller will NEVER change remote>> <<--CDRemote guarantees: CDRemote will never change remote >> <<-- (but a different design with the same name might be cached later...)>> END.