F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Serializable.hpp
Go to the documentation of this file.
1 #ifndef SERIALIZABLE_HPP
2 #define SERIALIZABLE_HPP
3 
4 #ifdef BUILD_UT
5 #include <iostream>
6 #endif
7 
9 #include "Fw/Deprecate.hpp"
10 
11 namespace Fw {
12 
13 class StringBase;
14 typedef enum {
26 
27 class SerialBufferBase;
28 class LinearBufferBase;
29 
30 struct Serialization {
31  enum t {
34  };
35 };
36 
37 enum class Endianness {
38  BIG,
39  LITTLE
40 };
41 
42 class Serializable {
43  public:
44  // Size type for backwards compatibility
46 
47  public:
57  virtual SerializeStatus serializeTo(SerialBufferBase& buffer, Endianness mode = Endianness::BIG) const = 0;
58 
69 
70  // ----------------------------------------------------------------------
71  // Legacy methods for backward compatibility
72  // ----------------------------------------------------------------------
73 
74  DEPRECATED(SerializeStatus serialize(SerialBufferBase& buffer) const,
75  "Use serializeTo(SerialBufferBase& buffer) instead") {
76  return this->serializeTo(buffer);
77  }
78 
80  "Use deserializeFrom(SerialBufferBase& buffer) instead") {
81  return this->deserializeFrom(buffer);
82  }
83 
84 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT
85  virtual void toString(StringBase& text) const;
94 #endif
95 
96 #ifdef BUILD_UT
97  friend std::ostream& operator<<(std::ostream& os, const Serializable& val);
98 #endif
99 
100  protected:
104  Serializable();
105 
109  virtual ~Serializable();
110 };
111 
113  public:
117  virtual ~SerialBufferBase();
118 
119  // Serialization for built-in types
120 
132  virtual SerializeStatus serializeFrom(U8 val, Endianness mode = Endianness::BIG) = 0;
133 
145  virtual SerializeStatus serializeFrom(I8 val, Endianness mode = Endianness::BIG) = 0;
146 
147 #if FW_HAS_16_BIT == 1
148  virtual SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) = 0;
157 
166  virtual SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) = 0;
167 #endif
168 #if FW_HAS_32_BIT == 1
169  virtual SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) = 0;
178 
187  virtual SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) = 0;
188 #endif
189 #if FW_HAS_64_BIT == 1
199 
208  virtual SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) = 0;
209 #endif
219 
229 
238  virtual SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) = 0;
239 
249  virtual SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) = 0;
250 
260  virtual SerializeStatus serializeFrom(const U8* buff,
261  FwSizeType length,
262  Endianness endianMode = Endianness::BIG) = 0;
263 
275  virtual SerializeStatus serializeFrom(const U8* buff,
276  FwSizeType length,
277  Serialization::t lengthMode,
278  Endianness endianMode = Endianness::BIG) = 0;
279 
290 
300  virtual SerializeStatus serializeFrom(const Serializable& val, Endianness mode = Endianness::BIG) = 0;
301 
311  virtual SerializeStatus serializeSize(const FwSizeType size, Endianness mode = Endianness::BIG) = 0;
312 
313  // Deserialization for built-in types
314 
324  virtual SerializeStatus deserializeTo(U8& val, Endianness mode = Endianness::BIG) = 0;
325 
335  virtual SerializeStatus deserializeTo(I8& val, Endianness mode = Endianness::BIG) = 0;
336 
337 #if FW_HAS_16_BIT == 1
338  virtual SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) = 0;
348 
358  virtual SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) = 0;
359 #endif
360 
361 #if FW_HAS_32_BIT == 1
362  virtual SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) = 0;
372 
382  virtual SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) = 0;
383 #endif
384 #if FW_HAS_64_BIT == 1
385  virtual SerializeStatus deserializeTo(U64& val, Endianness mode = Endianness::BIG) = 0;
395 
405  virtual SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) = 0;
406 #endif
407  virtual SerializeStatus deserializeTo(F32& val, Endianness mode = Endianness::BIG) = 0;
417 
427  virtual SerializeStatus deserializeTo(F64& val, Endianness mode = Endianness::BIG) = 0;
428 
438  virtual SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) = 0;
439 
450  virtual SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) = 0;
451 
462  virtual SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) = 0;
463 
477  virtual SerializeStatus deserializeTo(U8* buff,
478  FwSizeType& length,
479  Serialization::t lengthMode,
480  Endianness endianMode = Endianness::BIG) = 0;
481 
492 
503 
514 
533 
552 
558  virtual void resetSer() = 0;
559 
566  virtual void resetDeser() = 0;
567 
576  virtual SerializeStatus moveSerToOffset(FwSizeType offset) = 0;
577 
586  virtual SerializeStatus moveDeserToOffset(FwSizeType offset) = 0;
587 
596  virtual SerializeStatus serializeSkip(FwSizeType numBytesToSkip) = 0;
597 
606  virtual SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) = 0;
607 
615  virtual Serializable::SizeType getCapacity() const = 0;
616 
624  virtual Serializable::SizeType getSize() const = 0;
625 
634 
643  virtual Serializable::SizeType getSerializeSizeLeft() const = 0;
644 
654  virtual SerializeStatus setBuff(const U8* src, Serializable::SizeType length) = 0;
655 
665 };
666 
669 
670  protected:
680 
681  public:
685  Serializable::SizeType maxSize
686  ) {
687  return static_cast<Serializable::SizeType>(sizeof(FwSizeStoreType)) + maxSize;
688  }
689 
694  virtual ~LinearBufferBase();
695 
696  // Serialization for built-in types
697 
710 
723 
724 #if FW_HAS_16_BIT == 1
725  SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) override;
734 
743  SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) override;
744 #endif
745 #if FW_HAS_32_BIT == 1
746  SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) override;
755 
764  SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) override;
765 #endif
766 #if FW_HAS_64_BIT == 1
776 
785  SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) override;
786 #endif
796 
806 
815  SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) override;
816 
826  SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) override;
827 
837  SerializeStatus serializeFrom(const U8* buff, FwSizeType length, Endianness endianMode = Endianness::BIG) override;
838 
850  SerializeStatus serializeFrom(const U8* buff,
851  FwSizeType length,
852  Serialization::t lengthMode,
853  Endianness endianMode = Endianness::BIG) override;
854 
865 
876 
887 
888  // Deserialization for built-in types
889 
900 
911 
912 #if FW_HAS_16_BIT == 1
913  SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) override;
923 
933  SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) override;
934 #endif
935 
936 #if FW_HAS_32_BIT == 1
937  SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) override;
947 
957  SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) override;
958 #endif
959 #if FW_HAS_64_BIT == 1
970 
980  SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) override;
981 #endif
992 
1003 
1013  SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) override;
1014 
1025  SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) override;
1026 
1037  SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) override;
1038 
1053  FwSizeType& length,
1054  Serialization::t lengthMode,
1055  Endianness endianMode = Endianness::BIG) override;
1056 
1067 
1078 
1089 
1090  DEPRECATED(SerializeStatus serialize(const LinearBufferBase& val),
1091  "Use serializeFrom(const SerialBufferBase& val) instead");
1092  DEPRECATED(SerializeStatus deserialize(LinearBufferBase& val), "Use deserializeTo(SerialBufferBase& val) instead");
1093 
1101  void resetSer() override;
1102 
1111  void resetDeser() override;
1112 
1121  SerializeStatus moveSerToOffset(FwSizeType offset) override;
1122 
1131  SerializeStatus moveDeserToOffset(FwSizeType offset) override;
1132 
1141  SerializeStatus serializeSkip(FwSizeType numBytesToSkip) override;
1142 
1151  SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) override;
1152 
1153  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1154  DEPRECATED(Serializable::SizeType getBuffLength() const, "Use getSize() instead");
1155  DEPRECATED(Serializable::SizeType getBuffLeft(), "Use getDeserializeSizeLeft() instead");
1156 
1164  Serializable::SizeType getCapacity() const override = 0;
1165 
1173  Serializable::SizeType getSize() const override;
1174 
1183 
1193 
1201  virtual U8* getBuffAddr() = 0;
1202 
1210  virtual const U8* getBuffAddr() const = 0;
1211 
1219  const U8* getBuffAddrLeft() const;
1220 
1228  U8* getBuffAddrSer();
1229 
1239  SerializeStatus setBuff(const U8* src, Serializable::SizeType length) override;
1240 
1250 
1261 
1273 
1274  // ----------------------------------------------------------------------
1275  // Deprecated Serialization methods
1276  // ----------------------------------------------------------------------
1277 
1278  DEPRECATED(SerializeStatus serialize(U8 val), "Use serializeFrom(U8 val) instead");
1279  DEPRECATED(SerializeStatus serialize(I8 val), "Use serializeFrom(I8 val) instead");
1280 #if FW_HAS_16_BIT == 1
1281  DEPRECATED(SerializeStatus serialize(U16 val), "Use serializeFrom(U16 val) instead");
1282  DEPRECATED(SerializeStatus serialize(I16 val), "Use serializeFrom(I16 val) instead");
1283 #endif
1284 #if FW_HAS_32_BIT == 1
1285  DEPRECATED(SerializeStatus serialize(U32 val), "Use serializeFrom(U32 val) instead");
1286  DEPRECATED(SerializeStatus serialize(I32 val), "Use serializeFrom(I32 val) instead");
1287 #endif
1288 #if FW_HAS_64_BIT == 1
1289  DEPRECATED(SerializeStatus serialize(U64 val), "Use serializeFrom(U64 val) instead");
1290  DEPRECATED(SerializeStatus serialize(I64 val), "Use serializeFrom(I64 val) instead");
1291 #endif
1292 
1293  DEPRECATED(SerializeStatus serialize(F32 val), "Use serializeFrom(F32 val) instead");
1294  DEPRECATED(SerializeStatus serialize(F64 val), "Use serializeFrom(F64 val) instead");
1295  DEPRECATED(SerializeStatus serialize(bool val), "Use serializeFrom(bool val) instead");
1296  DEPRECATED(SerializeStatus serialize(const void* val), "Use serializeFrom(const void* val) instead");
1297  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, bool noLength),
1298  "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1299  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length),
1300  "Use serializeFrom(const U8* buff, FwSizeType length) instead");
1301  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, Serialization::t mode),
1302  "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1303  DEPRECATED(SerializeStatus serialize(const Serializable& val),
1304  "Use serializeFrom(const Serializable& val) instead");
1305 
1306  DEPRECATED(SerializeStatus deserialize(U8& val), "Use deserializeTo(U8& val) instead");
1307  DEPRECATED(SerializeStatus deserialize(I8& val), "Use deserializeTo(I8& val) instead");
1308 #if FW_HAS_16_BIT == 1
1309  DEPRECATED(SerializeStatus deserialize(U16& val), "Use deserializeTo(U16& val) instead");
1310  DEPRECATED(SerializeStatus deserialize(I16& val), "Use deserializeTo(I16& val) instead");
1311 #endif
1312 #if FW_HAS_32_BIT == 1
1313  DEPRECATED(SerializeStatus deserialize(U32& val), "Use deserializeTo(U32& val) instead");
1314  DEPRECATED(SerializeStatus deserialize(I32& val), "Use deserializeTo(I32& val) instead");
1315 #endif
1316 #if FW_HAS_64_BIT == 1
1317  DEPRECATED(SerializeStatus deserialize(U64& val), "Use deserializeTo(U64& val) instead");
1318  DEPRECATED(SerializeStatus deserialize(I64& val), "Use deserializeTo(I64& val) instead");
1319 #endif
1320 
1321  DEPRECATED(SerializeStatus deserialize(F32& val), "Use deserializeTo(F32& val) instead");
1322  DEPRECATED(SerializeStatus deserialize(F64& val), "Use deserializeTo(F64& val) instead");
1323  DEPRECATED(SerializeStatus deserialize(bool& val), "Use deserializeTo(bool& val) instead");
1324  DEPRECATED(SerializeStatus deserialize(void*& val), "Use deserializeTo(void*& val) instead");
1325  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, bool noLength),
1326  "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1327  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length),
1328  "Use deserializeTo(U8* buff, FwSizeType& length) instead");
1329  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, Serialization::t mode),
1330  "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1331  DEPRECATED(SerializeStatus deserialize(Serializable& val), "Use deserializeTo(Serializable& val) instead");
1332 
1333 #ifdef BUILD_UT
1334  bool operator==(const LinearBufferBase& other) const;
1342 
1351  friend std::ostream& operator<<(std::ostream& os, const LinearBufferBase& buff);
1352 #endif
1353 
1354  protected:
1359  LinearBufferBase();
1360 
1368  LinearBufferBase(const LinearBufferBase& src);
1369 
1377  void copyFrom(const LinearBufferBase& src);
1378 
1381 
1382  private:
1383 };
1384 
1385 // Helper classes for building buffers with external storage
1386 
1398  public:
1408 
1414 
1420 
1429  void setExtBuffer(U8* buffPtr, Serializable::SizeType size);
1430 
1436  void clear();
1437 
1443  ExternalSerializeBuffer(const ExternalSerializeBuffer& src) = delete;
1444 
1445  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1446 
1455 
1463  U8* getBuffAddr();
1464 
1472  const U8* getBuffAddr() const;
1473 
1479  ExternalSerializeBuffer& operator=(const LinearBufferBase& src) = delete;
1480 
1481  protected:
1482  // data members
1485 };
1486 
1499  public:
1508  : ExternalSerializeBuffer(buffPtr, size) {}
1509 
1515 
1520 
1527 
1537  (void)LinearBufferBase::operator=(src);
1538  return *this;
1539  }
1540 };
1541 
1556  public:
1565  : ExternalSerializeBuffer(buffPtr, size) {}
1566 
1572 
1577 
1587  this->m_serLoc = src.m_serLoc;
1588  this->m_deserLoc = src.m_deserLoc;
1589  }
1590 
1600  // Ward against self-assignment
1601  if (this != &src) {
1602  this->clear();
1603  this->m_buff = src.m_buff;
1604  this->m_buffSize = src.m_buffSize;
1605  this->m_serLoc = src.m_serLoc;
1606  this->m_deserLoc = src.m_deserLoc;
1607  }
1608  return *this;
1609  }
1610 };
1611 
1612 } // namespace Fw
1613 #endif
Serialization/Deserialization operation was successful.
friend class LinearBufferBaseTester
void clear()
Clear external buffer.
DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead")
void copyFrom(const LinearBufferBase &src)
Copy data from source buffer.
ExternalSerializeBufferWithDataCopy & operator=(LinearBufferBase &src)
Copy assignment operator with data copying.
virtual Serializable::SizeType getCapacity() const =0
Get buffer capacity.
Deserialization buffer was empty when trying to read more data.
SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG) override
Serialize an 8-bit unsigned integer value.
PlatformSizeType FwSizeType
Serialization succeeded, but deleted old data.
SerializeStatus deserializeSize(FwSizeType &size, Endianness mode=Endianness::BIG) override
Deserialize a size value.
virtual SerializeStatus serializeTo(SerialBufferBase &buffer, Endianness mode=Endianness::BIG) const =0
Serialize the contents of this object to a buffer.
forward declaration
const U8 * getBuffAddrLeft() const
Get address of remaining non-deserialized data.
Serializable::SizeType getSize() const override
Get current buffer size.
virtual SerializeStatus moveSerToOffset(FwSizeType offset)=0
Move serialization pointer to specified offset.
Serializable::SizeType m_deserLoc
current offset for deserialization
virtual SerializeStatus serializeSkip(FwSizeType numBytesToSkip)=0
Skip specified number of bytes during serialization.
int8_t I8
8-bit signed integer
Definition: BasicTypes.h:50
No room left in the buffer to serialize data.
virtual U8 * getBuffAddr()=0
Get buffer address for data filling (non-const version)
virtual void resetSer()=0
Reset serialization pointer to beginning of buffer.
Serializable::SizeType m_buffSize
size of external buffer
virtual SerializeStatus deserializeFrom(SerialBufferBase &buffer, Endianness mode=Endianness::BIG)=0
Deserialize the contents of this object from a buffer.
LinearBufferBase & operator=(const LinearBufferBase &src)
Copy assignment operator.
virtual SerializeStatus copyRaw(SerialBufferBase &dest, Serializable::SizeType size)=0
Copy raw bytes from the source (this) into a destination buffer and advance source offset...
Deserialization data had incorrect values (unexpected data types)
SerializeStatus serializeSkip(FwSizeType numBytesToSkip) override
Skip specified number of bytes during serialization.
SerializeStatus copyRaw(SerialBufferBase &dest, Serializable::SizeType size) override
Copy raw bytes from this buffer to destination and advance source offset.
virtual SerializeStatus serializeFrom(U8 val, Endianness mode=Endianness::BIG)=0
Serialize an 8-bit unsigned integer value.
SerializeStatus copyRawOffset(SerialBufferBase &dest, Serializable::SizeType size) override
Append raw bytes to destination from this buffer and advance source offset.
SerializeStatus serializeSize(const FwSizeType size, Endianness mode=Endianness::BIG) override
Serialize a size value.
DEPRECATED(SerializeStatus deserialize(SerialBufferBase &buffer), "Use deserializeFrom(SerialBufferBase& buffer) instead")
ExternalSerializeBuffer()
Default constructor.
SerializeStatus
forward declaration for string
float F32
32-bit floating point
Definition: BasicTypes.h:83
virtual SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG)=0
Deserialize an 8-bit unsigned integer value.
virtual SerializeStatus deserializeSkip(FwSizeType numBytesToSkip)=0
Skip specified number of bytes during deserialization.
SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) override
Skip specified number of bytes during deserialization.
ExternalSerializeBufferWithDataCopy()
Default constructor.
U16 FwSizeStoreType
The type used to serialize a size value.
LinearBufferBase()
Default constructor.
virtual void resetDeser()=0
Reset deserialization pointer to beginning of buffer.
Data failed validation.
DEPRECATED(SerializeStatus serialize(const LinearBufferBase &val), "Use serializeFrom(const SerialBufferBase& val) instead")
static constexpr Serializable::SizeType STATIC_SERIALIZED_SIZE(Serializable::SizeType maxSize)
Get the static serialized size of a buffer This is the max size of the buffer data plus the size of t...
virtual ~SerialBufferBase()
Virtual destructor.
Serializable::SizeType getCapacity() const
Get buffer capacity.
Data was the wrong format (e.g. wrong packet type)
ExternalSerializeBufferWithMemberCopy(U8 *buffPtr, Serializable::SizeType size)
Construct with external buffer.
U8 * m_buff
pointer to external buffer
Omit length from serialization.
Serializable::SizeType m_serLoc
current offset in buffer of serialized data
Data was left in the buffer, but not enough to deserialize.
Serializable::SizeType getDeserializeSizeLeft() const override
Get remaining deserialization buffer size.
External serialize buffer with no copy semantics.
FwSizeType SizeType
ExternalSerializeBufferWithMemberCopy(const ExternalSerializeBufferWithMemberCopy &src)
Copy constructor with member copying.
Serializable()
Default constructor.
virtual SerializeStatus serializeSize(const FwSizeType size, Endianness mode=Endianness::BIG)=0
Serialize a size value.
SerializeStatus setBuff(const U8 *src, Serializable::SizeType length) override
Set buffer contents from external source.
void resetDeser() override
Reset deserialization pointer to beginning of buffer.
void resetSer() override
Reset serialization pointer to beginning of buffer.
Serializable::SizeType getCapacity() const override=0
Get buffer capacity.
Deserialized type ID didn&#39;t match.
virtual SerializeStatus setBuffLen(Serializable::SizeType length)=0
Set buffer length manually.
virtual SerializeStatus setBuff(const U8 *src, Serializable::SizeType length)=0
Set buffer contents from external source.
virtual Serializable::SizeType getDeserializeSizeLeft() const =0
Get remaining deserialization buffer size.
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:53
ExternalSerializeBufferWithMemberCopy & operator=(const ExternalSerializeBufferWithMemberCopy &src)
Copy assignment operator with member copying.
virtual SerializeStatus copyRawOffset(SerialBufferBase &dest, Serializable::SizeType size)=0
Append raw bytes to destination (no length) and advance source offset.
DEPRECATED(SerializeStatus serialize(SerialBufferBase &buffer) const, "Use serializeTo(SerialBufferBase& buffer) instead")
SerializeStatus moveSerToOffset(FwSizeType offset) override
Move serialization pointer to specified offset.
void setExtBuffer(U8 *buffPtr, Serializable::SizeType size)
Set the external buffer.
virtual ~Serializable()
Virtual destructor.
~ExternalSerializeBuffer()
Destructor.
SerializeStatus moveDeserToOffset(FwSizeType offset) override
Move deserialization pointer to specified offset.
double F64
64-bit floating point (double). Required for compiler-supplied double promotion.
Definition: BasicTypes.h:85
External serialize buffer with member copy semantics.
virtual SerializeStatus deserializeSize(FwSizeType &size, Endianness mode=Endianness::BIG)=0
Deserialize a size value.
Include length as first token in serialization.
SerializeStatus deserializeTo(U8 &val, Endianness mode=Endianness::BIG) override
Deserialize an 8-bit unsigned integer value.
Little endian serialization.
ExternalSerializeBufferWithMemberCopy()
Default constructor.
SerializeStatus setBuffLen(Serializable::SizeType length) override
Set buffer length manually.
External serialize buffer with data copy semantics.
Implementation of malloc based allocator.
Endianness
Attempted to deserialize into an immutable buffer.
ExternalSerializeBufferWithDataCopy(U8 *buffPtr, Serializable::SizeType size)
Construct with external buffer.
ExternalSerializeBuffer & operator=(const LinearBufferBase &src)=delete
Deleted copy assignment operator.
virtual SerializeStatus moveDeserToOffset(FwSizeType offset)=0
Move deserialization pointer to specified offset.
virtual Serializable::SizeType getSerializeSizeLeft() const =0
Get remaining serialization buffer size.
virtual Serializable::SizeType getSize() const =0
Get current buffer size.
Serializable::SizeType getSerializeSizeLeft() const override
Get remaining serialization buffer size.
U8 * getBuffAddrSer()
Get address of end of serialization (DANGEROUS!)
virtual ~LinearBufferBase()
Destructor.
Big endian serialization.
U8 * getBuffAddr()
Get buffer address for data filling (non-const version)
#define U64(C)
Definition: sha.h:181