obytestream.h
1 #pragma once
2 
3 #include "stormancer/BuildConfig.h"
4 #include "stormancer/Streams/bytestreambuf.h"
5 #include <ostream>
6 #include <vector>
7 #include <iostream>
8 
9 namespace Stormancer
10 {
11  class ibytestream;
12 
13  class obytestream : public std::basic_ostream<byte>
14  {
15  public:
16 
17 #pragma region public_methods
18 
19  obytestream();
20 
21  obytestream(byte* dataPtr, std::streamsize dataSize, bool allowExtend = false);
22 
23  virtual obytestream& operator<<(const char value);
24 
25  virtual obytestream& operator<<(const int8 value);
26 
27  virtual obytestream& operator<<(const uint8 value);
28 
29  virtual obytestream& operator<<(const int16 value);
30 
31  virtual obytestream& operator<<(const uint16 value);
32 
33  virtual obytestream& operator<<(const int32 value);
34 
35  virtual obytestream& operator<<(const uint32 value);
36 
37  virtual obytestream& operator<<(const int64 value);
38 
39  virtual obytestream& operator<<(const uint64 value);
40 
41  virtual obytestream& operator<<(const float value);
42 
43  virtual obytestream& operator<<(const double value);
44 
45  virtual obytestream& operator<<(const bool value);
46 
47  virtual obytestream& operator<<(const void* value);
48 
49  virtual obytestream& operator<<(const std::vector<byte>& bytes);
50 
51  virtual obytestream& operator<<(ibytestream& inputStream);
52 
53  virtual std::vector<byte> bytes();
54 
55  byte* startPtr();
56 
57  byte* currentPtr();
58 
59  byte* endPtr();
60 
61  std::streamsize totalSize();
62 
63  std::streamsize availableSize();
64 
65  std::streamsize currentPosition();
66 
67  void dynamic(bool dyn);
68 
69  obytestream& write(const byte* ptr, std::streamsize size);
70 
71  obytestream& write(const char* ptr, std::streamsize size);
72 
73 #pragma endregion
74 
75  private:
76 
77 #pragma region private_methods
78 
79  template<typename T>
80  inline obytestream& serialize(const T& value)
81  {
82  if (good())
83  {
84  write((const byte*)&value, sizeof(T));
85  }
86  return (*this);
87  }
88 
89 #pragma endregion
90 
91 #pragma region private_members
92 
93  bytestreambuf _buffer;
94 
95 #pragma endregion
96  };
97 }
Definition: bytestreambuf.h:30
Definition: obytestream.h:13
Definition: ibytestream.h:11