diff options
author | Krzysztof Jackiewicz <k.jackiewicz@samsung.com> | 2014-10-10 10:19:14 +0200 |
---|---|---|
committer | Bartlomiej Grzelewski <b.grzelewski@samsung.com> | 2014-10-16 17:10:54 +0200 |
commit | f3ed32b0e490fc0e55fd6eb6d1d2aea6f2c87f9d (patch) | |
tree | 6306f836440cd9d98bb3f3c837cfcad0dbf6d24f /src/manager/dpl | |
parent | 4115a735bf63b2afcf7051d4261b0436b4c85621 (diff) | |
download | key-manager-f3ed32b0e490fc0e55fd6eb6d1d2aea6f2c87f9d.tar.gz key-manager-f3ed32b0e490fc0e55fd6eb6d1d2aea6f2c87f9d.tar.bz2 key-manager-f3ed32b0e490fc0e55fd6eb6d1d2aea6f2c87f9d.zip |
Add generic serialization/deserialization methods
Change-Id: I981531932bb5cf40b5f1345da94fc25a538bb2c2
Diffstat (limited to 'src/manager/dpl')
-rw-r--r-- | src/manager/dpl/core/include/dpl/serialization.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/manager/dpl/core/include/dpl/serialization.h b/src/manager/dpl/core/include/dpl/serialization.h index 4cda53e6..ed77a28e 100644 --- a/src/manager/dpl/core/include/dpl/serialization.h +++ b/src/manager/dpl/core/include/dpl/serialization.h @@ -242,7 +242,6 @@ struct Serialization { { Serialize(stream, *vec); } - }; // struct Serialization struct Deserialization { @@ -462,6 +461,47 @@ struct Deserialization { } }; // struct Deserialization + +// generic serialization +template <typename... Args> +struct Serializer; + +template <typename First, typename... Args> +struct Serializer<First, Args...> : public Serializer<Args...> { + static void Serialize(IStream& stream, const First& f, const Args&... args) { + Serialization::Serialize(stream, f); + Serializer<Args...>::Serialize(stream, args...); + } +}; + +// end of recursion +template <> +struct Serializer<> { + static void Serialize(IStream&) { + return; + } +}; + +// generic deserialization +template <typename... Args> +struct Deserializer; + +template <typename First, typename... Args> +struct Deserializer<First, Args...> : public Deserializer<Args...> { + static void Deserialize(IStream& stream, First& f, Args&... args) { + Deserialization::Deserialize(stream, f); + Deserializer<Args...>::Deserialize(stream, args...); + } +}; + +// end of recursion +template <> +struct Deserializer<> { + static void Deserialize(IStream&) { + return; + } +}; + } // namespace CKM #endif // CENT_KEY_SERIALIZATION_H |