<> <> <> <> <> <<>> DIRECTORY Core, CoreClasses, CoreDirectory, RefTab; CoreIO: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Core.ROPE; <> <> <> <> UnknownProperty: SIGNAL [propKey: ATOM]; UnknownCellClass: SIGNAL [class: Core.CellClass]; <<>> SaveCellType: PROC [cellType: Core.CellType, fileName: ROPE _ NIL]; < fileName _ Rope.Cat[CoreOps.GetCellTypeName[cellType], ".core"]>> < Property is not written.>> < CoreOps.Recast. No recast proc => ERROR.>> ReportSaveCellType: PROC [cellType: Core.CellType, fileName: ROPE _ NIL] RETURNS [props: LIST OF ATOM, classes: LIST OF Core.CellClass]; <> RestoreCellType: PROC [cellName: ROPE _ NIL, fileName: ROPE _ NIL] RETURNS [cellType: Core.CellType]; < ERROR>> < fileName _ Rope.Cat[cellName, ".core"]>> < ERROR>> <> <> SaveLibrary: PROC [library: CoreDirectory.Library, fileName: ROPE]; <<.corelib is added to fileName>> RestoreLibrary: PROC [fileName: ROPE] RETURNS [library: CoreDirectory.Library]; <<.corelib is added to fileName>> < ERROR>> <> <> RegisterClass: PROC [class: Core.CellClass, write: ClassWriteProc, read: ClassReadProc] RETURNS [sameClass: Core.CellClass]; ClassWriteProc: TYPE = PROC [h: Handle, cellType: Core.CellType, wireIDTab: RefTab.Ref]; ClassReadProc: TYPE = PROC [h: Handle, cellType: Core.CellType, wireIDTab: RefTab.Ref]; <> RegisterProperty: PROC [prop: ATOM, write: PropWriteProc, read: PropReadProc] RETURNS [sameProp: ATOM]; PropWriteProc: TYPE = PROC [h: Handle, prop: ATOM, value: REF ANY]; PropReadProc: TYPE = PROC [h: Handle, prop: ATOM] RETURNS [value: REF ANY]; <> Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD[ cellType: Core.CellType _ NIL, -- current cell type wire: Core.Wire _ NIL, -- current wire, NIL if none fileName: Core.ROPE _ NIL, stream: Core.STREAM _ NIL, cellTypeIDTab: RefTab.Ref _ NIL, ropeIDTab: RefTab.Ref _ NIL, atomIDTab: RefTab.Ref _ NIL, wireIDTab: RefTab.Ref _ NIL, properties: Core.Properties _ NIL]; <> <> WriteCellType: PROC [h: Handle, cellType: Core.CellType]; ReadCellType: PROC [h: Handle] RETURNS [cellType: Core.CellType]; WriteWire: PROC [h: Handle, wireIDTab: RefTab.Ref, wire: Core.Wire]; ReadWire: PROC [h: Handle, wireIDTab: RefTab.Ref] RETURNS [wire: Core.Wire]; WriteProperties: PROC [h: Handle, properties: Core.Properties]; ReadProperties: PROC [h: Handle] RETURNS [properties: Core.Properties _ NIL]; WriteID: PROC [h: Handle, id: ROPE]; ReadID: PROC [h: Handle] RETURNS [id: ROPE]; WriteAtom: PROC [h: Handle, atom: ATOM]; ReadAtom: PROC [h: Handle] RETURNS [atom: ATOM]; WriteRope: PROC [h: Handle, rope: ROPE]; ReadRope: PROC [h: Handle] RETURNS [rope: ROPE]; WriteListOfRope: PROC [h: Handle, ropes: LIST OF ROPE]; ReadListOfRope: PROC [h: Handle] RETURNS [ropes: LIST OF ROPE]; WriteInt: PROC [h: Handle, int: INT]; ReadInt: PROC [h: Handle] RETURNS [int: INT]; WriteReal: PROC [h: Handle, real: REAL]; ReadReal: PROC [h: Handle] RETURNS [real: REAL]; WriteBool: PROC [h: Handle, bool: BOOL]; ReadBool: PROC [h: Handle] RETURNS [bool: BOOL]; WriteHashTable: PROC [h: Handle, table: RefTab.Ref, eachPair: HashWriteProc]; HashWriteProc: TYPE = PROC [h: Handle, key: RefTab.Key, value: RefTab.Val]; ReadHashTable: PROC [h: Handle, eachPair: HashReadProc, equal: RefTab.EqualProc _ NIL, hash: RefTab.HashProc _ NIL] RETURNS [table: RefTab.Ref]; HashReadProc: TYPE = PROC [h: Handle] RETURNS [key: RefTab.Key, value: RefTab.Val]; WriteCellTypeIDPair: HashWriteProc; ReadCellTypeIDPair: HashReadProc; WriteRopeIDPair: HashWriteProc; ReadRopeIDPair: HashReadProc; WriteAtomIDPair: HashWriteProc; ReadAtomIDPair: HashReadProc; END.