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 {
24 
25 class SerialBufferBase;
26 class LinearBufferBase;
27 
28 // TODO: Temporary backwards-compatibility hack. Remove this when all references to SerializeBufferBase are migrated.
30 
31 struct Serialization {
32  enum t {
35  };
36 };
37 
38 enum class Endianness {
39  BIG,
40  LITTLE
41 };
42 
43 class Serializable {
44  public:
45  // Size type for backwards compatibility
47 
48  public:
58  virtual SerializeStatus serializeTo(SerialBufferBase& buffer, Endianness mode = Endianness::BIG) const = 0;
59 
70 
72  // as it currently depends on this being defined
73  Serializable& operator=(const Serializable& src) = default;
74 
75  // ----------------------------------------------------------------------
76  // Legacy methods for backward compatibility
77  // ----------------------------------------------------------------------
78 
79  DEPRECATED(SerializeStatus serialize(SerialBufferBase& buffer) const,
80  "Use serializeTo(SerialBufferBase& buffer) instead") {
81  return this->serializeTo(buffer);
82  }
83 
85  "Use deserializeFrom(SerialBufferBase& buffer) instead") {
86  return this->deserializeFrom(buffer);
87  }
88 
89 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT
90  virtual void toString(StringBase& text) const;
99 #endif
100 
101 #ifdef BUILD_UT
102  friend std::ostream& operator<<(std::ostream& os, const Serializable& val);
103 #endif
104 
105  protected:
109  Serializable();
110 
114  virtual ~Serializable();
115 };
116 
118  public:
122  virtual ~SerialBufferBase();
123 
124  // Serialization for built-in types
125 
137  virtual SerializeStatus serializeFrom(U8 val, Endianness mode = Endianness::BIG) = 0;
138 
150  virtual SerializeStatus serializeFrom(I8 val, Endianness mode = Endianness::BIG) = 0;
151 
152 #if FW_HAS_16_BIT == 1
153  virtual SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) = 0;
162 
171  virtual SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) = 0;
172 #endif
173 #if FW_HAS_32_BIT == 1
174  virtual SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) = 0;
183 
192  virtual SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) = 0;
193 #endif
194 #if FW_HAS_64_BIT == 1
204 
213  virtual SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) = 0;
214 #endif
224 
234 
243  virtual SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) = 0;
244 
254  virtual SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) = 0;
255 
265  virtual SerializeStatus serializeFrom(const U8* buff,
266  FwSizeType length,
267  Endianness endianMode = Endianness::BIG) = 0;
268 
280  virtual SerializeStatus serializeFrom(const U8* buff,
281  FwSizeType length,
282  Serialization::t lengthMode,
283  Endianness endianMode = Endianness::BIG) = 0;
284 
295 
305  virtual SerializeStatus serializeFrom(const Serializable& val, Endianness mode = Endianness::BIG) = 0;
306 
316  virtual SerializeStatus serializeSize(const FwSizeType size, Endianness mode = Endianness::BIG) = 0;
317 
318  // Deserialization for built-in types
319 
329  virtual SerializeStatus deserializeTo(U8& val, Endianness mode = Endianness::BIG) = 0;
330 
340  virtual SerializeStatus deserializeTo(I8& val, Endianness mode = Endianness::BIG) = 0;
341 
342 #if FW_HAS_16_BIT == 1
343  virtual SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) = 0;
353 
363  virtual SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) = 0;
364 #endif
365 
366 #if FW_HAS_32_BIT == 1
367  virtual SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) = 0;
377 
387  virtual SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) = 0;
388 #endif
389 #if FW_HAS_64_BIT == 1
390  virtual SerializeStatus deserializeTo(U64& val, Endianness mode = Endianness::BIG) = 0;
400 
410  virtual SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) = 0;
411 #endif
412  virtual SerializeStatus deserializeTo(F32& val, Endianness mode = Endianness::BIG) = 0;
422 
432  virtual SerializeStatus deserializeTo(F64& val, Endianness mode = Endianness::BIG) = 0;
433 
443  virtual SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) = 0;
444 
455  virtual SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) = 0;
456 
467  virtual SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) = 0;
468 
482  virtual SerializeStatus deserializeTo(U8* buff,
483  FwSizeType& length,
484  Serialization::t lengthMode,
485  Endianness endianMode = Endianness::BIG) = 0;
486 
497 
508 
519 
538 
557 
563  virtual void resetSer() = 0;
564 
571  virtual void resetDeser() = 0;
572 
581  virtual SerializeStatus moveSerToOffset(FwSizeType offset) = 0;
582 
591  virtual SerializeStatus moveDeserToOffset(FwSizeType offset) = 0;
592 
601  virtual SerializeStatus serializeSkip(FwSizeType numBytesToSkip) = 0;
602 
611  virtual SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) = 0;
612 
620  virtual Serializable::SizeType getCapacity() const = 0;
621 
629  virtual Serializable::SizeType getSize() const = 0;
630 
639 
648  virtual Serializable::SizeType getSerializeSizeLeft() const = 0;
649 
659  virtual SerializeStatus setBuff(const U8* src, Serializable::SizeType length) = 0;
660 
670 };
671 
674 
675  protected:
685 
686  public:
691  virtual ~LinearBufferBase();
692 
693  // Serialization for built-in types
694 
707 
720 
721 #if FW_HAS_16_BIT == 1
722  SerializeStatus serializeFrom(U16 val, Endianness mode = Endianness::BIG) override;
731 
740  SerializeStatus serializeFrom(I16 val, Endianness mode = Endianness::BIG) override;
741 #endif
742 #if FW_HAS_32_BIT == 1
743  SerializeStatus serializeFrom(U32 val, Endianness mode = Endianness::BIG) override;
752 
761  SerializeStatus serializeFrom(I32 val, Endianness mode = Endianness::BIG) override;
762 #endif
763 #if FW_HAS_64_BIT == 1
773 
782  SerializeStatus serializeFrom(I64 val, Endianness mode = Endianness::BIG) override;
783 #endif
793 
803 
812  SerializeStatus serializeFrom(bool val, Endianness mode = Endianness::BIG) override;
813 
823  SerializeStatus serializeFrom(const void* val, Endianness mode = Endianness::BIG) override;
824 
834  SerializeStatus serializeFrom(const U8* buff, FwSizeType length, Endianness endianMode = Endianness::BIG) override;
835 
847  SerializeStatus serializeFrom(const U8* buff,
848  FwSizeType length,
849  Serialization::t lengthMode,
850  Endianness endianMode = Endianness::BIG) override;
851 
862 
873 
884 
885  // Deserialization for built-in types
886 
897 
908 
909 #if FW_HAS_16_BIT == 1
910  SerializeStatus deserializeTo(U16& val, Endianness mode = Endianness::BIG) override;
920 
930  SerializeStatus deserializeTo(I16& val, Endianness mode = Endianness::BIG) override;
931 #endif
932 
933 #if FW_HAS_32_BIT == 1
934  SerializeStatus deserializeTo(U32& val, Endianness mode = Endianness::BIG) override;
944 
954  SerializeStatus deserializeTo(I32& val, Endianness mode = Endianness::BIG) override;
955 #endif
956 #if FW_HAS_64_BIT == 1
967 
977  SerializeStatus deserializeTo(I64& val, Endianness mode = Endianness::BIG) override;
978 #endif
989 
1000 
1010  SerializeStatus deserializeTo(bool& val, Endianness mode = Endianness::BIG) override;
1011 
1022  SerializeStatus deserializeTo(void*& val, Endianness mode = Endianness::BIG) override;
1023 
1034  SerializeStatus deserializeTo(U8* buff, FwSizeType& length, Endianness endianMode = Endianness::BIG) override;
1035 
1050  FwSizeType& length,
1051  Serialization::t lengthMode,
1052  Endianness endianMode = Endianness::BIG) override;
1053 
1064 
1075 
1086 
1087  DEPRECATED(SerializeStatus serialize(const LinearBufferBase& val),
1088  "Use serializeFrom(const SerialBufferBase& val) instead");
1089  DEPRECATED(SerializeStatus deserialize(LinearBufferBase& val), "Use deserializeTo(SerialBufferBase& val) instead");
1090 
1098  void resetSer() override;
1099 
1108  void resetDeser() override;
1109 
1118  SerializeStatus moveSerToOffset(FwSizeType offset) override;
1119 
1128  SerializeStatus moveDeserToOffset(FwSizeType offset) override;
1129 
1138  SerializeStatus serializeSkip(FwSizeType numBytesToSkip) override;
1139 
1148  SerializeStatus deserializeSkip(FwSizeType numBytesToSkip) override;
1149 
1150  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1151  DEPRECATED(Serializable::SizeType getBuffLength() const, "Use getSize() instead");
1152  DEPRECATED(Serializable::SizeType getBuffLeft(), "Use getDeserializeSizeLeft() instead");
1153 
1161  Serializable::SizeType getCapacity() const override = 0;
1162 
1170  Serializable::SizeType getSize() const override;
1171 
1180 
1190 
1198  virtual U8* getBuffAddr() = 0;
1199 
1207  virtual const U8* getBuffAddr() const = 0;
1208 
1216  const U8* getBuffAddrLeft() const;
1217 
1225  U8* getBuffAddrSer();
1226 
1236  SerializeStatus setBuff(const U8* src, Serializable::SizeType length) override;
1237 
1247 
1258 
1270 
1271  // ----------------------------------------------------------------------
1272  // Deprecated Serialization methods
1273  // ----------------------------------------------------------------------
1274 
1275  DEPRECATED(SerializeStatus serialize(U8 val), "Use serializeFrom(U8 val) instead");
1276  DEPRECATED(SerializeStatus serialize(I8 val), "Use serializeFrom(I8 val) instead");
1277 #if FW_HAS_16_BIT == 1
1278  DEPRECATED(SerializeStatus serialize(U16 val), "Use serializeFrom(U16 val) instead");
1279  DEPRECATED(SerializeStatus serialize(I16 val), "Use serializeFrom(I16 val) instead");
1280 #endif
1281 #if FW_HAS_32_BIT == 1
1282  DEPRECATED(SerializeStatus serialize(U32 val), "Use serializeFrom(U32 val) instead");
1283  DEPRECATED(SerializeStatus serialize(I32 val), "Use serializeFrom(I32 val) instead");
1284 #endif
1285 #if FW_HAS_64_BIT == 1
1286  DEPRECATED(SerializeStatus serialize(U64 val), "Use serializeFrom(U64 val) instead");
1287  DEPRECATED(SerializeStatus serialize(I64 val), "Use serializeFrom(I64 val) instead");
1288 #endif
1289 
1290  DEPRECATED(SerializeStatus serialize(F32 val), "Use serializeFrom(F32 val) instead");
1291  DEPRECATED(SerializeStatus serialize(F64 val), "Use serializeFrom(F64 val) instead");
1292  DEPRECATED(SerializeStatus serialize(bool val), "Use serializeFrom(bool val) instead");
1293  DEPRECATED(SerializeStatus serialize(const void* val), "Use serializeFrom(const void* val) instead");
1294  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, bool noLength),
1295  "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1296  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length),
1297  "Use serializeFrom(const U8* buff, FwSizeType length) instead");
1298  DEPRECATED(SerializeStatus serialize(const U8* buff, FwSizeType length, Serialization::t mode),
1299  "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1300  DEPRECATED(SerializeStatus serialize(const Serializable& val),
1301  "Use serializeFrom(const Serializable& val) instead");
1302 
1303  DEPRECATED(SerializeStatus deserialize(U8& val), "Use deserializeTo(U8& val) instead");
1304  DEPRECATED(SerializeStatus deserialize(I8& val), "Use deserializeTo(I8& val) instead");
1305 #if FW_HAS_16_BIT == 1
1306  DEPRECATED(SerializeStatus deserialize(U16& val), "Use deserializeTo(U16& val) instead");
1307  DEPRECATED(SerializeStatus deserialize(I16& val), "Use deserializeTo(I16& val) instead");
1308 #endif
1309 #if FW_HAS_32_BIT == 1
1310  DEPRECATED(SerializeStatus deserialize(U32& val), "Use deserializeTo(U32& val) instead");
1311  DEPRECATED(SerializeStatus deserialize(I32& val), "Use deserializeTo(I32& val) instead");
1312 #endif
1313 #if FW_HAS_64_BIT == 1
1314  DEPRECATED(SerializeStatus deserialize(U64& val), "Use deserializeTo(U64& val) instead");
1315  DEPRECATED(SerializeStatus deserialize(I64& val), "Use deserializeTo(I64& val) instead");
1316 #endif
1317 
1318  DEPRECATED(SerializeStatus deserialize(F32& val), "Use deserializeTo(F32& val) instead");
1319  DEPRECATED(SerializeStatus deserialize(F64& val), "Use deserializeTo(F64& val) instead");
1320  DEPRECATED(SerializeStatus deserialize(bool& val), "Use deserializeTo(bool& val) instead");
1321  DEPRECATED(SerializeStatus deserialize(void*& val), "Use deserializeTo(void*& val) instead");
1322  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, bool noLength),
1323  "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1324  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length),
1325  "Use deserializeTo(U8* buff, FwSizeType& length) instead");
1326  DEPRECATED(SerializeStatus deserialize(U8* buff, FwSizeType& length, Serialization::t mode),
1327  "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1328  DEPRECATED(SerializeStatus deserialize(Serializable& val), "Use deserializeTo(Serializable& val) instead");
1329 
1330 #ifdef BUILD_UT
1331  bool operator==(const LinearBufferBase& other) const;
1339 
1348  friend std::ostream& operator<<(std::ostream& os, const LinearBufferBase& buff);
1349 #endif
1350 
1351  protected:
1356  LinearBufferBase();
1357 
1365  LinearBufferBase(const LinearBufferBase& src);
1366 
1374  void copyFrom(const LinearBufferBase& src);
1375 
1378 
1379  private:
1380 };
1381 
1382 // Helper classes for building buffers with external storage
1383 
1395  public:
1405 
1411 
1417 
1426  void setExtBuffer(U8* buffPtr, Serializable::SizeType size);
1427 
1433  void clear();
1434 
1440  ExternalSerializeBuffer(const ExternalSerializeBuffer& src) = delete;
1441 
1442  DEPRECATED(Serializable::SizeType getBuffCapacity() const, "Use getCapacity() instead");
1443 
1452 
1460  U8* getBuffAddr();
1461 
1469  const U8* getBuffAddr() const;
1470 
1476  ExternalSerializeBuffer& operator=(const LinearBufferBase& src) = delete;
1477 
1478  protected:
1479  // data members
1482 };
1483 
1496  public:
1505  : ExternalSerializeBuffer(buffPtr, size) {}
1506 
1512 
1517 
1524 
1534  (void)LinearBufferBase::operator=(src);
1535  return *this;
1536  }
1537 };
1538 
1553  public:
1562  : ExternalSerializeBuffer(buffPtr, size) {}
1563 
1569 
1574 
1584  this->m_serLoc = src.m_serLoc;
1585  this->m_deserLoc = src.m_deserLoc;
1586  }
1587 
1597  // Ward against self-assignment
1598  if (this != &src) {
1599  this->setExtBuffer(src.m_buff, 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
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.
Serializable & operator=(const Serializable &src)=default
TODO: this operator should be deleted, this must be done after RawTime is modified though...
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