Loading...
Searching...
No Matches
DeserializeKnownSubType.hpp
1#pragma once
2#include <score/plugins/SerializableHelpers.hpp>
3
4template <typename T, typename... Args>
5auto 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
31template <typename T, typename... Args>
32auto 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
58template <typename T, typename... Args>
59auto deserialize_known_interface(JSONObject::Deserializer& des, Args&&... args) -> T*
60{
61 return new T{des, std::forward<Args>(args)...};
62}
63
64template <typename T, typename... Args>
65auto 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