summaryrefslogtreecommitdiff
path: root/comm/IOS.h
blob: 007efeedd4960198a7ce78dfcf81ae7de46e44ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 *	Ivy League
 *
 *	Basic I/O 
 *
 *	Copyright 1990-2000
 *	Laboratoire de Recherche en Informatique (LRI)
 *	Centre d'Etudes de la Navigation Aerienne (CENA)
 *
 *	by Stephane Chatty
 *	portions of code by Michel Beaudouin-Lafon,
 *
 *	$Id$
 *
 */

#ifndef IvlIO_H_
#define IvlIO_H_

#ifdef __GNUG__
#pragma interface
#endif

#include "cplus_bugs.h"
#include "ivl/bool.h"
#include "ivl/word.h"
class IvlString;

class IvlIOS {
public:
		IvlIOS ();
virtual		~IvlIOS ();

virtual	void	WriteLong (lword) = 0;
virtual	void	WriteShort (sword) = 0;
virtual	void	WriteByte (byte) = 0;
virtual	void	WriteChar (char) = 0;
virtual	void	WriteString (const char*) = 0;
virtual	void	WriteBuf (const byte*, int) = 0;

virtual	bool	ReadLong (lword&) = 0;
virtual	bool	ReadShort (sword&) = 0;
virtual	bool	ReadByte (byte&) = 0;
virtual	bool	ReadChar (char&) = 0;
virtual	bool	ReadBuf (byte*, int) = 0;
virtual	int	ReadString (char*, int = -1) = 0;
virtual	int	ReadString (IvlString&) = 0;

inline	IvlIOS&	operator << (lword l)	{ WriteLong (l); return *this; }
inline	IvlIOS&	operator << (sword s)	{ WriteShort (s); return *this; }
inline	IvlIOS&	operator << (byte b)	{ WriteByte (b); return *this; }
inline	IvlIOS&	operator << (char c)	{ WriteChar (c); return *this; }
inline	IvlIOS&	operator << (const char* s)	{ WriteString (s); return *this; }
	
inline	IvlIOS&	operator >> (lword& l)	{ ReadLong (l); return *this; }
inline	IvlIOS&	operator >> (sword& s)	{ ReadShort (s); return *this; }
inline	IvlIOS&	operator >> (byte& b)	{ ReadByte (b); return *this; }
inline	IvlIOS&	operator >> (char& c)	{ ReadChar (c); return *this; }
inline	IvlIOS&	operator >> (char* s)	{ ReadString (s); return *this; }
inline	IvlIOS&	operator >> (IvlString& s)	{ ReadString (s); return *this; }
};

#endif /* IvlIO_H_ */