Commit 0217ac04 by Paolo Carlini Committed by Paolo Carlini

bitset (_Base_bitset<>::_M_are_all_aux): Remove.

2011-09-02  Paolo Carlini  <paolo.carlini@oracle.com>
	    Marc Glisse  <marc.glisse@normalesup.org>

	* include/std/bitset (_Base_bitset<>::_M_are_all_aux): Remove.
	(_Base_bitset<>::_M_are_all): Add.
	(bitset<>::all): Use the latter, improve implementation.

Co-Authored-By: Marc Glisse <marc.glisse@normalesup.org>

From-SVN: r178473
parent 81fa35bd
2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
Marc Glisse <marc.glisse@normalesup.org>
* include/std/bitset (_Base_bitset<>::_M_are_all_aux): Remove.
(_Base_bitset<>::_M_are_all): Add.
(bitset<>::all): Use the latter, improve implementation.
2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
Marc Glisse <marc.glisse@normalesup.org>
PR libstdc++/50268
* include/std/bitset (struct _Sanitize_val): Add.
(bitset<>::bitset(unsigned long long)): Fix.
......
......@@ -185,15 +185,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
return true;
}
size_t
_M_are_all_aux() const _GLIBCXX_NOEXCEPT
{
for (size_t __i = 0; __i < _Nw - 1; __i++)
if (_M_w[__i] != ~static_cast<_WordT>(0))
return 0;
return ((_Nw - 1) * _GLIBCXX_BITSET_BITS_PER_WORD
+ __builtin_popcountl(_M_hiword()));
}
template<size_t _Nb>
bool
_M_are_all() const _GLIBCXX_NOEXCEPT
{
for (size_t __i = 0; __i < _Nw - 1; __i++)
if (_M_w[__i] != ~static_cast<_WordT>(0))
return false;
return _M_hiword() == (~static_cast<_WordT>(0)
>> (_Nw * _GLIBCXX_BITSET_BITS_PER_WORD
- _Nb));
}
bool
_M_is_any() const _GLIBCXX_NOEXCEPT
......@@ -460,9 +462,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_M_is_equal(const _Base_bitset<1>& __x) const _GLIBCXX_NOEXCEPT
{ return _M_w == __x._M_w; }
size_t
_M_are_all_aux() const _GLIBCXX_NOEXCEPT
{ return __builtin_popcountl(_M_w); }
template<size_t _Nb>
bool
_M_are_all() const _GLIBCXX_NOEXCEPT
{ return _M_w == (~static_cast<_WordT>(0)
>> (_GLIBCXX_BITSET_BITS_PER_WORD - _Nb)); }
bool
_M_is_any() const _GLIBCXX_NOEXCEPT
......@@ -605,9 +609,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_M_is_equal(const _Base_bitset<0>&) const _GLIBCXX_NOEXCEPT
{ return true; }
size_t
_M_are_all_aux() const _GLIBCXX_NOEXCEPT
{ return 0; }
template<size_t _Nb>
bool
_M_are_all() const _GLIBCXX_NOEXCEPT
{ return true; }
bool
_M_is_any() const _GLIBCXX_NOEXCEPT
......@@ -1312,7 +1317,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
bool
all() const _GLIBCXX_NOEXCEPT
{ return this->_M_are_all_aux() == _Nb; }
{ return this->template _M_are_all<_Nb>(); }
/**
* @brief Tests whether any of the bits are on.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment