This implemenents non-intrusive serialization support to dynamic_bitset<> based on Boost Serialization
- it supports archives that require named elements
- it gets private member access using a nested friend class (to decouple the interface entirely)
- relies on boost/serialization/vector.hpp for actual implementation
clang-3.5 trunk 201163 and OS X's clang (not sure which version)
report -Wsign-conversion warnings with this header. This patch fixes
them.
https://svn.boost.org/trac/boost/ticket/9725
Signed-off-by: Thomas Klausner <tk@giga.or.at>
Instead of masking all bits in the current block that were already
visited and then finding the lowest remaining bit, it shifts the current
block directly to the first unvisited bit and identifies the lowest
set bit.
It requires fewer operations that the original implementation and should
be faster.
See https://svn.boost.org/trac/boost/ticket/5159.
I think the recent changes in trunk and release were for the same problem. But
I'm not sure so I've merged them together. Hopefully, the release branch might
fix the Intel C++ errors as well.
------------------------------------------------------------------------
r52960 | dgregor | 2009-05-13 07:11:03 +0100 (Wed, 13 May 2009) | 1 line
Use enum constants rather than local variables for integral constants. Should fix dynamic_bitset failures on GCC 4.3.x
------------------------------------------------------------------------
[SVN r53050]
* removed use of BOOST_WORKAROUND in #if for gcc bug c++/8419, as recent
changes to the implementation of BOOST_WORKAROUND broke its usage with
arguments such as ( (__GNUC__) * 100 * 100 + (__GNUC_MINOR__) * 100 )
[SVN r49586]
* removed one of the workarounds for VC++ <= 7.0 (we don't run tests on
those compilers, anymore, so we don't really know if the library still
works with them); other such workarounds exist, though: removing them
involves heavy refactoring and is probably not worth the corresponding
risk of destabilization; comments have been added about this latter point
* comment fixes in detail/dynamic_bitset.hpp
[SVN r49345]
* added user-declared default constructor to value_to_type<bool> (yeah, the
usual "initializing a const instance of an empty class" problem, which
also affected S. Meyers' null)
* explicitly qualified occurrence of "bits_per_block" in count() member
function, to let gcc 3.4.x understand that it *is* a constant expression
* fixed namespace qualification for vector_max_size_workaround (should've
been done in the previous commit, sorry)
[SVN r48496]
* fixed form of some remaining copyright lines
* using namespace detail::dynamic_bitset_impl for *all* implementation
details (dynamic_bitset_*count*_impl removed) and consequently shortened
some entity names
* switched from enum to bools for "enum mode", to help several compilers
which show problems with recognizing access_by_bytes and access_by_blocks
as constant expressions
* minor comment changes
* implemented the do-the-right-thing dispatch for constructor from
iterator-range, a la standard sequence containers (feature request #2172)
* dropped now useless comparison with zero in reference constructor
NOTE:
updated tests and documentation not committed yet; let's wait for the trunk
results first
[SVN r48478]
* clean up and fix of copyright notices for the include files that are directly under boost/
* parenthesized a couple of macro names in boost/dynamic_bitset/config.hpp
(yeah, a bit paranoid, I know :-))
* removed some superfluous comments and enclosed an url in angle brackets
* changed block_width_type, to avoid a few level 4 warnings with MSVC++
* added the usual private-and-non-implemented copy members to bit_appender
* removed useless #pragma warning(disable:4996) for MSVC++ (it should have
been eventually applied to much more places than it was; and, anyhow, the
only sensible way to get rid of the warning is to disable it globally)
* slight tweak in to_ulong (assert moved a bit earlier)
[SVN r48252]