Reflection for RapidJSON  0.0.15
Reflection for serializing/deserializing with RapidJSON
Classes | Namespaces | Macros | Typedefs
traits.h File Reference
#include <c++utilities/misc/traits.h>
#include <map>
#include <set>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <variant>
Include dependency graph for traits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ReflectiveRapidJSON::TreatAsMapOrHash< T >
 The TreatAsMapOrHash class allows treating custom classes as std::map or std::unordered_map. More...
 
struct  ReflectiveRapidJSON::TreatAsMultiMapOrHash< T >
 The TreatAsMultiMapOrHash class allows treating custom classes as std::multimap or std::unordered_multimap. More...
 
struct  ReflectiveRapidJSON::TreatAsSet< T >
 The TreatAsSet class allows treating custom classes as std::set or std::unordered_set. More...
 
struct  ReflectiveRapidJSON::TreatAsMultiSet< T >
 The TreatAsMultiSet class allows treating custom classes as std::multiset or std::unordered_multiset. More...
 

Namespaces

 ReflectiveRapidJSON
 

Macros

#define REFLECTIVE_RAPIDJSON_TREAT_AS_MAP_OR_HASH(T)
 
#define REFLECTIVE_RAPIDJSON_TREAT_AS_MULTI_MAP_OR_HASH(T)
 
#define REFLECTIVE_RAPIDJSON_TREAT_AS_SET(T)
 
#define REFLECTIVE_RAPIDJSON_TREAT_AS_MULTI_SET(T)
 

Typedefs

template<typename Type >
using ReflectiveRapidJSON::IsMapOrHash = Traits::Any< Traits::IsSpecializationOf< Type, std::map >, Traits::IsSpecializationOf< Type, std::unordered_map >, TreatAsMapOrHash< Type > >
 
template<typename Type >
using ReflectiveRapidJSON::IsMultiMapOrHash = Traits::Any< Traits::IsSpecializationOf< Type, std::multimap >, Traits::IsSpecializationOf< Type, std::unordered_multimap >, TreatAsMultiMapOrHash< Type > >
 
template<typename Type >
using ReflectiveRapidJSON::IsSet = Traits::Any< Traits::IsSpecializationOf< Type, std::set >, Traits::IsSpecializationOf< Type, std::unordered_set >, TreatAsSet< Type > >
 
template<typename Type >
using ReflectiveRapidJSON::IsMultiSet = Traits::Any< Traits::IsSpecializationOf< Type, std::multiset >, Traits::IsSpecializationOf< Type, std::unordered_multiset >, TreatAsMultiSet< Type > >
 
template<typename Type >
using ReflectiveRapidJSON::IsArrayOrSet = Traits::Any< Traits::All< Traits::IsIteratable< Type >, Traits::Not< Traits::IsSpecializationOf< Type, std::basic_string > >, Traits::Not< Traits::IsSpecializationOf< Type, std::basic_string_view > >, Traits::Not< IsMapOrHash< Type > >, Traits::Not< IsMultiMapOrHash< Type > >>, TreatAsSet< Type >, TreatAsMultiSet< Type > >
 
template<typename Type >
using ReflectiveRapidJSON::IsArray = Traits::All< Traits::IsIteratable< Type >, Traits::Not< Traits::IsSpecializationOf< Type, std::basic_string > >, Traits::Not< IsMapOrHash< Type > >, Traits::Not< IsMultiMapOrHash< Type > >, Traits::Not< IsSet< Type > >, Traits::Not< IsMultiSet< Type > >>
 
template<typename Type >
using ReflectiveRapidJSON::IsIteratableExceptString = Traits::All< Traits::IsIteratable< Type >, Traits::Not< Traits::IsSpecializationOf< Type, std::basic_string > >, Traits::Not< Traits::IsSpecializationOf< Type, std::basic_string > >>
 
template<typename Type >
using ReflectiveRapidJSON::IsVariant = Traits::All< Traits::IsSpecializationOf< Type, std::variant > >
 

Macro Definition Documentation

◆ REFLECTIVE_RAPIDJSON_TREAT_AS_MAP_OR_HASH

#define REFLECTIVE_RAPIDJSON_TREAT_AS_MAP_OR_HASH (   T)
Value:
template <> struct TreatAsMapOrHash<T> : public Traits::Bool<true> { \
}

Definition at line 32 of file traits.h.

◆ REFLECTIVE_RAPIDJSON_TREAT_AS_MULTI_MAP_OR_HASH

#define REFLECTIVE_RAPIDJSON_TREAT_AS_MULTI_MAP_OR_HASH (   T)
Value:
template <> struct TreatAsMultiMapOrHash<T> : public Traits::Bool<true> { \
}

Definition at line 35 of file traits.h.

◆ REFLECTIVE_RAPIDJSON_TREAT_AS_MULTI_SET

#define REFLECTIVE_RAPIDJSON_TREAT_AS_MULTI_SET (   T)
Value:
template <> struct TreatAsMultiSet<T> : public Traits::Bool<true> { \
}

Definition at line 41 of file traits.h.

◆ REFLECTIVE_RAPIDJSON_TREAT_AS_SET

#define REFLECTIVE_RAPIDJSON_TREAT_AS_SET (   T)
Value:
template <> struct TreatAsSet<T> : public Traits::Bool<true> { \
}

Definition at line 38 of file traits.h.