summaryrefslogtreecommitdiff
path: root/comm/IOS.h
blob: 9f87478fc900ffff26692804b2944e725e05a656 (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
/*
 *	The Unix Channel
 *
 *	by Michel Beaudouin-Lafon
 *
 *	Copyright 1990-1997
 *	Laboratoire de Recherche en Informatique (LRI)
 *
 *	Basic I/O 
 *
 *	$Id$
 *	$CurLog$
 */

#ifndef UchIO_H_
#define UchIO_H_

#ifdef __GNUG__
#pragma interface
#endif

#include "cplus_bugs.h"
#include "ccu/bool.h"
#include "ccu/word.h"
class CcuString;

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

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 (CcuString&) = 0;

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

#endif /* UchIO_H_ */