RoseValuing.Mesa
Spreitzer, October 25, 1985 8:14:55 pm PDT
DIRECTORY Core, Rope, RoseBehavior, RoseControl;
RoseValuing: CEDAR DEFINITIONS = {
ROPE: TYPE = Rope.ROPE;
Wire: TYPE = Core.Wire;
Simulation: TYPE = RoseControl.Simulation;
ForceScope: TYPE = RoseControl.ForceScope;
Event: TYPE = RoseControl.Event;
GetBool: PROC [w: Wire, s: Simulation] RETURNS [b: BOOL];
SetBool: PROC [w: Wire, s: Simulation, b: BOOL, fs: ForceScope];
Works on atomic wires.
Transduces to/from switch level if necessary (X => Error).
GetLevel: PROC [w: Wire, s: Simulation] RETURNS [l: RoseBehavior.Level];
SetLevel: PROC [w: Wire, s: Simulation, l: RoseBehavior.Level, fs: ForceScope];
Works on atomic wires.
Transduces to/from simple if necessary (X => Error).
Format: TYPE = {idiosyncratic, num2, num4, num8, num16};
num2, num4, num8, num16 => numeric for atomics and basic sequences, constructors for other. Numbers always end in a base indicator (B, Q, O, or H).
idiosyncratic => TRUE/FALSE for atomic simple, qudL for atomic simple, constructors for other.
GetRope: PROC [w: Wire, s: Simulation, f: Format] RETURNS [r: ROPE];
SetRope: PROC [w: Wire, s: Simulation, f: Format, r: ROPE, fs: ForceScope] RETURNS [success: BOOL] ;
Works on any kind of wire.
AddNotification:
PROC [
event: Event,
wire: Wire,
sim: Simulation,
format: Format,
notify: EventConsumerProc,
data: REF ANYNIL]
RETURNS [registration: NotificationRegistration];
EventConsumerProc: TYPE = PROC [
event: Event,
wire: Wire,
sim: Simulation,
value: ROPE,
Valid for {NewQ, NewUD, NewVal}, NIL for {Perturbed, Found}.
data: REF ANY];
NotificationRegistration: TYPE = REF NotificationRegistrationPrivate;
NotificationRegistrationPrivate: TYPE;
RemoveNotification: PROC [registration: NotificationRegistration];
}.