fsfw/serialize/SerialFixedArrayListAdapter.h
Robin Mueller d99ed47150 fixed map bugfix (fist instead of first), new access functions for fixed maP
(first(), second()), some documentation, raw pool access read() call public
because call is necessary before using public serialize function.
maybe integrate read() call into serialize function?
2019-12-08 19:04:53 +01:00

45 lines
1.7 KiB
C++

#ifndef SERIALFIXEDARRAYLISTADAPTER_H_
#define SERIALFIXEDARRAYLISTADAPTER_H_
#include <framework/container/FixedArrayList.h>
#include <framework/serialize/SerialArrayListAdapter.h>
/**
* This adapter provides an interface for SerializeIF to serialize and deserialize
* buffers with a header containing the buffer length.
*
* Can be used by SerialLinkedListAdapter.
*
* Buffers with a size header inside that class can be declared with
* SerialFixedArrayListAdapter<uint8_t,MAX_BUFFER_LENGTH,typeOfMaxData>.
* typeOfMaxData specifies the data type of the buffer header containing the buffer size that follows
* and MAX_BUFFER_LENGTH specifies the maximum allowed value for the buffer size.
* The sequence of objects is defined in the constructor by using the setStart and setNext functions.
*
* \ingroup serialize
*/
template<typename T, uint32_t MAX_SIZE, typename count_t = uint8_t>
class SerialFixedArrayListAdapter : public FixedArrayList<T, MAX_SIZE, count_t>, public SerializeIF {
public:
template<typename... Args>
SerialFixedArrayListAdapter(Args... args) : FixedArrayList<T, MAX_SIZE, count_t>(std::forward<Args>(args)...) {
}
ReturnValue_t serialize(uint8_t** buffer, uint32_t* size,
const uint32_t max_size, bool bigEndian) const {
return SerialArrayListAdapter<T, count_t>::serialize(this, buffer, size, max_size, bigEndian);
}
uint32_t getSerializedSize() const {
return SerialArrayListAdapter<T, count_t>::getSerializedSize(this);
}
ReturnValue_t deSerialize(const uint8_t** buffer, int32_t* size,
bool bigEndian) {
return SerialArrayListAdapter<T, count_t>::deSerialize(this, buffer, size, bigEndian);
}
};
#endif /* SERIALFIXEDARRAYLISTADAPTER_H_ */