30 #ifndef CEREAL_DETAILS_HELPERS_HPP_
31 #define CEREAL_DETAILS_HELPERS_HPP_
33 #include <type_traits>
37 #include <unordered_map>
50 explicit Exception(
const std::string & what_ ) :
std::runtime_error(what_) {}
51 explicit Exception(
const char * what_ ) :
std::runtime_error(what_) {}
152 "Cannot pair a name to a NameValuePair" );
174 template<
class Archive,
class T>
inline
181 return std::forward<T>(
value);
187 template<
class Archive,
class T>
inline
194 return {name, std::forward<T>(
value)};
201 #define CEREAL_NVP_(name, value) ::cereal::make_nvp<Archive>(name, value)
245 "Cannot defer DeferredData" );
294 template <
class Archive,
class T>
struct polymorphic_serialization_support;
350 template <
class Key,
class Value>
373 template <
class Archive>
inline
376 archive( make_nvp<Archive>(
"key",
key),
377 make_nvp<Archive>(
"value",
value) );
384 template <
class KeyType,
class ValueType>
inline
387 return {std::forward<KeyType>(key), std::forward<ValueType>(
value)};
401 template <
class T,
class BindingTag = version_binding_tag>
struct Version
411 std::unordered_map<std::size_t, std::uint32_t>
mapping;
415 const auto result =
mapping.emplace(
hash, version );
416 return result.first->second;
Represents a JSON value. Use Value for UTF8 encoding and default allocator.
Definition: document.h:585
An output archive designed to save data in a compact binary representation.
Definition: binary.hpp:52
A wrapper around data that should be serialized after all non-deferred data.
Definition: helpers.hpp:233
Type value
Definition: helpers.hpp:259
DeferredData & operator=(DeferredData const &)=delete
typename std::conditional< std::is_array< typename std::remove_reference< T >::type >::value, typename std::remove_cv< T >::type, typename std::conditional< std::is_lvalue_reference< T >::value, T, typename std::decay< T >::type >::type >::type Type
Definition: helpers.hpp:241
DeferredData(T &&v)
Constructs a new NameValuePair.
Definition: helpers.hpp:257
For holding name value pairs.
Definition: helpers.hpp:140
typename std::conditional< std::is_array< typename std::remove_reference< T >::type >::value, typename std::remove_cv< T >::type, typename std::conditional< std::is_lvalue_reference< T >::value, T, typename std::decay< T >::type >::type >::type Type
Definition: helpers.hpp:148
char const * name
Definition: helpers.hpp:167
std::enable_if<!std::is_same< Archive,::cereal::BinaryInputArchive >::value &&!std::is_same< Archive,::cereal::BinaryOutputArchive >::value, NameValuePair< T > >::type make_nvp(const char *name, T &&value)
A specialization of make_nvp<> that actually creates an nvp for non-binary archives.
Definition: helpers.hpp:192
std::enable_if< std::is_same< Archive,::cereal::BinaryInputArchive >::value||std::is_same< Archive,::cereal::BinaryOutputArchive >::value, T && >::type make_nvp(const char *, T &&value)
A specialization of make_nvp<> that simply forwards the value for binary archives.
Definition: helpers.hpp:179
Type value
Definition: helpers.hpp:168
NameValuePair(char const *n, T &&v)
Constructs a new NameValuePair.
Definition: helpers.hpp:165
NameValuePair & operator=(NameValuePair const &)=delete
A wrapper around size metadata.
Definition: helpers.hpp:313
Type size
Definition: helpers.hpp:326
SizeTag(T &&sz)
Definition: helpers.hpp:324
SizeTag & operator=(SizeTag const &)=delete
typename std::conditional< std::is_lvalue_reference< T >::value, T, typename std::decay< T >::type >::type Type
Definition: helpers.hpp:319
Definition: helpers.hpp:270
OutputArchiveBase(OutputArchiveBase &&) CEREAL_NOEXCEPT
Definition: helpers.hpp:273
virtual void rtti()
Definition: helpers.hpp:278
OutputArchiveBase()=default
virtual ~OutputArchiveBase() CEREAL_NOEXCEPT=default
OutputArchiveBase & operator=(OutputArchiveBase &&) CEREAL_NOEXCEPT
Definition: helpers.hpp:274
GenericValue< UTF8<> > Value
GenericValue with UTF8 encoding.
Definition: document.h:2117
Preprocessor macros that can customise the cereal library.
#define CEREAL_SIZE_TYPE
Determines the data type used for size_type.
Definition: macros.hpp:70
#define CEREAL_NOEXCEPT
Defines the CEREAL_NOEXCEPT macro to use instead of noexcept.
Definition: macros.hpp:130
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
static const uint32_t msb_32bit
Definition: helpers.hpp:298
static const int32_t msb2_32bit
Definition: helpers.hpp:299
in certain simple scenarios. They should probably not be used if maximizing performance is the main o...
Definition: access.hpp:42
MapItem< KeyType, ValueType > make_map_item(KeyType &&key, ValueType &&value)
Create a MapItem so that human readable archives will group keys and values together.
Definition: helpers.hpp:385
CEREAL_SIZE_TYPE size_type
The size type used by cereal.
Definition: helpers.hpp:61
detail namespace with internal helper functions
Definition: json.hpp:260
std::size_t hash(const BasicJsonType &j)
hash a JSON value
Definition: json.hpp:6370
Definition: json.hpp:5678
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
Internal polymorphism static object support.
unsigned int uint32_t
Definition: stdint.h:126
signed int int32_t
Definition: stdint.h:123
unsigned __int64 uint64_t
Definition: stdint.h:136
A wrapper around data that can be serialized in a binary fashion.
Definition: helpers.hpp:212
BinaryData(T &&d, uint64_t s)
Definition: helpers.hpp:219
PT data
pointer to beginning of data
Definition: helpers.hpp:221
typename std::conditional< std::is_const< typename std::remove_pointer< typename std::remove_reference< T >::type >::type >::value, const void *, void * >::type PT
Definition: helpers.hpp:217
uint64_t size
size in bytes
Definition: helpers.hpp:222
An exception class thrown when things go wrong at runtime.
Definition: helpers.hpp:49
Exception(const char *what_)
Definition: helpers.hpp:51
Exception(const std::string &what_)
Definition: helpers.hpp:50
A wrapper around a key and value for serializing data into maps.
Definition: helpers.hpp:352
MapItem(Key &&key_, Value &&value_)
Construct a MapItem from a key and a value.
Definition: helpers.hpp:365
typename std::conditional< std::is_lvalue_reference< Key >::value, Key, typename std::decay< Key >::type >::type KeyType
Definition: helpers.hpp:356
typename std::conditional< std::is_lvalue_reference< Value >::value, Value, typename std::decay< Value >::type >::type ValueType
Definition: helpers.hpp:361
MapItem & operator=(MapItem const &)=delete
void CEREAL_SERIALIZE_FUNCTION_NAME(Archive &archive)
Serialize the MapItem with the NVPs "key" and "value".
Definition: helpers.hpp:374
KeyType key
Definition: helpers.hpp:369
ValueType value
Definition: helpers.hpp:370
Traits struct for DeferredData.
Definition: helpers.hpp:71
Traits struct for NVPs.
Definition: helpers.hpp:70
Version information class.
Definition: helpers.hpp:402
static const std::uint32_t version
Definition: helpers.hpp:403
Holds all registered version information.
Definition: helpers.hpp:410
std::uint32_t find(std::size_t hash, std::uint32_t version)
Definition: helpers.hpp:413
std::unordered_map< std::size_t, std::uint32_t > mapping
Definition: helpers.hpp:411
Definition: helpers.hpp:395