36 template<
class _IntT,
unsigned _size>
59 inline std::string
asString( _IntT val,
char zero =
'0',
char one =
'1' )
73 template<
class _IntT,
unsigned _begin,
unsigned _size>
82 template<
class _IntT,
unsigned _begin,
unsigned _size>
89 static const unsigned begin = _begin;
90 static const unsigned size = _size;
91 static const unsigned end = _begin + _size;
97 template<
class _IntT,
unsigned _begin>
111 template<
class _Range,
typename _Range::IntT _value>
115 typedef typename _Range::IntT
IntT;
129 template<
class _Range,
unsigned _pos>
133 typedef typename _Range::IntT
IntT;
160 template<
class _IntT>
182 template<
class _Range>
185 return _value & _Range::Mask::value;
193 template<
class _Range>
204 template<
class _Range>
208 | (rhs & _Range::Mask::value);
218 template<
class _Range>
221 return (
_value & _Range::Mask::value)
222 == (rhs & _Range::Mask::value);
232 template<
class _Range>
234 {
return set( (rhs & _Range::Mask::value), doset_r ); }
237 {
return doset_r ?
set( rhs ) :
unset( rhs ); }
240 template<
class _Range>
242 {
return set( rhs & _Range::Mask::value ); }
245 {
_value |= rhs;
return *
this; }
248 template<
class _Range>
250 {
return unset( rhs & _Range::Mask::value ); }
253 {
_value &= ~rhs;
return *
this; }
256 template<
class _Range>
258 {
return test( rhs & _Range::Mask::value ); }
261 {
return (
_value & rhs) == rhs; }
264 template<
class _Range>
266 {
return testAnyOf( rhs & _Range::Mask::value ); }
269 {
return (
_value & rhs); }
286 {
_value <<= num;
return *
this; }
289 {
_value >>= num;
return *
this; }
306 template<
class _IntT>
307 std::ostream & operator<<( std::ostream & str, const BitField<_IntT> & obj )
309 return str << obj.asString();
313 template<
class _IntT>
318 template<
class _IntT>
320 {
return ! (lhs == rhs); }
324 template<
class _IntT>
329 template<
class _IntT>
334 template<
class _IntT>
339 template<
class _IntT>
344 template<
class _IntT>