-Make CEREAL_THREAD_SAFE be 0 or 1 instead of present or not present
-Move CEREAL_NOEXCEPT to macros.hpp
-instead of individual locks, can now use StaticObject::lock() to request a lock if CEREAL_THREAD_SAFE is enabled. If
not enabled, this call returns an empty object. The lock returned acts just like std::lock_guard, but uses
std::unique_lock internally
-Made a bunch of requests to StaticObject::getInstance const
-Added first stab at multithreaded tests with versioning and polymorphism
Resolves#283
Previously EnableSharedStateHelper restored the internal weak_ptr for
enable_shared_from_this after load_and_construct was called, it is now
called as soon as construct() is called, allowing a user to use shared_from_this
to initialize various member variables. See issue for more info.
relates to #281
Now if someone has a hierarchy like A -> B -> C,
the A->C relation will be automatically created if A->B and B->C already exist.
This is implemented by a chain of casts to get down the inheritance.
In the case of multiple paths, the shortest one will be chosen.
Updated and made changes necessary for the new version of rapidjson.
Looks good on ubuntu under the compilers I can test with, needs MSVC testing.
We had some internal changes to rapidjson but these didn't seem necessary with
the new version. Haven't done any performance testing, initial estimates put it at
nearly the same speed for json serialization. Could probably optimize things.
relates #82, #121
See #141
Should work across all compilers we currently support, for any other
times when templated types are needed in a macro, just unroll the macro
manually and replace as necessary
Integrates the changes proposed by #236
Bitset will now use a chunking method when serializing to BinaryData
capable archives, which should be faster, especially for larger bitsets.
Archives that do not support BinaryData will continue to use the old method.
Also added a larger bitset to the test case
There are already the "small signed/unsigned overloads" of loadValue that
are always selected for integers smaller than 64 bits.
The fixed overloads conflicted with the "small signed/unsigned overloads"
if:
- long is smaller than 64 bits
- int32_t is not typedef for long