<> <> <> <> DIRECTORY IO USING [STREAM], PascalBasic; PascalWizardFiles: CEDAR DEFINITIONS = BEGIN OPEN PascalBasic; <> PascalFile: TYPE = LONG POINTER TO MesaFile _ NIL; PascalFilePtr: TYPE = LONG POINTER TO PascalFile; -- for passing files as VAR parameters MesaFile: TYPE = RECORD [ str: IO.STREAM _ NIL, eof: BOOLEAN _ FALSE, openFileLink: MesaFilePtr _ NIL]; MesaFilePtr: TYPE = REF MesaFile; PascalTextFile: TYPE = RECORD [ baseFile: PascalFile, eoln: BOOLEAN _ TRUE, -- TRUE if element is a blank representing CR element: PascalChar _ ' -- last character read ]; PascalTextFilePtr: TYPE = LONG POINTER TO PascalTextFile; -- for passing by VAR Text: TYPE = PascalTextFile; <

> <> PascalTextBREAK: PROCEDURE [file: PascalTextFilePtr]; PascalTextGET: PROCEDURE [file: PascalTextFilePtr]; PascalTextElement: PROCEDURE [file: PascalTextFilePtr] RETURNS [PascalChar]; PascalTextPUT: PROCEDURE [file: PascalTextFilePtr]; PascalTextRESET: PROCEDURE [file: PascalTextFilePtr]; PascalTextREWRITE: PROCEDURE [file: PascalTextFilePtr]; PascalTextPAGE: PROCEDURE [file: PascalTextFilePtr]; PascalTextEOF: PROCEDURE [file: PascalTextFilePtr] RETURNS [BOOLEAN]; PascalTextEOLN: PROCEDURE [file: PascalTextFilePtr] RETURNS [BOOLEAN]; <> <> <> <> <> PascalBREAK: PROCEDURE [ file: PascalFilePtr, length: CARDINAL, element: LONG POINTER]; PascalGET: UNSAFE PROCEDURE [ file: PascalFilePtr, length: CARDINAL, element: LONG POINTER -- TO ARRAY[0..length/2) OF UNSPECIFIED --]; PascalPUT: PROCEDURE [ file: PascalFilePtr, length: CARDINAL, element: LONG POINTER -- TO ARRAY[0..length/2) OF UNSPECIFIED --]; PascalRESET: UNSAFE PROCEDURE [ file: PascalFilePtr, length: CARDINAL, element: LONG POINTER -- TO ARRAY[0..length/2) OF UNSPECIFIED --]; PascalREWRITE: PROCEDURE [ file: PascalFilePtr, length: CARDINAL _ 0, element: LONG POINTER -- TO ARRAY[0..length/2) OF UNSPECIFIED -- _ NIL]; <> <> PascalRead, PascalReadLong, PascalWrite, PascalWriteLong: UNSAFE PROCEDURE [ file: PascalFilePtr, length: CARDINAL, element: LONG POINTER -- TO ARRAY[0..length/2) OF UNSPECIFIED --, item: LONG POINTER -- TO ARRAY[0..length/2) OF UNSPECIFIED --]; PascalEOF: PROCEDURE [file: PascalFilePtr] RETURNS [BOOLEAN]; <> PascalReadLn, PascalWriteLn: PROCEDURE [file: PascalTextFilePtr]; <> PascalReadInteger: PROCEDURE [file: PascalTextFilePtr] RETURNS [PascalInteger]; PascalWriteInteger: PROCEDURE [ file: PascalTextFilePtr, item: PascalInteger, fieldMinLength: PascalInteger _ -1]; PascalReadReal: PROCEDURE [file: PascalTextFilePtr] RETURNS [PascalReal]; PascalWriteReal: PROCEDURE [ file: PascalTextFilePtr, item: PascalReal, fieldMinLength, fracLength: PascalInteger _ -1]; PascalReadChar: PROCEDURE [file: PascalTextFilePtr] RETURNS [PascalChar]; PascalWriteChar: PROCEDURE [ file: PascalTextFilePtr, item: PascalChar, fieldMinLength: PascalInteger _ -1]; PascalReadBoolean: PROCEDURE [file: PascalTextFilePtr] RETURNS [PascalBoolean]; PascalWriteBoolean: PROCEDURE [ file: PascalTextFilePtr, item: PascalBoolean, fieldMinLength: PascalInteger _ -1]; PascalReadArrayOfChar, PascalReadLongArrayOfChar: UNSAFE PROCEDURE [ file: PascalTextFilePtr, item: CharArrayPtr, arrayBound: PascalInteger]; PascalWriteArrayOfChar, PascalWriteLongArrayOfChar: PROCEDURE [ file: PascalTextFilePtr, item: CharArrayPtr, arrayBound: PascalInteger, fieldMinLength: PascalInteger _ -1]; <> <> <> <> PascalWriteString, PascalWriteLongString: PROCEDURE [ file: PascalTextFilePtr, item: ROPE, fieldMinLength: PascalInteger _ -1]; <

> <<(and hence, intended to be called as external procedures by the Pascal>> <> <> PascalOpenTextFileWithStream: UNSAFE PROCEDURE [ file: PascalTextFilePtr, stream: IO.STREAM]; <> PascalOpenTextFileTTYInput: UNSAFE PROCEDURE [ file: PascalTextFilePtr]; <> PascalOpenTextFileTTYOutput: UNSAFE PROCEDURE [ file: PascalTextFilePtr]; <> PascalCloseTextFile: UNSAFE PROCEDURE [file: PascalTextFilePtr]; <> <> <> PascalOpenFileWithStream: UNSAFE PROCEDURE [ file: PascalFilePtr, stream: IO.STREAM]; <> PascalCloseFile: UNSAFE PROCEDURE [file: PascalFilePtr]; <> <> END. -- PascalWizardFiles