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 // TODO: Temporary backwards-compatibility hack. Remove this when all references to SerializeBufferBase are migrated.
32 
33 struct Serialization {
34  enum t {
37  };
38 };
39 
40 enum class Endianness {
41  BIG,
42  LITTLE
43 };
44 
45 class Serializable {
46  public:
47  // Size type for backwards compatibility
49 
50  public:
60  virtual SerializeStatus serializeTo(SerialBufferBase& buffer, Endianness mode = Endianness::BIG) const = 0;
61 
72 
73  // ----------------------------------------------------------------------
74  // Legacy methods for backward compatibility
75  // ----------------------------------------------------------------------
76 
77  DEPRECATED(SerializeStatus serialize(SerialBufferBase& buffer) const,
78  "Use serializeTo(SerialBufferBase& buffer) instead") {
79  return this->serializeTo(buffer);
80  }
81 
83  "Use deserializeFrom(SerialBufferBase& buffer) instead") {
84  return this->deserializeFrom(buffer);
85  }
86 
87 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT
88  virtual void toString(StringBase& text) const;
97 #endif
98 
99 #ifdef BUILD_UT
100  friend std::ostream& operator<<(std::ostream& os, const Serializable& val);
101 #endif
102 
103  protected:
107  Serializable();
108 
112  virtual ~Serializable();
113 };
114 
116  public:
120  virtual ~SerialBufferBase();
121 
122  // Serialization for built-in types
123 
135  virtual SerializeStatus serializeFrom(U8 val, Endianness mode = Endianness::BIG) = 0;
136 
148  virtual SerializeStatus serializeFrom(I8 val, Endianness mode = Endianness::BIG) = 0;
149 
150 #if FW_HAS_16_BIT == 1
151  virtual SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) = 0;
160 
169  virtual SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) = 0;
170 #endif
171 #if FW_HAS_32_BIT == 1
172  virtual SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) = 0;
181 
190  virtual SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) = 0;
191 #endif
192 #if FW_HAS_64_BIT == 1
202 
211  virtual SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) = 0;
212 #endif
222 
232 
241  virtual SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) = 0;
242 
252  virtual SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) = 0;
253 
263  virtual SerializeStatus serializeFrom(const U8* buff,
264  FwSizeType length,
265  Endianness endianMode = Endianness::BIG) = 0;
266 
278  virtual SerializeStatus serializeFrom(const U8* buff,
279  FwSizeType length,
280  Serialization::t lengthMode,
281  Endianness endianMode = Endianness::BIG) = 0;
282 
293 
303  virtual SerializeStatus serializeFrom(const Serializable& val, Endianness mode = Endianness::BIG) = 0;
304 
314  virtual SerializeStatus serializeSize(const FwSizeType size, Endianness mode = Endianness::BIG) = 0;
315 
316  // Deserialization for built-in types
317 
327  virtual SerializeStatus deserializeTo(U8& val, Endianness mode = Endianness::BIG) = 0;
328 
338  virtual SerializeStatus deserializeTo(I8& val, Endianness mode = Endianness::BIG) = 0;
339 
340 #if FW_HAS_16_BIT == 1
341  virtual SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) = 0;
351 
361  virtual SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) = 0;
362 #endif
363 
364 #if FW_HAS_32_BIT == 1
365  virtual SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) = 0;
375 
385  virtual SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) = 0;
386 #endif
387 #if FW_HAS_64_BIT == 1
388  virtual SerializeStatus deserializeTo(U64& val, Endianness mode = Endianness::BIG) = 0;
398 
408  virtual SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) = 0;
409 #endif
410  virtual SerializeStatus deserializeTo(F32& val, Endianness mode = Endianness::BIG) = 0;
420 
430  virtual SerializeStatus deserializeTo(F64& val, Endianness mode = Endianness::BIG) = 0;
431 
441  virtual SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) = 0;
442 
453  virtual SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) = 0;
454 
465  virtual SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) = 0;
466 
480  virtual SerializeStatus deserializeTo(U8* buff,
481  FwSizeType& length,
482  Serialization::t lengthMode,
483  Endianness endianMode = Endianness::BIG) = 0;
484 
495 
506 
517 
536 
555 
561  virtual void resetSer() = 0;
562 
569  virtual void resetDeser() = 0;
570 
579  virtual SerializeStatus moveSerToOffset(FwSizeType offset) = 0;
580 
589  virtual SerializeStatus moveDeserToOffset(FwSizeType offset) = 0;
590 
599  virtual SerializeStatus serializeSkip(FwSizeType numBytesToSkip) = 0;
600 
609  virtual SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) = 0;
610 
618  virtual Serializable::SizeType getCapacity() const = 0;
619 
627  virtual Serializable::SizeType getSize() const = 0;
628 
637 
646  virtual Serializable::SizeType getSerializeSizeLeft() const = 0;
647 
657  virtual SerializeStatus setBuff(const U8* src, Serializable::SizeType length) = 0;
658 
668 };
669 
672 
673  protected:
683 
684  public:
689  virtual ~LinearBufferBase();
690 
691  // Serialization for built-in types
692 
705 
718 
719 #if FW_HAS_16_BIT == 1
720  SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) override;
729 
738  SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) override;
739 #endif
740 #if FW_HAS_32_BIT == 1
741  SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) override;
750 
759  SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) override;
760 #endif
761 #if FW_HAS_64_BIT == 1
771 
780  SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) override;
781 #endif
791 
801 
810  SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) override;
811 
821  SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) override;
822 
832  SerializeStatus serializeFrom(const U8* buff, FwSizeType length, Endianness endianMode = Endianness::BIG) override;
833 
845  SerializeStatus serializeFrom(const U8* buff,
846  FwSizeType length,
847  Serialization::t lengthMode,
848  Endianness endianMode = Endianness::BIG) override;
849 
860 
871 
882 
883  // Deserialization for built-in types
884 
895 
906 
907 #if FW_HAS_16_BIT == 1
908  SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) override;
918 
928  SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) override;
929 #endif
930 
931 #if FW_HAS_32_BIT == 1
932  SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) override;
942 
952  SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) override;
953 #endif
954 #if FW_HAS_64_BIT == 1
965 
975  SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) override;
976 #endif
987 
998 
1008  SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) override;
1009 
1020  SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) override;
1021 
1032  SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) override;
1033 
1048  FwSizeType& length,
1049  Serialization::t lengthMode,
1050  Endianness endianMode = Endianness::BIG) override;
1051 
1062 
1073 
1084 
1085  DEPRECATED(SerializeStatus serialize(const LinearBufferBase& val),
1086  "Use serializeFrom(const SerialBufferBase& val) instead");
1087  DEPRECATED(SerializeStatus deserialize(LinearBufferBase& val), "Use deserializeTo(SerialBufferBase& val) instead");
1088 
1096  void resetSer() override;
1097 
1106  void resetDeser() override;
1107 
1116  SerializeStatus moveSerToOffset(FwSizeType offset) override;
1117 
1126  SerializeStatus moveDeserToOffset(FwSizeType offset) override;
1127 
1136  SerializeStatus serializeSkip(FwSizeType numBytesToSkip) override;
1137 
1146  SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) override;
1147 
1148  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1149  DEPRECATED(Serializable::SizeType getBuffLength() const, "Use getSize() instead");
1150  DEPRECATED(Serializable::SizeType getBuffLeft(), "Use getDeserializeSizeLeft() instead");
1151 
1159  Serializable::SizeType getCapacity() const override = 0;
1160 
1168  Serializable::SizeType getSize() const override;
1169 
1178 
1188 
1196  virtual U8* getBuffAddr() = 0;
1197 
1205  virtual const U8* getBuffAddr() const = 0;
1206 
1214  const U8* getBuffAddrLeft() const;
1215 
1223  U8* getBuffAddrSer();
1224 
1234  SerializeStatus setBuff(const U8* src, Serializable::SizeType length) override;
1235 
1245 
1256 
1268 
1269  // ----------------------------------------------------------------------
1270  // Deprecated Serialization methods
1271  // ----------------------------------------------------------------------
1272 
1273  DEPRECATED(SerializeStatus serialize(U8 val), "Use serializeFrom(U8 val) instead");
1274  DEPRECATED(SerializeStatus serialize(I8 val), "Use serializeFrom(I8 val) instead");
1275 #if FW_HAS_16_BIT == 1
1276  DEPRECATED(SerializeStatus serialize(U16 val), "Use serializeFrom(U16 val) instead");
1277  DEPRECATED(SerializeStatus serialize(I16 val), "Use serializeFrom(I16 val) instead");
1278 #endif
1279 #if FW_HAS_32_BIT == 1
1280  DEPRECATED(SerializeStatus serialize(U32 val), "Use serializeFrom(U32 val) instead");
1281  DEPRECATED(SerializeStatus serialize(I32 val), "Use serializeFrom(I32 val) instead");
1282 #endif
1283 #if FW_HAS_64_BIT == 1
1284  DEPRECATED(SerializeStatus serialize(U64 val), "Use serializeFrom(U64 val) instead");
1285  DEPRECATED(SerializeStatus serialize(I64 val), "Use serializeFrom(I64 val) instead");
1286 #endif
1287 
1288  DEPRECATED(SerializeStatus serialize(F32 val), "Use serializeFrom(F32 val) instead");
1289  DEPRECATED(SerializeStatus serialize(F64 val), "Use serializeFrom(F64 val) instead");
1290  DEPRECATED(SerializeStatus serialize(bool val), "Use serializeFrom(bool val) instead");
1291  DEPRECATED(SerializeStatus serialize(const void* val), "Use serializeFrom(const void* val) instead");
1292  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, bool noLength),
1293  "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1294  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length),
1295  "Use serializeFrom(const U8* buff, FwSizeType length) instead");
1296  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, Serialization::t mode),
1297  "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1298  DEPRECATED(SerializeStatus serialize(const Serializable& val),
1299  "Use serializeFrom(const Serializable& val) instead");
1300 
1301  DEPRECATED(SerializeStatus deserialize(U8& val), "Use deserializeTo(U8& val) instead");
1302  DEPRECATED(SerializeStatus deserialize(I8& val), "Use deserializeTo(I8& val) instead");
1303 #if FW_HAS_16_BIT == 1
1304  DEPRECATED(SerializeStatus deserialize(U16& val), "Use deserializeTo(U16& val) instead");
1305  DEPRECATED(SerializeStatus deserialize(I16& val), "Use deserializeTo(I16& val) instead");
1306 #endif
1307 #if FW_HAS_32_BIT == 1
1308  DEPRECATED(SerializeStatus deserialize(U32& val), "Use deserializeTo(U32& val) instead");
1309  DEPRECATED(SerializeStatus deserialize(I32& val), "Use deserializeTo(I32& val) instead");
1310 #endif
1311 #if FW_HAS_64_BIT == 1
1312  DEPRECATED(SerializeStatus deserialize(U64& val), "Use deserializeTo(U64& val) instead");
1313  DEPRECATED(SerializeStatus deserialize(I64& val), "Use deserializeTo(I64& val) instead");
1314 #endif
1315 
1316  DEPRECATED(SerializeStatus deserialize(F32& val), "Use deserializeTo(F32& val) instead");
1317  DEPRECATED(SerializeStatus deserialize(F64& val), "Use deserializeTo(F64& val) instead");
1318  DEPRECATED(SerializeStatus deserialize(bool& val), "Use deserializeTo(bool& val) instead");
1319  DEPRECATED(SerializeStatus deserialize(void*& val), "Use deserializeTo(void*& val) instead");
1320  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, bool noLength),
1321  "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1322  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length),
1323  "Use deserializeTo(U8* buff, FwSizeType& length) instead");
1324  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, Serialization::t mode),
1325  "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1326  DEPRECATED(SerializeStatus deserialize(Serializable& val), "Use deserializeTo(Serializable& val) instead");
1327 
1328 #ifdef BUILD_UT
1329  bool operator==(const LinearBufferBase& other) const;
1337 
1346  friend std::ostream& operator<<(std::ostream& os, const LinearBufferBase& buff);
1347 #endif
1348 
1349  protected:
1354  LinearBufferBase();
1355 
1363  LinearBufferBase(const LinearBufferBase& src);
1364 
1372  void copyFrom(const LinearBufferBase& src);
1373 
1376 
1377  private:
1378 };
1379 
1380 // Helper classes for building buffers with external storage
1381 
1393  public:
1403 
1409 
1415 
1424  void setExtBuffer(U8* buffPtr, Serializable::SizeType size);
1425 
1431  void clear();
1432 
1438  ExternalSerializeBuffer(const ExternalSerializeBuffer& src) = delete;
1439 
1440  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1441 
1450 
1458  U8* getBuffAddr();
1459 
1467  const U8* getBuffAddr() const;
1468 
1474  ExternalSerializeBuffer& operator=(const LinearBufferBase& src) = delete;
1475 
1476  protected:
1477  // data members
1480 };
1481 
1494  public:
1503  : ExternalSerializeBuffer(buffPtr, size) {}
1504 
1510 
1515 
1522 
1532  (void)LinearBufferBase::operator=(src);
1533  return *this;
1534  }
1535 };
1536 
1551  public:
1560  : ExternalSerializeBuffer(buffPtr, size) {}
1561 
1567 
1572 
1582  this->m_serLoc = src.m_serLoc;
1583  this->m_deserLoc = src.m_deserLoc;
1584  }
1585 
1595  // Ward against self-assignment
1596  if (this != &src) {
1597  this->clear();
1598  this->m_buff = src.m_buff;
1599  this->m_buffSize = src.m_buffSize;
1600  this->m_serLoc = src.m_serLoc;
1601  this->m_deserLoc = src.m_deserLoc;
1602  }
1603  return *this;
1604  }
1605 };
1606 
1607 } // namespace Fw
1608 #endif
Serialization/Deserialization operation was successful.
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.
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.
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")
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.
friend class SerializeBufferBaseTester
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