Usermode/AxWin4 - Working in shared memory usage
[tpg/acess2.git] / Usermode / Applications / axwin4_src / Common / include / serialisation.hpp
index 32ba465..54293c1 100644 (file)
@@ -23,15 +23,26 @@ class CDeserialiseException:
 
 class CDeserialiser
 {
-       const size_t    m_length;
-       const uint8_t*  m_data;
+       ::std::vector<uint8_t>  m_vect;
        size_t  m_offset;
 public:
-       CDeserialiser(size_t Length, const uint8_t *Buffer);
+       CDeserialiser():
+               CDeserialiser(::std::vector<uint8_t>())
+       {}
+       CDeserialiser(const ::std::vector<uint8_t>& vect);
+       CDeserialiser(::std::vector<uint8_t>&& vect);
+       CDeserialiser(const CDeserialiser& x) { *this = x; };
+       CDeserialiser& operator=(const CDeserialiser& x);
+       bool    IsConsumed() const;
        ::uint8_t       ReadU8();
        ::uint16_t      ReadU16();
        ::int16_t       ReadS16();
-       ::std::string   ReadString();
+       ::uint32_t      ReadU32();
+       ::uint64_t      ReadU64();
+       const ::std::vector<uint8_t>    ReadBuffer();
+       const ::std::string     ReadString();
+private:
+       void RangeCheck(const char *Method, size_t bytes) throw(::std::out_of_range);
 };
 
 class CSerialiser
@@ -42,6 +53,9 @@ public:
        void WriteU8(::uint8_t val);
        void WriteU16(::uint16_t val);
        void WriteS16(::int16_t val);
+       void WriteU32(::uint32_t val);
+       void WriteU64(::uint64_t val);
+       void WriteBuffer(size_t n, const void* val);
        void WriteString(const char* val, size_t n);
        void WriteString(const char* val) {
                WriteString(val, ::std::char_traits<char>::length(val));
@@ -50,6 +64,8 @@ public:
                WriteString(val.data(), val.size());
        }
        void WriteSub(const CSerialiser& val);
+       
+       const ::std::vector<uint8_t>& Compact();
 };
 
 };

UCC git Repository :: git.ucc.asn.au