MODULE RealDisk; IMPORT Disk, Cell, Hole, RealCell, TextRider; TYPE P* = POINTER TO T; T* = RECORD ( Disk.T ) END; PROCEDURE ( d : P ) ReadCell* ( reader : TextRider.Reader ) : Cell.P; VAR cell1 : RealCell.P; cell2 : Hole.P; number : INTEGER; text : ARRAY RealCell.MaxLength OF CHAR; colors : ARRAY RealCell.MaxColors OF CHAR; BEGIN reader.ReadInt ( number ); IF ( reader.byteReader.res = TextRider.done ) & ( number > 0 ) THEN reader.ReadString ( text ); reader.ReadString ( colors ); END; (* IF *) IF reader.byteReader.res = TextRider.done THEN IF number > 0 THEN NEW ( cell1 ); RealCell.Init ( cell1, number, text, colors ); RETURN cell1; ELSE NEW ( cell2 ); RETURN cell2; END; (* IF *) ELSE RETURN NIL; END; (* IF *) END ReadCell; PROCEDURE Init* ( d : P; next : Disk.P; fileName : ARRAY OF CHAR ); BEGIN Disk.Init ( d, next, fileName ); END Init; END RealDisk.