VersionMap2Implr.Mesa
Copyright Ó 1990 by Xerox Corporation. All rights reserved.
Last tweaked by Mike Spreitzer on August 16, 1990 12:08:59 pm PDT
DIRECTORY IO, Rope, VersionMap2;
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: INTINT.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];
}.