gm2-libs-iso/RTgen (The GNU Modula-2 Compiler)

#### 4.4.36 gm2-libs-iso/RTgen ¶

    DEFINITION MODULE RTgen ;

    (*
        Description: provides a generic device interface between
                     ISO channels and the underlying PIM style
                     FIO procedure calls.
    *)

    FROM RTgenif IMPORT GenDevIF ;
    FROM IOLink IMPORT DeviceId, DeviceTablePtr;
    FROM IOConsts IMPORT ReadResults ;
    FROM SYSTEM IMPORT ADDRESS ;

    TYPE
       ChanDev ;
       DeviceType = (seqfile, streamfile, programargs, stdchans, term, socket, rndfile) ;

    (*
       InitChanDev - initialize and return a ChanDev.
    *)

    PROCEDURE InitChanDev (t: DeviceType; d: DeviceId; g: GenDevIF) : ChanDev ;

    (*
       KillChanDev - deallocates, g.
    *)

    PROCEDURE KillChanDev (g: GenDevIF) : GenDevIF ;

    (*
       RaiseEOFinLook - returns TRUE if the Look procedure
                        should raise an exception if it
                        sees end of file.
    *)

    PROCEDURE RaiseEOFinLook (g: ChanDev) : BOOLEAN ;

    (*
       RaiseEOFinSkip - returns TRUE if the Skip procedure
                        should raise an exception if it
                        sees end of file.
    *)

    PROCEDURE RaiseEOFinSkip (g: ChanDev) : BOOLEAN ;

    PROCEDURE doLook (g: ChanDev;
                      d: DeviceTablePtr;
                      VAR ch: CHAR;
                      VAR r: ReadResults) ;

    PROCEDURE doSkip (g: ChanDev;
                      d: DeviceTablePtr) ;

    PROCEDURE doSkipLook (g: ChanDev;
                          d: DeviceTablePtr;
                          VAR ch: CHAR;
                          VAR r: ReadResults) ;

    PROCEDURE doWriteLn (g: ChanDev;
                         d: DeviceTablePtr) ;

    PROCEDURE doReadText (g: ChanDev;
                          d: DeviceTablePtr;
                          to: ADDRESS;
                          maxChars: CARDINAL;
                          VAR charsRead: CARDINAL) ;

    PROCEDURE doWriteText (g: ChanDev;
                           d: DeviceTablePtr;
                           from: ADDRESS;
                           charsToWrite: CARDINAL) ;

    PROCEDURE doReadLocs (g: ChanDev;
                          d: DeviceTablePtr;
                          to: ADDRESS;
                          maxLocs: CARDINAL;
                          VAR locsRead: CARDINAL) ;

    PROCEDURE doWriteLocs (g: ChanDev;
                           d: DeviceTablePtr;
                           from: ADDRESS;
                           locsToWrite: CARDINAL) ;

    (*
       checkErrno - checks a number of errno conditions and raises
                    appropriate ISO exceptions if they occur.
    *)

    PROCEDURE checkErrno (g: ChanDev; d: DeviceTablePtr) ;

    END RTgen.