DIRECTORY Basics, HashCollectionsPrivate, Collections, PrincOps, Rope; HashCollectionsPublicImpl: CEDAR PROGRAM IMPORTS HashCollectionsPrivate, Collections EXPORTS Collections = BEGIN OPEN HashCollectionsPrivate, Collections; initSize: NAT ~ 5; IsHash: PUBLIC PROC [coll: Collection] RETURNS [BOOL] ~ {RETURN [ISTYPE[coll.data, HashColl]]}; CreateHashSet: PUBLIC PROC [space: Space _ refs] RETURNS [HashSet] ~ { realSpace: Space ~ IF space=NIL THEN refs ELSE space; hc: HashColl ~ NEW [HashCollPrivate _ [ space: realSpace, sizeLimit: initSize, elts: NEW [Seq[initSize]] ]]; coll: Collection ~ [classes[variable], hc]; RETURN [coll.AsVar]; }; CreateHashCopy: PUBLIC PROC [coll: Collection, space: Space _ NIL--NIL means to use the same space as the given collection--] RETURNS [HashSet] ~ { copy: Collection ~ CreateHashSet[IF space=NIL THEN coll.SpaceOf ELSE space]; [] _ copy.AddColl[coll]; RETURN [copy.AsVar]; }; CreateHashSetFromProc: PUBLIC PROC [Produce: PROC [Consume: PROC [Value]], space: Space _ refs] RETURNS [HashSet] ~ { copy: HashSet ~ CreateHashSet[space]; Consume: PROC [elt: Value] ~ {[] _ copy.AddElt[elt]}; Produce[Consume]; RETURN [copy]; }; END. hHashCollectionsPublicImpl.Mesa Last tweaked by Mike Spreitzer on August 28, 1987 10:09:21 am PDT ΚΓ– "cedar" style˜codešœ™K™A—K˜KšΟk œ=˜FK˜šΟnœœ˜(Kšœ$˜+Kšœ ˜K˜—K˜Kšœœ%˜/K˜Kšœ œ˜K˜š žœœœœœ˜5Kšœœœ˜)—K˜šž œœœœ˜FKš œœœœœ˜5šœœ˜'Kšœ˜K˜Kšœœ˜K˜—Kšœ+˜+Kšœ˜K˜—K˜š žœœœ#Οc;œœ˜“Kš œ!œœœœ˜LKšœ˜Kšœ˜K˜—K˜šžœœœžœœžœœ œ˜uKšœ%˜%Kšžœœ(˜5K˜Kšœ˜K˜—K˜Kšœ˜—…—šΕ