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