read/write

This commit is contained in:
2025-02-06 14:07:52 +01:00
parent 6bbc849076
commit f3e98543d7
5 changed files with 29 additions and 106 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include <sp/Message.h>
#include <sp/Templates.h>
namespace sp {
namespace option {
@@ -100,6 +101,11 @@ class MessageImplFieldsBase : public TBase {
return m_Fields;
}
template<std::size_t FIndex>
auto& GetField() {
return std::get<FIndex>(GetFields()).GetValue();
}
private:
TFields m_Fields;
};
@@ -108,9 +114,9 @@ template <typename TBase>
class MessageImplFieldsReadBase : public TBase {
protected:
void ReadImpl(DataBuffer& buffer) override {
// Access fields via interface provided in previous chunk
//TODO: add endianess
auto& allFields = TBase::GetFields();
//... // read all the fields
tupleForEach(allFields, FieldReader{buffer});
}
};
@@ -118,9 +124,9 @@ template <typename TBase>
class MessageImplFieldsWriteBase : public TBase {
protected:
void WriteImpl(DataBuffer& buffer) override {
// Access fields via interface provided in previous chunk
//TODO: add endianess
auto& allFields = TBase::GetFields();
//... // write all the fields
tupleForEach(allFields, FieldWriter{buffer});
}
};