<<>> <> <> <> DIRECTORY IO, Rope, VersionMap2; VersionMap2Implr: CEDAR DEFINITIONS = {OPEN VersionMap2; <> FillinDefaults: PROC [functional: BOOL, mutability: Mutability, classRep: MapClassRep] RETURNS [MapClass]; AlwaysFunctional: PROC [map: Map] RETURNS [BOOL]; NeverFunctional: PROC [map: Map] RETURNS [BOOL]; AlwaysConstant: PROC [map: Map] RETURNS [Mutability]; AlwaysReadonly: PROC [map: Map] RETURNS [Mutability]; AlwaysWritable: PROC [map: Map] RETURNS [Mutability]; HasByScan: PROC [map: Map, elt: VersionTuple] RETURNS [BOOL]; ScanProc: TYPE ~ PROC [map: Map, Consume: TupleConsumer, inOrder: BOOL, pfml: PatternFactoredMapList] RETURNS [MaybeTuple]; ScanByGenerate: ScanProc; SortScan: PROC [map: Map, Scan: ScanProc, Consume: TupleConsumer, pfml: PatternFactoredMapList] RETURNS [MaybeTuple]; FilterScan: PROC [map: Map, Scan: ScanProc, Consume: TupleConsumer, inOrder: BOOL, pfml: PatternFactoredMapList] RETURNS [MaybeTuple]; CantScan: ScanProc; GenerateByScan: PROC [map: Map, inOrder: BOOL, pfml: PatternFactoredMapList] RETURNS [Generator]; CantGenerate: PROC [map: Map, inOrder: BOOL, pfml: PatternFactoredMapList] RETURNS [Generator]; SizeByScan: PROC [map: Map, limit: INT] RETURNS [INT]; FullSize: PROC [map: Map, limit: INT] RETURNS [INT]; DefaultPatternFactorMap: PROC [map: Map] RETURNS [PatternFactoredMap]; CantAddTuple: PROC [map: Map, t: VersionTuple, if: IfHads] RETURNS [had: Hads]; AddTupleBySingleton: PROC [map: Map, t: VersionTuple, if: IfHads] RETURNS [had: Hads]; CantAddMap: PROC [map, other: Map, if: IfHads] RETURNS [some: HadSets]; AddMapByTuples: PROC [map, other: Map, if: IfHads] RETURNS [some: HadSets]; CantRemTuple: PROC [map: Map, t: VersionTuple] RETURNS [had: Hads]; RemTupleBySingleton: PROC [map: Map, t: VersionTuple] RETURNS [had: Hads]; CantRemMap: PROC [map, other: Map] RETURNS [some: HadSets]; RemMapByTuples: PROC [map, other: Map] RETURNS [some: HadSets]; DefaultNegate: PROC [map: Map] RETURNS [Map]; DefaultIsNegation: PROC [map: Map] RETURNS [MaybeMap]; DefaultIntersect: PROC [map, other: Map] RETURNS [Map]; DefaultIsIntersection: PROC [map: Map] RETURNS [Maybe2Maps]; DefaultUnion: PROC [map, other: Map, test: UnionTest, ordered: BOOL] RETURNS [Map]; DefaultIsUnion: PROC [map: Map] RETURNS [Maybe2Maps]; DefaultDifference: PROC [map, other: Map] RETURNS [Map]; DefaultIsDifference: PROC [map: Map] RETURNS [Maybe2Maps]; DefaultSymmetricDifference: PROC [map, other: Map] RETURNS [Map]; DefaultIsSymmetricDifference: PROC [map: Map] RETURNS [Maybe2Maps]; NamePatternAcceptsAll: PROC [pattern: Name, minDirBoundaries: NAT] RETURNS [BOOL]; <> CountAvailable: PROC [gen: Generator, limit: INT _ INT.LAST] RETURNS [INT]; OcFromHad: PROC [had: Hads] RETURNS [OldCase] ~ INLINE {RETURN [ocFromHad[had[created]][had[stamp]]]}; ocFromHad: ARRAY --created:--Had OF ARRAY --stamp:--Had OF OldCase = [ same: [same: same, different: stampDifferent, none: new], different: [same: createdDifferent, different: bothDifferent, none: new], none: ALL[new] ]; Cant: PROC [info: REF ANY, fmt: ROPE, v1, v2, v3, v4, v5: IO.Value _ [null[]]]; <> DullClose: PROC [Generator]; }.