CoreIO.mesa
Copyright Ó 1985, 1987 by Xerox Corporation. All rights reserved.
Barth, December 4, 1986 4:59:34 pm PST
Bertrand Serlet June 4, 1987 2:30:01 pm PDT
Mike Spreitzer February 27, 1987 2:43:27 pm PST
Cell Type IO
UnknownProperty: SIGNAL [propKey: ATOM];
UnknownCellClass:
SIGNAL [class: Core.CellClass];
SaveCellType:
PROC [cellType: Core.CellType, fileName:
ROPE ←
NIL];
fileName=NIL => fileName ← Rope.Cat[CoreOps.GetCellTypeName[cellType], ".core"]
UnknownProperty RESUME => Property is not written.
UnknownCellClass RESUME => CoreOps.Recast. No recast proc => ERROR.
ReportSaveCellType:
PROC [cellType: Core.CellType, fileName:
ROPE ←
NIL]
RETURNS [props:
LIST
OF
ATOM, classes:
LIST
OF Core.CellClass];
Same as SaveCellType but catches unknown signals and returns a list of them when finished.
RestoreCellType:
PROC [cellName:
ROPE ←
NIL, fileName:
ROPE ←
NIL]
RETURNS [cellType: Core.CellType];
fileName=NIL AND cellName=NIL => ERROR
fileName=NIL => fileName ← Rope.Cat[cellName, ".core"]
Unknown properties or cell classes => ERROR
Always returns an imports
IO Utilities
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;