(* RTgen.def provide a generic device interface used by ISO. Copyright (C) 2008-2023 Free Software Foundation, Inc. Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. This file is part of GNU Modula-2. GNU Modula-2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. *) DEFINITION MODULE RTgen ; (* Title : RTgen Author : Gaius Mulley System : GNU Modula-2 Date : Mon Sep 22 18:15:35 2008 Revision : $Version$ 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.