RoseBindPrivate.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Barth, September 26, 1985 11:55:39 am PDT
Spreitzer, September 29, 1985 12:47:31 pm PDT
DIRECTORY Asserting, BasicTime, Core, RedBlackTree, Rope, RoseBehavior, RosePrivates, RoseWireTypes, TimeStamp;
RoseBindPrivate: CEDAR DEFINITIONS =
BEGIN
ROPE: TYPE = Rope.ROPE;
VersionStamp: TYPE = TimeStamp.Stamp;
NullVersionStamp: VersionStamp = TimeStamp.Null;
BehaviorClassList: TYPE = LIST OF BehaviorClass;
BehaviorClass: TYPE = REF BehaviorClassRec;
BehaviorClassRec:
TYPE =
RECORD [
name: ROPE,
moduleRoot: ModuleRoot ← NIL,
pwpTime: BasicTime.
GMT ← BasicTime.nullGMT,
Time at which publicWirePrototype is filled in.
publicWirePrototype: Core.Wire ← NIL,
detailsStamp: VersionStamp ← NullVersionStamp,
detailsTime: BasicTime.GMT ← BasicTime.nullGMT,
details: RoseBehavior.Details ←
NIL,
Supplied by the designer's implementation module (FooRoseDetails)
privateStamp: VersionStamp ← NullVersionStamp,
privateTime: BasicTime.GMT ← BasicTime.nullGMT,
private: RosePrivates.Privates ←
NIL,
Supplied by the private implementation module (FooRosePrivate)
publicWirePrototypeWiringIsFrom: Core.Wire ← NIL,
wiring: RoseWireTypes.BehaviorClassWiring ←
NIL,
Put there by either the translator or simulator, as needed
unusualDerivation:
RECORD [details, private:
BOOL ←
FALSE] ← [],
Not derived in the standard way (from RosePrivate and RoseDetails from RoseDefs).
other: Asserting.Assertions ← NIL
];
ModuleRoot: TYPE = REF ModuleRootRec;
ModuleRootRec:
TYPE =
RECORD [
name: ROPE,
classes: RedBlackTree.Table--actually a REF table--,
lastUpdate: BasicTime.GMT ← BasicTime.nullGMT
];
Fetch: PROC [name: ROPE] RETURNS [class: BehaviorClass];
EnsureBCParts: PROC [class: BehaviorClass, details, private, wiring: BOOL ← TRUE] RETURNS [goodDetails, goodPrivate: BOOL ← FALSE];
GetBehaviorClass: PROC [cellType: Core.CellType, details, private, wiring: BOOL ← TRUE] RETURNS [class: BehaviorClass, goodDetails, goodPrivate: BOOL ← FALSE];
BehaviorType: TYPE = REF BehaviorTypeRec;
BehaviorTypeRec:
TYPE =
RECORD [
class: BehaviorClass,
wiring: RoseWireTypes.BehaviorTypeWiring ← NIL];
GetBehaviorType: PROC [cellType: Core.CellType] RETURNS [behaviorType: BehaviorType];
EnsureModuleRoot: PROC [name: ROPE] RETURNS [mr: ModuleRoot];
EnumerateModuleClasses: PROC [mr: ModuleRoot, to: PROC [BehaviorClass]];
END.