DeserializeKnownSubType.hpp
1 #pragma once
2 #include <score/plugins/SerializableHelpers.hpp>
3 
4 template <typename T, typename... Args>
5 auto deserialize_known_interface(DataStream::Deserializer& des, Args&&... args) -> T*
6 {
7  QByteArray b;
8  des.stream() >> b;
10 
11  // Deserialize the interface identifier
12  try
13  {
14  SCORE_DEBUG_CHECK_DELIMITER2(sub);
15 
16  score::uuid_t uid;
17  sub.writeTo(uid);
18  SCORE_DEBUG_CHECK_DELIMITER2(sub);
19 
20  auto obj = new T{sub, std::forward<Args>(args)...};
21  SCORE_DEBUG_CHECK_DELIMITER2(sub);
22  return obj;
23  }
24  catch(...)
25  {
26  }
27 
28  return nullptr;
29 }
30 
31 template <typename T, typename... Args>
32 auto deserialize_known_interface(DataStream::Deserializer&& des, Args&&... args) -> T*
33 {
34  QByteArray b;
35  des.stream() >> b;
37 
38  // Deserialize the interface identifier
39  try
40  {
41  SCORE_DEBUG_CHECK_DELIMITER2(sub);
42 
43  score::uuid_t uid;
44  sub.writeTo(uid);
45  SCORE_DEBUG_CHECK_DELIMITER2(sub);
46 
47  auto obj = new T{sub, std::forward<Args>(args)...};
48  SCORE_DEBUG_CHECK_DELIMITER2(sub);
49  return obj;
50  }
51  catch(...)
52  {
53  }
54 
55  return nullptr;
56 }
57 
58 template <typename T, typename... Args>
59 auto deserialize_known_interface(JSONObject::Deserializer& des, Args&&... args) -> T*
60 {
61  return new T{des, std::forward<Args>(args)...};
62 }
63 
64 template <typename T, typename... Args>
65 auto deserialize_known_interface(JSONObject::Deserializer&& des, Args&&... args) -> T*
66 {
67  return new T{des, std::forward<Args>(args)...};
68 }
Definition: DataStreamVisitor.hpp:202
Definition: JSONVisitor.hpp:423
Definition: UuidKey.hpp:24