VersionMap2Implr:
CEDAR
DEFINITIONS = {
OPEN VersionMap2;
Stuff useful to implementors of MapClasses.
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];
Returns TRUE iff the given pattern matches every tuple whose name has at least the given number of internal directory boundaries.
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[]]];
Raises the error that means unimplemented.
DullClose: PROC [Generator];
}.