fpmas 1.6
serializer.h
Go to the documentation of this file.
1#ifndef FPMAS_MODEL_SERIALIZER_H
2#define FPMAS_MODEL_SERIALIZER_H
3
8#include "json_serializer.h"
11
22#define FPMAS_AGENT_PTR_DATAPACK_JSON_FALLBACK()\
23 namespace fpmas { namespace io { namespace datapack {\
24 std::size_t Serializer<AgentPtr>::size(const ObjectPack& p, const AgentPtr& ptr) {\
25 return JsonSerializer<AgentPtr>::size(p, ptr);\
26 }\
27 void Serializer<AgentPtr>::to_datapack(ObjectPack& p, const AgentPtr& ptr) {\
28 JsonSerializer<AgentPtr>::to_datapack(p, ptr);\
29 }\
30 AgentPtr Serializer<AgentPtr>::from_datapack(const ObjectPack& p) {\
31 return JsonSerializer<AgentPtr>::from_datapack(p);\
32 }\
33 std::size_t LightSerializer<AgentPtr>::size(const LightObjectPack& p, const AgentPtr& ptr) {\
34 return LightJsonSerializer<AgentPtr>::size(p, ptr);\
35 }\
36 void LightSerializer<AgentPtr>::to_datapack(LightObjectPack& p, const AgentPtr& ptr) {\
37 LightJsonSerializer<AgentPtr>::to_datapack(p, ptr);\
38 }\
39 AgentPtr LightSerializer<AgentPtr>::from_datapack(const LightObjectPack& p) {\
40 return LightJsonSerializer<AgentPtr>::from_datapack(p);\
41 }\
42 }}}
43
54#define FPMAS_AGENT_PTR_JSON_DATAPACK_FALLBACK()\
55 namespace nlohmann {\
56 void adl_serializer<fpmas::api::model::AgentPtr>\
57 ::to_json(json& j, const fpmas::api::model::AgentPtr& ptr) {\
58 fpmas::io::json::datapack_serializer<fpmas::api::model::AgentPtr>\
59 ::to_json(j, ptr);\
60 }\
61 fpmas::api::model::AgentPtr adl_serializer<fpmas::api::model::AgentPtr>\
62 ::from_json(const json& j) {\
63 return fpmas::io::json::datapack_serializer<fpmas::api::model::AgentPtr>\
64 ::from_json(j);\
65 }\
66 }\
67 namespace fpmas { namespace io { namespace json {\
68 void light_serializer<api::model::AgentPtr>\
69 ::to_json(light_json& j, const api::model::AgentPtr& ptr) {\
70 fpmas::io::json::light_datapack_serializer<api::model::AgentPtr>\
71 ::to_json(j, ptr);\
72 }\
73 api::model::AgentPtr light_serializer<api::model::AgentPtr>\
74 ::from_json(const light_json& j) {\
75 return fpmas::io::json::light_datapack_serializer<api::model::AgentPtr>\
76 ::from_json(j);\
77 }\
78 }}}
79
122#define FPMAS_JSON_SET_UP(...)\
123 FPMAS_BASE_JSON_SET_UP(__VA_ARGS__)\
124 FPMAS_AGENT_PTR_DATAPACK_JSON_FALLBACK()
125
130#define FPMAS_DEFAULT_JSON_SET_UP()\
131 FPMAS_BASE_DEFAULT_JSON_SET_UP()\
132 FPMAS_BASE_DEFAULT_DATAPACK_SET_UP()
133
176#define FPMAS_DATAPACK_SET_UP(...)\
177 FPMAS_BASE_DATAPACK_SET_UP(__VA_ARGS__)\
178 FPMAS_AGENT_PTR_JSON_DATAPACK_FALLBACK()
179
184#define FPMAS_DEFAULT_DATAPACK_SET_UP()\
185 FPMAS_BASE_DEFAULT_DATAPACK_SET_UP()\
186 FPMAS_BASE_DEFAULT_JSON_SET_UP()
187
214#define FPMAS_REGISTER_AGENT_TYPES(...)\
215 fpmas::register_types<__VA_ARGS__ , void>();
216
217namespace fpmas {
218 template<typename _T, typename... T>
219 void register_types();
220
224 template<> void register_types<void>();
225
242 template<typename _T, typename... T>
246
247 register_types<T...>();
248 }
249}
250
251#endif
Definition: fpmas.cpp:3
void register_types< void >()
Definition: serializer.cpp:5
void register_types()
Definition: serializer.h:243
Definition: datapack.h:55
static FPMAS_TYPE_INDEX register_type(const std::type_index &type)
Definition: json_serializer.h:177