forked from kovacsv/VisualScriptEngineWeb
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNE_Stream.hpp
More file actions
80 lines (66 loc) · 1.67 KB
/
NE_Stream.hpp
File metadata and controls
80 lines (66 loc) · 1.67 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#ifndef NE_STREAM_HPP
#define NE_STREAM_HPP
#include <string>
namespace NE
{
class Stream
{
public:
enum class Status
{
NoError,
Error
};
Stream ();
virtual ~Stream ();
Status GetStatus () const;
protected:
Status status;
};
class InputStream : public Stream
{
public:
InputStream ();
virtual ~InputStream ();
virtual Status Read (bool& val) = 0;
virtual Status Read (char& val) = 0;
virtual Status Read (unsigned char& val) = 0;
virtual Status Read (short& val) = 0;
virtual Status Read (size_t& val) = 0;
virtual Status Read (int& val) = 0;
virtual Status Read (float& val) = 0;
virtual Status Read (double& val) = 0;
virtual Status Read (std::string& val) = 0;
virtual Status Read (std::wstring& val) = 0;
};
class OutputStream : public Stream
{
public:
OutputStream ();
virtual ~OutputStream ();
virtual Status Write (const bool& val) = 0;
virtual Status Write (const char& val) = 0;
virtual Status Write (const unsigned char& val) = 0;
virtual Status Write (const short& val) = 0;
virtual Status Write (const size_t& val) = 0;
virtual Status Write (const int& val) = 0;
virtual Status Write (const float& val) = 0;
virtual Status Write (const double& val) = 0;
virtual Status Write (const std::string& val) = 0;
virtual Status Write (const std::wstring& val) = 0;
};
template <class EnumType>
Stream::Status ReadEnum (InputStream& inputStream, EnumType& enumVal)
{
int enumValInt = 0;
Stream::Status status = inputStream.Read (enumValInt);
enumVal = (EnumType) enumValInt;
return status;
}
template <class EnumType>
Stream::Status WriteEnum (OutputStream& outputStream, const EnumType& enumVal)
{
return outputStream.Write ((int) enumVal);
}
}
#endif