summaryrefslogtreecommitdiff
path: root/src/manager/dpl/core/include/dpl/serialization.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/manager/dpl/core/include/dpl/serialization.h')
-rw-r--r--src/manager/dpl/core/include/dpl/serialization.h32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/manager/dpl/core/include/dpl/serialization.h b/src/manager/dpl/core/include/dpl/serialization.h
index 4448923e..0559c422 100644
--- a/src/manager/dpl/core/include/dpl/serialization.h
+++ b/src/manager/dpl/core/include/dpl/serialization.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 - 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ * Copyright (c) 2011 - 2019 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@
#include <list>
#include <map>
#include <memory>
+#include <tuple>
namespace CKM {
// Abstract data stream buffer
@@ -216,6 +217,20 @@ struct Serialization {
Serialize(stream, *p);
}
+ // std::tuple non generic!
+ template <typename A, typename B, typename C>
+ static void Serialize(IStream &stream, const std::tuple<A, B, C> &p)
+ {
+ Serialize(stream, std::get<0>(p));
+ Serialize(stream, std::get<1>(p));
+ Serialize(stream, std::get<2>(p));
+ }
+ template <typename A, typename B, typename C>
+ static void Serialize(IStream &stream, const std::tuple<A, B, C> *const p)
+ {
+ Serialize(stream, *p);
+ }
+
// std::map
template <typename K, typename T>
static void Serialize(IStream &stream, const std::map<K, T> &map)
@@ -430,6 +445,21 @@ struct Deserialization {
DeserializePtr(stream, p);
}
+ // std::tuple non generic!
+ template <typename A, typename B, typename C>
+ static void Deserialize(IStream &stream, std::tuple<A, B, C> &p)
+ {
+ Deserialize(stream, std::get<0>(p));
+ Deserialize(stream, std::get<1>(p));
+ Deserialize(stream, std::get<2>(p));
+ }
+ template <typename A, typename B, typename C>
+ static void Deserialize(IStream &stream, std::tuple<A, B, C> *&p)
+ {
+ p = new std::tuple<A, B, C>;
+ Deserialize(stream, *p);
+ }
+
// std::map
template <typename K, typename T>
static void Deserialize(IStream &stream, std::map<K, T> &map)