-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
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.
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
- add install target to install config-module for
which creates an INTERFACE library
- add unittest to test config-module
- add option to skip tests and install only
- fix MSVC compatibility problem in CMakeLists.txt
1) Implemented std::valarray serialization (based on vector.hpp) in file valarray.hpp
2) Implemented unit tests in file valarray.cpp (based on vector.cpp tests, except for bool case)
3) vs2013/unittests project configuration updated accordingly
4) unittests/common.hpp updated.
5) No documentation so far
count_in/out_serializers will now count the number of specializations if a type is
specialized, otherwise it will count the number of non-specialized serialization functions.
as a result of this, is_output/input_serializable now works as you would expect from the name
and will return true for correctly configured specialized types too.
this caused some logic changes to need to happen in cereal.hpp, mostly within the PROCESS_IF macro.
added some tests related to this change and #180fixes#180
This is a solution for #46 that uses RTTI to allow get_user_data to work
and throw an error when used in an archive that doesn't actually have user
data. Unfortunately this is a run-time check and uses a dummy virtual function
that is never actually called (so the overhead of this will be very low, a few bytes
for the vtable, no runtime cost).
Another solution I'm going to play around with involves re-arranging some templates and
typedefs.
In sandbox_vs.cpp, there is a very strange issue with calling
traits::is_input_serializable that causes icc 15.0.0 to crash.
Everything else works great though.
Added a set of trait classes that can be used to get an input archive
from an output archive. Requires specializing a struct for each direction or
alternatively using the new macro CEREAL_SETUP_ARCHIVE_TRAITS(InArchive, OutArchive).
This has already been added for all built in archive types. This is currently only
used for minimal serialization.
load_minimal type traits now correctly use the output archive to check the existence of
a corresponding save_minimal and get its return type, using the new get_input_from_output
type class.
Added a test for this case into the minimal structs test.
Sandbox_vs needed the new macro to become compliant.