3 #include "content_types.h"
7 #include <mxcomp/reflection.h>
14 static constexpr std::array<ContentType::t,1> ContentTypes() {
return { { ContentType::DEFAULT } }; };
18 template<
typename S,
typename T>
30 template<
typename S,
typename T>
41 template <
typename S,
typename FProvider,
typename... T>
45 template <
typename Th,
typename...Tt>
53 template <
typename Th>
55 static auto Add(
thisType* _this) ->
void {
57 assert(contentType > ContentType::DEFAULT &&
58 contentType < ContentType::MAX &&
59 "Invalid content type value in specialized handler");
60 _this->handlers[contentType] = FProvider::template Make<S, Th> ();
66 std::vector<Setter> handlers;
69 handlers.resize(ContentType::MAX);
73 static thisType& Instance() {
74 static thisType Instance;
79 template<
typename T,
typename enable =
void >
83 #include <rikitiki/jsoncpp/jsoncpp>
85 using namespace mxcomp;
87 struct valid_conversions<T, typename std::enable_if< std::is_function <decltype(MetaClass_<T>::fields)>::value >::type > {
93 struct valid_conversions<std::vector<T>, typename std::enable_if< std::is_class<valid_conversions<T> >::value >::type > {