1 #ifndef SERIALIZABLE_HPP 2 #define SERIALIZABLE_HPP 25 class SerialBufferBase;
26 class LinearBufferBase;
80 "Use serializeTo(SerialBufferBase& buffer) instead") {
85 "Use deserializeFrom(SerialBufferBase& buffer) instead") {
89 #if FW_SERIALIZABLE_TO_STRING || FW_ENABLE_TEXT_LOGGING || BUILD_UT 102 friend std::ostream& operator<<(std::ostream& os,
const Serializable& val);
152 #if FW_HAS_16_BIT == 1 173 #if FW_HAS_32_BIT == 1 194 #if FW_HAS_64_BIT == 1 342 #if FW_HAS_16_BIT == 1 366 #if FW_HAS_32_BIT == 1 389 #if FW_HAS_64_BIT == 1 721 #if FW_HAS_16_BIT == 1 742 #if FW_HAS_32_BIT == 1 763 #if FW_HAS_64_BIT == 1 909 #if FW_HAS_16_BIT == 1 933 #if FW_HAS_32_BIT == 1 956 #if FW_HAS_64_BIT == 1 1088 "Use serializeFrom(const SerialBufferBase& val) instead");
1277 #if FW_HAS_16_BIT == 1 1281 #if FW_HAS_32_BIT == 1 1285 #if FW_HAS_64_BIT == 1 1295 "Use serialize(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1297 "Use serializeFrom(const U8* buff, FwSizeType length) instead");
1299 "Use serializeFrom(const U8* buff, FwSizeType length, Serialization::t mode) instead");
1301 "Use serializeFrom(const Serializable& val) instead");
1305 #if FW_HAS_16_BIT == 1 1309 #if FW_HAS_32_BIT == 1 1313 #if FW_HAS_64_BIT == 1 1323 "Use deserialize(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1325 "Use deserializeTo(U8* buff, FwSizeType& length) instead");
1327 "Use deserializeTo(U8* buff, FwSizeType& length, Serialization::t mode) instead");
1348 friend std::ostream& operator<<(std::ostream& os,
const LinearBufferBase& buff);
1534 (void)LinearBufferBase::operator=(src);
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
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
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.
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't match.
virtual SerializeStatus setBuffLen(Serializable::SizeType length)=0
Set buffer length manually.
~ExternalSerializeBufferWithDataCopy()
Destructor.
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
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.
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.
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.
~ExternalSerializeBufferWithMemberCopy()
Destructor.
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)