<<>> <> <> <> DIRECTORY IO, Rope, VersionMapClassify, VersionMap2; VersionMap2FromPattern: CEDAR DEFINITIONS = {OPEN VersionMap2; Kind: TYPE ~ {source, intermediate, executable}; KindSet: TYPE ~ PACKED ARRAY Kind OF BOOL; allKinds: KindSet ~ ALL[TRUE]; OneKind: PROC [k: Kind] RETURNS [KindSet] ~ INLINE {ks: KindSet _ ALL[FALSE]; ks[k] _ TRUE; RETURN [ks]}; Create: PROC [name: Name, kinds: KindSet _ allKinds, cache, hints: Map _ nullMap, restrictedCache, restrictedHints: BOOL _ FALSE] RETURNS [Map]; < where n of c is enumerated by PFS given name, n is classified as a Kind in kinds, and t is the version stamp of n of c. If neither cache nor hints can supply a stamp for n of c, the file is read. If cache is given, stamps read from files are stored there. If restrictedCache, cache is assumed to contain only tuples classified as an acceptable kind, and only tuples of an acceptable kind will be added to cache. If restrictedHints, hints is assumed to contain only tuples classified as an acceptable kind.>> PfmlAddPfm: PROC [pfml: PatternFactoredMapList, pfm: PatternFactoredMap, AsMap: PROC RETURNS [Map--equivalent to pfm--] ] RETURNS [PatternFactoredMapList]; NamePatternSortMerge: PROC [np1, np2: Name] RETURNS [mismatch: BOOL, better, worse: Name]; < no name matches both np1 and np2.>> <<~mismatch => the same names match both better and worse as match both np1 and np2, and enumerating better is easier than enumerating worse.>> }.