RoseValueSequences.Mesa
Last Edited by: Spreitzer, May 17, 1985 4:22:55 pm PDT
DIRECTORY Atom, IO, RoseSets, RoseTypes;
RoseValueSequences: CEDAR DEFINITIONS = {
OPEN RoseTypes, RoseSets;
Header: TYPE = REF HeaderRep;
HeaderRep: TYPE = RECORD [
data: REF ANY,
EnumerateElts: PROC [h: Header, to: HeaderEltConsumer]
];
HeaderEltConsumer: TYPE = RECORD [
data: REF ANY,
consume: PROC [elt: HeaderElt, data: REF ANY]
];
HeaderElt: TYPE = RECORD [
path: NamePath,
type: NodeType,
val: Ptr];
NamePath: TYPE = LIST OF ROPE;
Producer: TYPE = REF ProducerRep;
ProducerRep: TYPE = RECORD [
data: REF ANY,
giveHeader: PROC [data: REF ANY] RETURNS [header: Header],
synch: STREAM];
Consumer: TYPE = REF ConsumerRep;
ConsumerRep: TYPE = RECORD [
data: REF ANY,
takeHeader: PROC [data: REF ANY, header: Header],
synch: STREAM
];
FromFile: PROC [fileName: ROPE] RETURNS [p: Producer];
ToFile: PROC [fileName: ROPE] RETURNS [c: Consumer];
ProduceFromSimulation: PROC [sim: Simulation, nodes: Set, stripPrefix: NamePath ← NIL] RETURNS [p: Producer];
CheckAgainstSimulation: PROC [sim: Simulation, addPrefix: NamePath ← NIL] RETURNS [c: Consumer];
Copy: PROC [from: Producer, to: Consumer];
CreatePipe: PROC RETURNS [p: Producer, c: Consumer];
}.