Usermode/AxWin4 - Starting work on client-side library
[tpg/acess2.git] / Usermode / Applications / axwin4_src / Common / serialisation.cpp
1 /*
2  * Acess2 GUI v4
3  * - By John Hodge (thePowersGang) 
4  *
5  * serialisation.cpp
6  * - IPC Serialisation
7  */
8 #include <serialisation.hpp>
9 #include <cstddef>
10
11 namespace AxWin {
12
13 CDeserialiser::CDeserialiser(size_t Length, const uint8_t *Buffer):
14         m_length(Length),
15         m_data(Buffer),
16         m_offset(0)
17 {
18 }
19
20 ::uint8_t CDeserialiser::ReadU8()
21 {
22         return 0;
23 }
24
25 ::uint16_t CDeserialiser::ReadU16()
26 {
27         return 0;
28 }
29
30 ::int16_t CDeserialiser::ReadS16()
31 {
32         return 0;
33 }
34
35 ::std::string CDeserialiser::ReadString()
36 {
37         return "";
38 }
39
40 CSerialiser::CSerialiser()
41 {
42 }
43
44 void CSerialiser::WriteU8(::uint8_t Value)
45 {
46         m_data.push_back(Value);
47 }
48
49 void CSerialiser::WriteU16(::uint16_t Value)
50 {
51         m_data.push_back(Value & 0xFF);
52         m_data.push_back(Value >> 8);
53 }
54
55 void CSerialiser::WriteS16(::int16_t Value)
56 {
57         if( Value < 0 )
58         {
59                 ::uint16_t rawval = 0x10000 - (::int32_t)Value;
60                 WriteU16(rawval);
61         }
62         else
63         {
64                 WriteU16(Value);
65         }
66 }
67
68 void CSerialiser::WriteString(const char* val, size_t n)
69 {
70         //if( n >= 256 )
71         //      throw ::std::out_of_range("CSerialiser::WriteString");
72         WriteU8(n);
73         for( size_t i = 0; i < n; i ++ )
74                 WriteU8(val[i]);
75 }
76
77 void CSerialiser::WriteSub(const CSerialiser& val)
78 {
79         m_data.reserve( m_data.size() + val.m_data.size() );
80         for( auto byte : val.m_data )
81                 m_data.push_back( byte );
82 }
83
84 };      // namespace AxWin
85

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