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 {
25 
26 class SerialBufferBase;
27 class LinearBufferBase;
28 
29 // TODO: Temporary backwards-compatibility hack. Remove this when all references to SerializeBufferBase are migrated.
31 
32 struct Serialization {
33  enum t {
36  };
37 };
38 
39 enum class Endianness {
40  BIG,
41  LITTLE
42 };
43 
44 class Serializable {
45  public:
46  // Size type for backwards compatibility
48 
49  public:
59  virtual SerializeStatus serializeTo(SerialBufferBase& buffer, Endianness mode = Endianness::BIG) const = 0;
60 
71 
72  // ----------------------------------------------------------------------
73  // Legacy methods for backward compatibility
74  // ----------------------------------------------------------------------
75 
76  DEPRECATED(SerializeStatus serialize(SerialBufferBase& buffer) const,
77  "Use serializeTo(SerialBufferBase& buffer) instead") {
78  return this->serializeTo(buffer);
79  }
80 
82  "Use deserializeFrom(SerialBufferBase& buffer) instead") {
83  return this->deserializeFrom(buffer);
84  }
85 
86 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT
87  virtual void toString(StringBase& text) const;
96 #endif
97 
98 #ifdef BUILD_UT
99  friend std::ostream& operator<<(std::ostream& os, const Serializable& val);
100 #endif
101 
102  protected:
106  Serializable();
107 
111  virtual ~Serializable();
112 };
113 
115  public:
119  virtual ~SerialBufferBase();
120 
121  // Serialization for built-in types
122 
134  virtual SerializeStatus serializeFrom(U8 val, Endianness mode = Endianness::BIG) = 0;
135 
147  virtual SerializeStatus serializeFrom(I8 val, Endianness mode = Endianness::BIG) = 0;
148 
149 #if FW_HAS_16_BIT == 1
150  virtual SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) = 0;
159 
168  virtual SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) = 0;
169 #endif
170 #if FW_HAS_32_BIT == 1
171  virtual SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) = 0;
180 
189  virtual SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) = 0;
190 #endif
191 #if FW_HAS_64_BIT == 1
201 
210  virtual SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) = 0;
211 #endif
221 
231 
240  virtual SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) = 0;
241 
251  virtual SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) = 0;
252 
262  virtual SerializeStatus serializeFrom(const U8* buff,
263  FwSizeType length,
264  Endianness endianMode = Endianness::BIG) = 0;
265 
277  virtual SerializeStatus serializeFrom(const U8* buff,
278  FwSizeType length,
279  Serialization::t lengthMode,
280  Endianness endianMode = Endianness::BIG) = 0;
281 
292 
302  virtual SerializeStatus serializeFrom(const Serializable& val, Endianness mode = Endianness::BIG) = 0;
303 
313  virtual SerializeStatus serializeSize(const FwSizeType size, Endianness mode = Endianness::BIG) = 0;
314 
315  // Deserialization for built-in types
316 
326  virtual SerializeStatus deserializeTo(U8& val, Endianness mode = Endianness::BIG) = 0;
327 
337  virtual SerializeStatus deserializeTo(I8& val, Endianness mode = Endianness::BIG) = 0;
338 
339 #if FW_HAS_16_BIT == 1
340  virtual SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) = 0;
350 
360  virtual SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) = 0;
361 #endif
362 
363 #if FW_HAS_32_BIT == 1
364  virtual SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) = 0;
374 
384  virtual SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) = 0;
385 #endif
386 #if FW_HAS_64_BIT == 1
387  virtual SerializeStatus deserializeTo(U64& val, Endianness mode = Endianness::BIG) = 0;
397 
407  virtual SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) = 0;
408 #endif
409  virtual SerializeStatus deserializeTo(F32& val, Endianness mode = Endianness::BIG) = 0;
419 
429  virtual SerializeStatus deserializeTo(F64& val, Endianness mode = Endianness::BIG) = 0;
430 
440  virtual SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) = 0;
441 
452  virtual SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) = 0;
453 
464  virtual SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) = 0;
465 
479  virtual SerializeStatus deserializeTo(U8* buff,
480  FwSizeType& length,
481  Serialization::t lengthMode,
482  Endianness endianMode = Endianness::BIG) = 0;
483 
494 
505 
516 
535 
554 
560  virtual void resetSer() = 0;
561 
568  virtual void resetDeser() = 0;
569 
578  virtual SerializeStatus moveSerToOffset(FwSizeType offset) = 0;
579 
588  virtual SerializeStatus moveDeserToOffset(FwSizeType offset) = 0;
589 
598  virtual SerializeStatus serializeSkip(FwSizeType numBytesToSkip) = 0;
599 
608  virtual SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) = 0;
609 
617  virtual Serializable::SizeType getCapacity() const = 0;
618 
626  virtual Serializable::SizeType getSize() const = 0;
627 
636 
645  virtual Serializable::SizeType getSerializeSizeLeft() const = 0;
646 
656  virtual SerializeStatus setBuff(const U8* src, Serializable::SizeType length) = 0;
657 
667 };
668 
671 
672  protected:
682 
683  public:
688  virtual ~LinearBufferBase();
689 
690  // Serialization for built-in types
691 
704 
717 
718 #if FW_HAS_16_BIT == 1
719  SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) override;
728 
737  SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) override;
738 #endif
739 #if FW_HAS_32_BIT == 1
740  SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) override;
749 
758  SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) override;
759 #endif
760 #if FW_HAS_64_BIT == 1
770 
779  SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) override;
780 #endif
790 
800 
809  SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) override;
810 
820  SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) override;
821 
831  SerializeStatus serializeFrom(const U8* buff, FwSizeType length, Endianness endianMode = Endianness::BIG) override;
832 
844  SerializeStatus serializeFrom(const U8* buff,
845  FwSizeType length,
846  Serialization::t lengthMode,
847  Endianness endianMode = Endianness::BIG) override;
848 
859 
870 
881 
882  // Deserialization for built-in types
883 
894 
905 
906 #if FW_HAS_16_BIT == 1
907  SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) override;
917 
927  SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) override;
928 #endif
929 
930 #if FW_HAS_32_BIT == 1
931  SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) override;
941 
951  SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) override;
952 #endif
953 #if FW_HAS_64_BIT == 1
964 
974  SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) override;
975 #endif
986 
997 
1007  SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) override;
1008 
1019  SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) override;
1020 
1031  SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) override;
1032 
1047  FwSizeType& length,
1048  Serialization::t lengthMode,
1049  Endianness endianMode = Endianness::BIG) override;
1050 
1061 
1072 
1083 
1084  DEPRECATED(SerializeStatus serialize(const LinearBufferBase& val),
1085  "Use serializeFrom(const SerialBufferBase& val) instead");
1086  DEPRECATED(SerializeStatus deserialize(LinearBufferBase& val), "Use deserializeTo(SerialBufferBase& val) instead");
1087 
1095  void resetSer() override;
1096 
1105  void resetDeser() override;
1106 
1115  SerializeStatus moveSerToOffset(FwSizeType offset) override;
1116 
1125  SerializeStatus moveDeserToOffset(FwSizeType offset) override;
1126 
1135  SerializeStatus serializeSkip(FwSizeType numBytesToSkip) override;
1136 
1145  SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) override;
1146 
1147  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1148  DEPRECATED(Serializable::SizeType getBuffLength() const, "Use getSize() instead");
1149  DEPRECATED(Serializable::SizeType getBuffLeft(), "Use getDeserializeSizeLeft() instead");
1150 
1158  Serializable::SizeType getCapacity() const override = 0;
1159 
1167  Serializable::SizeType getSize() const override;
1168 
1177 
1187 
1195  virtual U8* getBuffAddr() = 0;
1196 
1204  virtual const U8* getBuffAddr() const = 0;
1205 
1213  const U8* getBuffAddrLeft() const;
1214 
1222  U8* getBuffAddrSer();
1223 
1233  SerializeStatus setBuff(const U8* src, Serializable::SizeType length) override;
1234 
1244 
1255 
1267 
1268  // ----------------------------------------------------------------------
1269  // Deprecated Serialization methods
1270  // ----------------------------------------------------------------------
1271 
1272  DEPRECATED(SerializeStatus serialize(U8 val), "Use serializeFrom(U8 val) instead");
1273  DEPRECATED(SerializeStatus serialize(I8 val), "Use serializeFrom(I8 val) instead");
1274 #if FW_HAS_16_BIT == 1
1275  DEPRECATED(SerializeStatus serialize(U16 val), "Use serializeFrom(U16 val) instead");
1276  DEPRECATED(SerializeStatus serialize(I16 val), "Use serializeFrom(I16 val) instead");
1277 #endif
1278 #if FW_HAS_32_BIT == 1
1279  DEPRECATED(SerializeStatus serialize(U32 val), "Use serializeFrom(U32 val) instead");
1280  DEPRECATED(SerializeStatus serialize(I32 val), "Use serializeFrom(I32 val) instead");
1281 #endif
1282 #if FW_HAS_64_BIT == 1
1283  DEPRECATED(SerializeStatus serialize(U64 val), "Use serializeFrom(U64 val) instead");
1284  DEPRECATED(SerializeStatus serialize(I64 val), "Use serializeFrom(I64 val) instead");
1285 #endif
1286 
1287  DEPRECATED(SerializeStatus serialize(F32 val), "Use serializeFrom(F32 val) instead");
1288  DEPRECATED(SerializeStatus serialize(F64 val), "Use serializeFrom(F64 val) instead");
1289  DEPRECATED(SerializeStatus serialize(bool val), "Use serializeFrom(bool val) instead");
1290  DEPRECATED(SerializeStatus serialize(const void* val), "Use serializeFrom(const void* val) instead");
1291  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, bool noLength),
1292  "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1293  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length),
1294  "Use serializeFrom(const U8* buff, FwSizeType length) instead");
1295  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, Serialization::t mode),
1296  "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1297  DEPRECATED(SerializeStatus serialize(const Serializable& val),
1298  "Use serializeFrom(const Serializable& val) instead");
1299 
1300  DEPRECATED(SerializeStatus deserialize(U8& val), "Use deserializeTo(U8& val) instead");
1301  DEPRECATED(SerializeStatus deserialize(I8& val), "Use deserializeTo(I8& val) instead");
1302 #if FW_HAS_16_BIT == 1
1303  DEPRECATED(SerializeStatus deserialize(U16& val), "Use deserializeTo(U16& val) instead");
1304  DEPRECATED(SerializeStatus deserialize(I16& val), "Use deserializeTo(I16& val) instead");
1305 #endif
1306 #if FW_HAS_32_BIT == 1
1307  DEPRECATED(SerializeStatus deserialize(U32& val), "Use deserializeTo(U32& val) instead");
1308  DEPRECATED(SerializeStatus deserialize(I32& val), "Use deserializeTo(I32& val) instead");
1309 #endif
1310 #if FW_HAS_64_BIT == 1
1311  DEPRECATED(SerializeStatus deserialize(U64& val), "Use deserializeTo(U64& val) instead");
1312  DEPRECATED(SerializeStatus deserialize(I64& val), "Use deserializeTo(I64& val) instead");
1313 #endif
1314 
1315  DEPRECATED(SerializeStatus deserialize(F32& val), "Use deserializeTo(F32& val) instead");
1316  DEPRECATED(SerializeStatus deserialize(F64& val), "Use deserializeTo(F64& val) instead");
1317  DEPRECATED(SerializeStatus deserialize(bool& val), "Use deserializeTo(bool& val) instead");
1318  DEPRECATED(SerializeStatus deserialize(void*& val), "Use deserializeTo(void*& val) instead");
1319  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, bool noLength),
1320  "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1321  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length),
1322  "Use deserializeTo(U8* buff, FwSizeType& length) instead");
1323  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, Serialization::t mode),
1324  "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1325  DEPRECATED(SerializeStatus deserialize(Serializable& val), "Use deserializeTo(Serializable& val) instead");
1326 
1327 #ifdef BUILD_UT
1328  bool operator==(const LinearBufferBase& other) const;
1336 
1345  friend std::ostream& operator<<(std::ostream& os, const LinearBufferBase& buff);
1346 #endif
1347 
1348  protected:
1353  LinearBufferBase();
1354 
1362  LinearBufferBase(const LinearBufferBase& src);
1363 
1371  void copyFrom(const LinearBufferBase& src);
1372 
1375 
1376  private:
1377 };
1378 
1379 // Helper classes for building buffers with external storage
1380 
1392  public:
1402 
1408 
1414 
1423  void setExtBuffer(U8* buffPtr, Serializable::SizeType size);
1424 
1430  void clear();
1431 
1437  ExternalSerializeBuffer(const ExternalSerializeBuffer& src) = delete;
1438 
1439  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1440 
1449 
1457  U8* getBuffAddr();
1458 
1466  const U8* getBuffAddr() const;
1467 
1473  ExternalSerializeBuffer& operator=(const LinearBufferBase& src) = delete;
1474 
1475  protected:
1476  // data members
1479 };
1480 
1493  public:
1502  : ExternalSerializeBuffer(buffPtr, size) {}
1503 
1509 
1514 
1521 
1531  (void)LinearBufferBase::operator=(src);
1532  return *this;
1533  }
1534 };
1535 
1550  public:
1559  : ExternalSerializeBuffer(buffPtr, size) {}
1560 
1566 
1571 
1581  this->m_serLoc = src.m_serLoc;
1582  this->m_deserLoc = src.m_deserLoc;
1583  }
1584 
1594  // Ward against self-assignment
1595  if (this != &src) {
1596  this->clear();
1597  this->m_buff = src.m_buff;
1598  this->m_buffSize = src.m_buffSize;
1599  this->m_serLoc = src.m_serLoc;
1600  this->m_deserLoc = src.m_deserLoc;
1601  }
1602  return *this;
1603  }
1604 };
1605 
1606 } // namespace Fw
1607 #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.
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