Devel Lib
SerializableString.h
1 #pragma once
2 
3 #include "Serializing/Core/SerializableData.h"
4 
5 namespace Devel::Serializing {
6 #pragma pack(push, 1)
7 
15  template<bool IsHidden = false, typename T = std::string>
16  class IString : public IData<T, IsHidden> {
17  public:
20  [[nodiscard]] SCompareData compareData() const override {
21  return {static_cast<const void *>(this->m_tValue.c_str()), this->m_tValue.size()};
22  }
23 
24  private:
28  bool serialize(IO::CWriteStream &i_oStream) const override {
29  i_oStream.push<uint>(static_cast<uint>(this->m_tValue.size()));
30  i_oStream.push(this->m_tValue, false);
31  return true;
32  }
33 
34  private:
38  bool deserialize(IO::CReadStream &i_oStream) override {
39  const auto nSize = static_cast<size_t>(i_oStream.get<uint>());
40  this->m_tValue = i_oStream.getString(nSize);
41  return true;
42  }
43 
47  bool deserialize(const char *i_szString) override {
48  this->m_tValue = i_szString;
49  return true;
50  }
51 
52 
57  bool deserialize(std::vector<std::string>::const_iterator &i_oIt,
58  const std::vector<std::string>::const_iterator &i_oItEnd) override {
59  this->m_tValue = *i_oIt++;
60  return true;
61  }
62 
63  public:
64  using IData<T, IsHidden>::IData;
65  };
66 
67 #pragma pack(pop)
68 }
unsigned int uint
An unsigned integer type.
Definition: Typedef.h:19
A class for reading data from a buffer. This class provides functionality to read data from a buffer....
Definition: ReadStream.h:37
std::string getString(const size_t i_nPosition, const size_t i_nLength, const bool i_fIsZeroTerminated, const bool i_fSetPosition)
Reads a string from the buffer.
Definition: ReadStream.h:249
T get(const size_t i_nPosition, const bool i_fSetPosition)
Reads a value of type T from the buffer.
Definition: ReadStream.h:344
A class for writing data to a buffer. This class provides functionality to write data to a buffer....
Definition: WriteStream.h:42
void push(const void *i_pBuffer, size_t i_nSize)
Pushes the specified data to the buffer.
Definition: WriteStream.cpp:30
Template class representing a data field.
Definition: SerializableData.h:86
A class representing a string value for serialization.
Definition: SerializableString.h:16
SCompareData compareData() const override
Retrieves the comparison data for the string value.
Definition: SerializableString.h:20
T m_tValue
The value.
Definition: SerializableData.h:78
The namespace encapsulating serializing related functionality in the Devel framework.
Structure for comparing serialized data.
Definition: SerializableData.h:19