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 ANY ← NIL]
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];
}.