From aca3139600ce2b45b5203c3ca108f955c4a6bc2a Mon Sep 17 00:00:00 2001 From: Luli2020 Date: Tue, 12 Mar 2019 15:22:26 -0700 Subject: [PATCH] Added serializer/deserializer "cereal like" interface Added interface BasicSerializer &operator()(T &&head, TArgs &&... tail) and BasicDeserializer &operator()(T &&head, TArgs &&... tail), which are cereal like intefaces so such format of serialization functions were possible: template void serialize(Archive & ar, DataType& d){ ar(d.data1, d.data2....); } --- include/bitsery/deserializer.h | 9 +++++++++ include/bitsery/serializer.h | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/include/bitsery/deserializer.h b/include/bitsery/deserializer.h index 76c56d7..d93a500 100644 --- a/include/bitsery/deserializer.h +++ b/include/bitsery/deserializer.h @@ -102,6 +102,15 @@ namespace bitsery { archive(std::forward(tail)...); } + template + BasicDeserializer &operator()(T &&head, TArgs &&... tail) { + //serialize object + details::ArchiveFunction::invoke(*this, std::forward(head)); + //expand other elements + archive(std::forward(tail)...); + return *this; + } + /* * value */ diff --git a/include/bitsery/serializer.h b/include/bitsery/serializer.h index 67b2a45..e6ee9d7 100644 --- a/include/bitsery/serializer.h +++ b/include/bitsery/serializer.h @@ -100,6 +100,13 @@ namespace bitsery { archive(std::forward(tail)...); } + template + BasicSerializer &operator()(T &&head, TArgs &&... tail) { + details::ArchiveFunction::invoke(*this, std::forward(head)); + archive(std::forward(tail)...); + return *this; + } + /* * value overloads */