Oberon || Library || Module Index || Search Engine || Definition || Module


Ulm's Oberon Library:
NetIO


NAME

NetIO - exchange of Oberon base types

SYNOPSIS

TYPE ReadByteProc =
   PROCEDURE (s: Streams.Stream; VAR byte: BYTE) : BOOLEAN;
TYPE ReadCharProc =
   PROCEDURE (s: Streams.Stream; VAR char: CHAR) : BOOLEAN;
TYPE ReadBooleanProc =
   PROCEDURE (s: Streams.Stream; VAR boolean: BOOLEAN) : BOOLEAN;
TYPE ReadShortIntProc =
   PROCEDURE (s: Streams.Stream; VAR shortint: SHORTINT) : BOOLEAN;
TYPE ReadIntegerProc =
   PROCEDURE (s: Streams.Stream; VAR integer: INTEGER) : BOOLEAN;
TYPE ReadLongIntProc =
   PROCEDURE (s: Streams.Stream; VAR longint: LONGINT) : BOOLEAN;
TYPE ReadRealProc =
   PROCEDURE (s: Streams.Stream; VAR real: REAL) : BOOLEAN;
TYPE ReadLongRealProc =
   PROCEDURE (s: Streams.Stream; VAR longreal: LONGREAL) : BOOLEAN;
TYPE ReadSetProc =
   PROCEDURE (s: Streams.Stream; VAR set: SET) : BOOLEAN;
TYPE ReadStringProc =
   PROCEDURE (s: Streams.Stream; VAR string: ARRAY OF CHAR) : BOOLEAN;
TYPE ReadConstStringProc =
   PROCEDURE (s: Streams.Stream; domain: ConstStrings.Domain;
              VAR string: ConstStrings.String) : BOOLEAN;


TYPE WriteByteProc = PROCEDURE (s: Streams.Stream; byte: BYTE) : BOOLEAN; TYPE WriteCharProc = PROCEDURE (s: Streams.Stream; char: CHAR) : BOOLEAN; TYPE WriteBooleanProc = PROCEDURE (s: Streams.Stream; boolean: BOOLEAN) : BOOLEAN; TYPE WriteShortIntProc = PROCEDURE (s: Streams.Stream; shortint: SHORTINT) : BOOLEAN; TYPE WriteIntegerProc = PROCEDURE (s: Streams.Stream; integer: INTEGER) : BOOLEAN; TYPE WriteLongIntProc = PROCEDURE (s: Streams.Stream; longint: LONGINT) : BOOLEAN; TYPE WriteRealProc = PROCEDURE (s: Streams.Stream; real: REAL) : BOOLEAN; TYPE WriteLongRealProc = PROCEDURE (s: Streams.Stream; longreal: LONGREAL) : BOOLEAN; TYPE WriteSetProc = PROCEDURE (s: Streams.Stream; set: SET) : BOOLEAN; TYPE WriteStringProc = PROCEDURE (s: Streams.Stream; string: ARRAY OF CHAR) : BOOLEAN; TYPE WriteConstStringProc = PROCEDURE (s: Streams.Stream; string: ConstStrings.String) : BOOLEAN;

TYPE Interface = POINTER TO InterfaceRec; TYPE InterfaceRec = RECORD readByte: ReadByteProc; readChar: ReadCharProc; readBoolean: ReadBooleanProc; readShortInt: ReadShortIntProc; readInteger: ReadIntegerProc; readLongInt: ReadLongIntProc; readReal: ReadRealProc; readLongReal: ReadLongRealProc; readSet: ReadSetProc; readString: ReadStringProc; readConstString: ReadConstStringProc; writeByte: WriteByteProc; writeChar: WriteCharProc; writeBoolean: WriteBooleanProc; writeShortInt: WriteShortIntProc; writeInteger: WriteIntegerProc; writeLongInt: WriteLongIntProc; writeReal: WriteRealProc; writeLongReal: WriteLongRealProc; writeSet: WriteSetProc; writeString: WriteStringProc; writeConstString: WriteConstStringProc; END;

PROCEDURE AttachInterface(s: Streams.Stream; if: Interface); PROCEDURE CopyInterface(from, to: Streams.Stream);

PROCEDURE ReadByte(s: Streams.Stream; VAR byte: BYTE) : BOOLEAN; PROCEDURE ReadChar(s: Streams.Stream; VAR char: CHAR) : BOOLEAN; PROCEDURE ReadBoolean(s: Streams.Stream; VAR boolean: BOOLEAN) : BOOLEAN; PROCEDURE ReadShortInt(s: Streams.Stream; VAR shortint: SHORTINT) : BOOLEAN; PROCEDURE ReadInteger(s: Streams.Stream; VAR integer: INTEGER) : BOOLEAN; PROCEDURE ReadLongInt(s: Streams.Stream; VAR longint: LONGINT) : BOOLEAN; PROCEDURE ReadReal(s: Streams.Stream; VAR real: REAL) : BOOLEAN; PROCEDURE ReadLongReal(s: Streams.Stream; VAR longreal: LONGREAL) : BOOLEAN; PROCEDURE ReadSet(s: Streams.Stream; VAR set: SET) : BOOLEAN; PROCEDURE ReadString(s: Streams.Stream; VAR string: ARRAY OF CHAR) : BOOLEAN; PROCEDURE ReadConstString(s: Streams.Stream; VAR string: ConstStrings.String) : BOOLEAN; PROCEDURE ReadConstStringD(s: Streams.Stream; domain: ConstStrings.Domain; VAR string: ConstStrings.String) : BOOLEAN;

PROCEDURE WriteByte(s: Streams.Stream; byte: BYTE) : BOOLEAN; PROCEDURE WriteChar(s: Streams.Stream; char: CHAR) : BOOLEAN; PROCEDURE WriteBoolean(s: Streams.Stream; boolean: BOOLEAN) : BOOLEAN; PROCEDURE WriteShortInt(s: Streams.Stream; shortint: SHORTINT) : BOOLEAN; PROCEDURE WriteInteger(s: Streams.Stream; integer: INTEGER) : BOOLEAN; PROCEDURE WriteLongInt(s: Streams.Stream; longint: LONGINT) : BOOLEAN; PROCEDURE WriteReal(s: Streams.Stream; real: REAL) : BOOLEAN; PROCEDURE WriteLongReal(s: Streams.Stream; longreal: LONGREAL) : BOOLEAN; PROCEDURE WriteSet(s: Streams.Stream; set: SET) : BOOLEAN; PROCEDURE WriteString(s: Streams.Stream; string: ARRAY OF CHAR) : BOOLEAN; PROCEDURE WriteConstString(s: Streams.Stream; string: ConstStrings.String) : BOOLEAN;

DESCRIPTION

NetIO provides an abstraction for the exchange of Oberon base types which are components of persistent data structures. Possible implementations may take care of different compilers and machine architectures. Additionally, they could improve safety by the use of tag fields.

NetIO itself provides a default interface which is used when AttachInterface has not been called yet for the given stream or is called with if set to NIL. The default interface uses binary I/O which does not take care of different implementations. CopyInterface may be used instead of AttachInterface to attach the set of interface procedures to to which has been formerly attached to from. Note that NetIO supports Forwarders, i.e. Forwarders.Forward calls CopyInterface implicitly. If AttachInterface or CopyInterface is called, the new interface will be installed for all dependent streams of s or to, respectively.

DIAGNOSTICS

All input and output procedures return FALSE in error case. With the exception of reaching an end of file condition, they should generate appropriate events which indicate the problem.

SEE ALSO

Forwarders
general forwarding operation
PersistentEvents
input and output of events and error queues
PersistentObjects
input and output of persistent objects

Edited by: borchert, last change: 1999/04/15, revision: 1.4, converted to HTML: 1999/04/15

Oberon || Library || Module Index || Search Engine || Definition || Module