<> <> <> <> <<>> DIRECTORY BasicTime, IO, Pipal, PipalInt, PipalReal, SymTab; PipalIO: CEDAR DEFINITIONS ~ BEGIN <> ClassReadProc: TYPE = PROC [stream: IO.STREAM] RETURNS [object: Pipal.Object]; ClassWriteProc: TYPE = PROC [stream: IO.STREAM, object: Pipal.Object]; RegisterClass: PROC [class: Pipal.Class, read: ClassReadProc, write: ClassWriteProc]; ReadObject: PROC [stream: IO.STREAM] RETURNS [object: Pipal.Object]; WriteObject: PROC [stream: IO.STREAM, object: Pipal.Object]; <> ReadIntVector: PROC [stream: IO.STREAM] RETURNS [vector: PipalInt.Vector]; WriteIntVector: PROC [stream: IO.STREAM, vector: PipalInt.Vector]; ReadIntRectangle: PROC [stream: IO.STREAM] RETURNS [rectangle: PipalInt.Rectangle]; WriteIntRectangle: PROC [stream: IO.STREAM, rectangle: PipalInt.Rectangle]; ReadOrientation: PROC [stream: IO.STREAM] RETURNS [orientation: PipalInt.Orientation]; WriteOrientation: PROC [stream: IO.STREAM, orientation: PipalInt.Orientation]; ReadIntTransformation: PROC [stream: IO.STREAM] RETURNS [transformation: PipalInt.Transformation]; WriteIntTransformation: PROC [stream: IO.STREAM, transformation: PipalInt.Transformation]; <> ReadRealVector: PROC [stream: IO.STREAM] RETURNS [vector: PipalReal.Vector]; WriteRealVector: PROC [stream: IO.STREAM, vector: PipalReal.Vector]; ReadRealRectangle: PROC [stream: IO.STREAM] RETURNS [rectangle: PipalReal.Rectangle]; WriteRealRectangle: PROC [stream: IO.STREAM, rectangle: PipalReal.Rectangle]; ReadRealTransformation: PROC [stream: IO.STREAM] RETURNS [transformation: PipalReal.Transformation]; WriteRealTransformation: PROC [stream: IO.STREAM, transformation: PipalReal.Transformation]; <> <> <<>> FileInfo: PROC [fileName: Pipal.ROPE, wantedCreatedTime: BasicTime.GMT _ BasicTime.nullGMT] RETURNS [creationTime: BasicTime.GMT _ BasicTime.nullGMT]; <> <<>> RestoreObject: PROC [fileName: Pipal.ROPE, wantedCreatedTime: BasicTime.GMT _ BasicTime.nullGMT] RETURNS [object: Pipal.Object]; SaveObject: PROC [fileName: Pipal.ROPE, object: Pipal.Object] RETURNS [creationTime: BasicTime.GMT]; <> <> <<>> directoryClass: Pipal.Class; Directory: TYPE = REF DirectoryRec; DirectoryRec: TYPE = RECORD [ name: Pipal.ROPE, <> table: SymTab.Ref <> ]; CreateDirectory: PROC [name: Pipal.ROPE, table: SymTab.Ref] RETURNS [directory: Directory]; <> <<>> FetchInDirectory: PROC [directory: Directory, name: Pipal.ROPE] RETURNS [object: Pipal.Object _ NIL]; <> <<>> DirectoryAndShortName: PROC [name: Pipal.ROPE] RETURNS [directory, shortName: Pipal.ROPE _ NIL]; < ["Logic", "nand.sch"].>> <> <> <> <<>> importClass: Pipal.Class; Import: TYPE = REF ImportRec; ImportRec: TYPE = RECORD [ name: Pipal.ROPE, <> isDirectory: BOOL _ FALSE, <> referee: Pipal.Object _ NIL, creationTime: BasicTime.GMT _ BasicTime.nullGMT <> ]; <> < the underlying file and the VM are consistent.>> < the VM is the truth.>> < the underlying file has not been read yet.>> <> <<>> CreateTimedImport: PROC [name: Pipal.ROPE, isDirectory: BOOL _ FALSE, creationTime: BasicTime.GMT] RETURNS [import: Import]; CreateRefereedImport: PROC [name: Pipal.ROPE, isDirectory: BOOL _ FALSE, referee: Pipal.Object] RETURNS [import: Import]; EachImportProc: TYPE = PROC [import: Import] RETURNS [quit: BOOL _ FALSE]; EnumerateObjectImports: PROC [object: Pipal.Object, each: EachImportProc] RETURNS [quit: BOOL _ FALSE]; <> Fetch: PROC [name: Pipal.ROPE] RETURNS [object: Pipal.Object _ NIL]; <, an import of this file is made.>> <> <> ReadObjects: PROC [stream: IO.STREAM] RETURNS [objects: Pipal.Objects _ NIL]; END.