29 #ifndef _GLIBCXX_PROFILE_BITSET
30 #define _GLIBCXX_PROFILE_BITSET
34 namespace std _GLIBCXX_VISIBILITY(default)
41 :
public _GLIBCXX_STD_C::bitset<_Nb>
43 typedef _GLIBCXX_STD_C::bitset<_Nb>
_Base;
48 :
private _Base::reference
50 typedef typename _Base::reference _Base_ref;
60 reference(
const reference& __x)
67 *
static_cast<_Base_ref*
>(
this) = __x;
72 operator=(
const reference& __x)
74 *
static_cast<_Base_ref*
>(
this) = __x;
81 return ~(*
static_cast<const _Base_ref*
>(
this));
86 return *
static_cast<const _Base_ref*
>(
this);
100 #ifdef __GXX_EXPERIMENTAL_CXX0X__
101 constexpr bitset(
unsigned long long __val)
103 bitset(
unsigned long __val)
107 template<
typename _CharT,
typename _Traits,
typename _Alloc>
110 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
112 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
114 :
_Base(__str, __pos, __n) { }
118 template<
class _CharT,
class _Traits,
class _Alloc>
120 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
122 typename std::basic_string<_CharT, _Traits, _Alloc>::size_type
124 _CharT __zero, _CharT __one = _CharT(
'1'))
125 :
_Base(__str, __pos, __n, __zero, __one) { }
129 #ifdef __GXX_EXPERIMENTAL_CXX0X__
130 template<
typename _CharT>
132 bitset(
const _CharT* __str,
133 typename std::basic_string<_CharT>::size_type __n
135 _CharT __zero = _CharT(
'0'), _CharT __one = _CharT(
'1'))
136 :
_Base(__str, __n, __zero, __one) { }
185 set(
size_t __pos,
bool __val =
true)
227 return reference(_M_base()[__pos],
this);
235 return _M_base()[__pos];
239 #ifdef __GXX_EXPERIMENTAL_CXX0X__
240 using _Base::to_ullong;
243 template <
typename _CharT,
typename _Traits,
typename _Alloc>
246 {
return _M_base().template to_string<_CharT, _Traits, _Alloc>(); }
250 template<
class _CharT,
class _Traits,
class _Alloc>
252 to_string(_CharT __zero, _CharT __one = _CharT(
'1'))
const
254 return _M_base().template
255 to_string<_CharT, _Traits, _Alloc>(__zero, __one);
260 template<
typename _CharT,
typename _Traits>
263 {
return to_string<_CharT, _Traits, std::allocator<_CharT> >(); }
267 template<
class _CharT,
class _Traits>
269 to_string(_CharT __zero, _CharT __one = _CharT(
'1'))
const
273 template<
typename _CharT>
278 return to_string<_CharT, std::char_traits<_CharT>,
282 template<
class _CharT>
285 to_string(_CharT __zero, _CharT __one = _CharT(
'1'))
const
287 return to_string<_CharT, std::char_traits<_CharT>,
298 to_string(
char __zero,
char __one =
'1')
const
300 return to_string<char, std::char_traits<char>,
309 {
return _M_base() == __rhs; }
313 {
return _M_base() != __rhs; }
329 _M_base() {
return *
this; }
332 _M_base()
const {
return *
this; }
342 operator|(
const bitset<_Nb>& __x,
const bitset<_Nb>& __y)
343 {
return bitset<_Nb>(__x) |= __y; }
347 operator^(
const bitset<_Nb>& __x,
const bitset<_Nb>& __y)
348 {
return bitset<_Nb>(__x) ^= __y; }
350 template<
typename _CharT,
typename _Traits,
size_t _Nb>
353 {
return __is >> __x._M_base(); }
355 template<
typename _CharT,
typename _Traits,
size_t _Nb>
357 operator<<(std::basic_ostream<_CharT, _Traits>& __os,
358 const bitset<_Nb>& __x)
359 {
return __os << __x._M_base(); }
362 #ifdef __GXX_EXPERIMENTAL_CXX0X__
366 struct hash<__profile::bitset<_Nb>>
367 :
public __hash_base<size_t, __profile::bitset<_Nb>>