<> <> <> <<>> 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.ToBasic. Recasted cell class not found => 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, init: IOInitProc _ NIL] RETURNS [sameClass: Core.CellClass]; ClassWriteProc: TYPE = PROC [h: Handle, cellType: Core.CellType, wireIDTab: HashTable.Table, clientData: REF ANY _ NIL]; ClassReadProc: TYPE = PROC [h: Handle, cellType: Core.CellType, wireIDTab: HashTable.Table, clientData: REF ANY _ NIL]; <> RegisterProperty: PROC [prop: ATOM, write: PropWriteProc, read: PropReadProc, init: IOInitProc _ NIL] RETURNS [sameProp: ATOM]; PropWriteProc: TYPE = PROC [h: Handle, prop: ATOM, value: REF ANY, clientData: REF ANY _ NIL]; PropReadProc: TYPE = PROC [h: Handle, prop: ATOM, clientData: REF ANY _ NIL] RETURNS [value: REF ANY]; <> IOInitProc: TYPE = PROC [h: Handle, root: Core.CellType, direction: Direction] RETURNS [clientData: REF ANY]; Direction: TYPE = {Write, Read}; Handle: TYPE = REF HandleRec; HandleRec: TYPE = RECORD[ stream: Core.STREAM _ NIL, cellTypeIDTab: HashTable.Table _ NIL, ropeIDTab: HashTable.Table _ NIL, atomIDTab: HashTable.Table _ NIL, clientData: SEQUENCE size: NAT OF REF ANY]; <> <> 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, val: INT]; ReadInt: PROC [h: Handle] RETURNS [int: INT]; END.