/* voc 2.1.0 [2025/05/18] for gcc LP64 on slackware xtspaF */

#ifndef ulmNetIO__h
#define ulmNetIO__h

#include "SYSTEM.h"
#include "ulmConstStrings.h"
#include "ulmStreams.h"

typedef
	struct ulmNetIO_InterfaceRec *ulmNetIO_Interface;

typedef
	BOOLEAN (*ulmNetIO_ReadByteProc)(ulmStreams_Stream, SYSTEM_BYTE*);

typedef
	BOOLEAN (*ulmNetIO_ReadCharProc)(ulmStreams_Stream, CHAR*);

typedef
	BOOLEAN (*ulmNetIO_ReadBooleanProc)(ulmStreams_Stream, BOOLEAN*);

typedef
	BOOLEAN (*ulmNetIO_ReadShortIntProc)(ulmStreams_Stream, INT8*);

typedef
	BOOLEAN (*ulmNetIO_ReadIntegerProc)(ulmStreams_Stream, INT32*);

typedef
	BOOLEAN (*ulmNetIO_ReadLongIntProc)(ulmStreams_Stream, INT32*);

typedef
	BOOLEAN (*ulmNetIO_ReadRealProc)(ulmStreams_Stream, LONGREAL*);

typedef
	BOOLEAN (*ulmNetIO_ReadLongRealProc)(ulmStreams_Stream, LONGREAL*);

typedef
	BOOLEAN (*ulmNetIO_ReadSetProc)(ulmStreams_Stream, UINT32*);

typedef
	BOOLEAN (*ulmNetIO_ReadStringProc)(ulmStreams_Stream, CHAR*, ADDRESS );

typedef
	BOOLEAN (*ulmNetIO_ReadConstStringProc)(ulmStreams_Stream, ulmConstStrings_Domain, ulmConstStrings_String*);

typedef
	BOOLEAN (*ulmNetIO_WriteByteProc)(ulmStreams_Stream, SYSTEM_BYTE);

typedef
	BOOLEAN (*ulmNetIO_WriteCharProc)(ulmStreams_Stream, CHAR);

typedef
	BOOLEAN (*ulmNetIO_WriteBooleanProc)(ulmStreams_Stream, BOOLEAN);

typedef
	BOOLEAN (*ulmNetIO_WriteShortIntProc)(ulmStreams_Stream, INT8);

typedef
	BOOLEAN (*ulmNetIO_WriteIntegerProc)(ulmStreams_Stream, INT32);

typedef
	BOOLEAN (*ulmNetIO_WriteLongIntProc)(ulmStreams_Stream, INT32);

typedef
	BOOLEAN (*ulmNetIO_WriteRealProc)(ulmStreams_Stream, LONGREAL);

typedef
	BOOLEAN (*ulmNetIO_WriteLongRealProc)(ulmStreams_Stream, LONGREAL);

typedef
	BOOLEAN (*ulmNetIO_WriteSetProc)(ulmStreams_Stream, UINT32);

typedef
	BOOLEAN (*ulmNetIO_WriteStringProc)(ulmStreams_Stream, CHAR*, ADDRESS );

typedef
	BOOLEAN (*ulmNetIO_WriteConstStringProc)(ulmStreams_Stream, ulmConstStrings_String);

typedef
	struct ulmNetIO_InterfaceRec {
		ulmNetIO_ReadByteProc readByte;
		ulmNetIO_ReadCharProc readChar;
		ulmNetIO_ReadBooleanProc readBoolean;
		ulmNetIO_ReadShortIntProc readShortInt;
		ulmNetIO_ReadIntegerProc readInteger;
		ulmNetIO_ReadLongIntProc readLongInt;
		ulmNetIO_ReadRealProc readReal;
		ulmNetIO_ReadLongRealProc readLongReal;
		ulmNetIO_ReadSetProc readSet;
		ulmNetIO_ReadStringProc readString;
		ulmNetIO_ReadConstStringProc readConstString;
		ulmNetIO_WriteByteProc writeByte;
		ulmNetIO_WriteCharProc writeChar;
		ulmNetIO_WriteBooleanProc writeBoolean;
		ulmNetIO_WriteShortIntProc writeShortInt;
		ulmNetIO_WriteIntegerProc writeInteger;
		ulmNetIO_WriteLongIntProc writeLongInt;
		ulmNetIO_WriteRealProc writeReal;
		ulmNetIO_WriteLongRealProc writeLongReal;
		ulmNetIO_WriteSetProc writeSet;
		ulmNetIO_WriteStringProc writeString;
		ulmNetIO_WriteConstStringProc writeConstString;
	} ulmNetIO_InterfaceRec;



import ADDRESS *ulmNetIO_InterfaceRec__typ;

import void ulmNetIO_AttachInterface (ulmStreams_Stream s, ulmNetIO_Interface if_);
import void ulmNetIO_CopyInterface (ulmStreams_Stream from, ulmStreams_Stream to);
import BOOLEAN ulmNetIO_ReadBoolean (ulmStreams_Stream s, BOOLEAN *boolean);
import BOOLEAN ulmNetIO_ReadByte (ulmStreams_Stream s, SYSTEM_BYTE *byte);
import BOOLEAN ulmNetIO_ReadChar (ulmStreams_Stream s, CHAR *char_);
import BOOLEAN ulmNetIO_ReadConstString (ulmStreams_Stream s, ulmConstStrings_String *string);
import BOOLEAN ulmNetIO_ReadConstStringD (ulmStreams_Stream s, ulmConstStrings_Domain domain, ulmConstStrings_String *string);
import BOOLEAN ulmNetIO_ReadInteger (ulmStreams_Stream s, INT32 *integer);
import BOOLEAN ulmNetIO_ReadLongInt (ulmStreams_Stream s, INT32 *longint);
import BOOLEAN ulmNetIO_ReadLongReal (ulmStreams_Stream s, LONGREAL *longreal);
import BOOLEAN ulmNetIO_ReadReal (ulmStreams_Stream s, LONGREAL *real);
import BOOLEAN ulmNetIO_ReadSet (ulmStreams_Stream s, UINT32 *set);
import BOOLEAN ulmNetIO_ReadShortInt (ulmStreams_Stream s, INT8 *shortint);
import BOOLEAN ulmNetIO_ReadString (ulmStreams_Stream s, CHAR *string, ADDRESS string__len);
import BOOLEAN ulmNetIO_WriteBoolean (ulmStreams_Stream s, BOOLEAN boolean);
import BOOLEAN ulmNetIO_WriteByte (ulmStreams_Stream s, SYSTEM_BYTE byte);
import BOOLEAN ulmNetIO_WriteChar (ulmStreams_Stream s, CHAR char_);
import BOOLEAN ulmNetIO_WriteConstString (ulmStreams_Stream s, ulmConstStrings_String string);
import BOOLEAN ulmNetIO_WriteInteger (ulmStreams_Stream s, INT32 integer);
import BOOLEAN ulmNetIO_WriteLongInt (ulmStreams_Stream s, INT32 longint);
import BOOLEAN ulmNetIO_WriteLongReal (ulmStreams_Stream s, LONGREAL longreal);
import BOOLEAN ulmNetIO_WriteReal (ulmStreams_Stream s, LONGREAL real);
import BOOLEAN ulmNetIO_WriteSet (ulmStreams_Stream s, UINT32 set);
import BOOLEAN ulmNetIO_WriteShortInt (ulmStreams_Stream s, INT8 shortint);
import BOOLEAN ulmNetIO_WriteString (ulmStreams_Stream s, CHAR *string, ADDRESS string__len);
import void *ulmNetIO__init(void);


#endif // ulmNetIO
