<> <> <> DIRECTORY Rope USING [ROPE], TimeStamp USING [Stamp], VersionMap USING [Map]; VersionMapBuilder: CEDAR DEFINITIONS = BEGIN OPEN Rope, VersionMap; <> VersionNotAvailable: ERROR; NameError: ERROR; DuplicateVersionSignal: SIGNAL; WriteMapToFile: PROC [map: Map, name: ROPE, checkForDuplicateVersions: BOOL _ FALSE]; <> ParseMapFromFile: PROC [name: ROPE] RETURNS [map: Map]; <> MergeMaps: PROC [map1,map2: VersionMap.Map] RETURNS [map: VersionMap.Map]; <> DistributePrefix: PROC [map: VersionMap.Map] RETURNS [newMap: VersionMap.Map]; -- DistributePrefix[map] takes a version map and expands all of the prefixes in it. This is good preparation for merging version maps, of course. The resulting map will be the initial map if all of the entries have explicit prefixes. The resulting map will have a prefix stored in the names, incidentally. SplitMap: PROC [map: VersionMap.Map] RETURNS [symbols,source: VersionMap.Map]; <> CompressMap: PROC [map: VersionMap.Map] RETURNS [newMap: VersionMap.Map]; <> SetReportInterval: PROC [seconds: NAT _ 0]; <> GenerateMapFromRemote: PROC [host: ROPE _ NIL, directory: ROPE _ NIL, oldMap: Map _ NIL, filter: FilterProc _ NIL] RETURNS [map: Map]; <*.bcd"). This procedure requires an exporter of IFSFile. If oldMap # NIL, then merge with old version map (entries with full names in the old version map will get the version stamp from the old map, which reduces.>> GenerateMapFromDFFile: PROC [name: ROPE _ NIL, pattern: ROPE _ NIL, oldMap: Map _ NIL, filter: FilterProc _ NIL] RETURNS [map: Map]; <> GenerateMapFromProc: PROC [each: EachProc, data: REF _ NIL, prefix: ROPE _ NIL] RETURNS [map: Map]; <> EachProc: TYPE = PROC [data: REF] RETURNS [stamp: TimeStamp.Stamp, name: ROPE]; <> FilterProc: TYPE = PROC [name: ROPE] RETURNS [ok: BOOL]; <> NonBCDFilter: FilterProc; <> OnlyBCDFilter: FilterProc; <> END.