read/write
This commit is contained in:
@@ -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});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user