<> <> <> <> <<>> DIRECTORY Core, CoreClasses, HashTable; 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>> <> <> <> RegisterClass: PROC [class: Core.CellClass, write: ClassWriteProc, read: ClassReadProc] RETURNS [sameClass: Core.CellClass]; ClassWriteProc: TYPE = PROC [h: Handle, cellType: Core.CellType, wireIDTab: HashTable.Table]; ClassReadProc: TYPE = PROC [h: Handle, cellType: Core.CellType, wireIDTab: HashTable.Table]; <> 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: HashTable.Table _ NIL, ropeIDTab: HashTable.Table _ NIL, atomIDTab: HashTable.Table _ NIL, wireIDTab: HashTable.Table _ 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: HashTable.Table, wire: Core.Wire]; ReadWire: PROC [h: Handle, wireIDTab: HashTable.Table] 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: HashTable.Table, eachPair: HashWriteProc]; HashWriteProc: TYPE = PROC [h: Handle, key: HashTable.Key, value: HashTable.Value]; ReadHashTable: PROC [h: Handle, eachPair: HashReadProc, equal: HashTable.EqualProc _ NIL, hash: HashTable.HashProc _ NIL] RETURNS [table: HashTable.Table]; HashReadProc: TYPE = PROC [h: Handle] RETURNS [key: HashTable.Key, value: HashTable.Value]; WriteCellTypeIDPair: HashWriteProc; ReadCellTypeIDPair: HashReadProc; WriteRopeIDPair: HashWriteProc; ReadRopeIDPair: HashReadProc; WriteAtomIDPair: HashWriteProc; ReadAtomIDPair: HashReadProc; END.