<> <> <> <> DIRECTORY CD, CDGenerate, Rope; CDRemote: CEDAR DEFINITIONS = BEGIN <> <> GetTable: PROC [remoteDesign: Rope.ROPE] RETURNS [CDGenerate.Table]; <<--Creates a generator table, "generating" = fetching an object from the remote design. >> <<--Generating objects with the table will cause reading remoteDesign if it >> <<--is not loaded and cached for the destination design. If filename was not specified, >> <<--defaults to remoteDesign.>> 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.>> GetTableUsingFile: PROC [for: CD.Design, remoteDesign: Rope.ROPE, remoteFile: Rope.ROPE _ NIL, reload: BOOL _ FALSE] RETURNS [CDGenerate.Table]; <<--Creates a generator table, "generating" = fetching an object from the remote design. >> <<--Reads remoteDesign if necessary or reload>> <<-- remoteFile defaults to remoteDesign>> <<-- re-reading may cause children objects to be duplicated>> <<--Raises ioFailed if reading not successfull; may be resumed. >> ioFailed: SIGNAL; DesignName: PROC [table: CDGenerate.Table] RETURNS [Rope.ROPE]; 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.