34 template<
class TInt,
unsigned _size>
57 inline std::string
asString( TInt val,
char zero =
'0',
char one =
'1' )
71 template<
class TInt,
unsigned _begin,
unsigned _size>
80 template<
class TInt,
unsigned _begin,
unsigned _size>
87 static const unsigned begin = _begin;
88 static const unsigned size = _size;
89 static const unsigned end = _begin + _size;
95 template<
class TInt,
unsigned _begin>
109 template<
class TRange,
typename TRange::IntT _value>
113 typedef typename TRange::IntT
IntT;
127 template<
class TRange,
unsigned _pos>
131 typedef typename TRange::IntT
IntT;
174 {
return _value != (TInt)0; }
178 template<
class TRange>
181 return _value & TRange::Mask::value;
189 template<
class TRange>
200 template<
class TRange>
204 | (rhs & TRange::Mask::value);
214 template<
class TRange>
217 return (
_value & TRange::Mask::value)
218 == (rhs & TRange::Mask::value);
228 template<
class TRange>
230 {
return set( (rhs & TRange::Mask::value), doset_r ); }
233 {
return doset_r ?
set( rhs ) :
unset( rhs ); }
236 template<
class TRange>
238 {
return set( rhs & TRange::Mask::value ); }
241 {
_value |= rhs;
return *
this; }
244 template<
class TRange>
246 {
return unset( rhs & TRange::Mask::value ); }
249 {
_value &= ~rhs;
return *
this; }
252 template<
class TRange>
254 {
return test( rhs & TRange::Mask::value ); }
257 {
return (
_value & rhs) == rhs; }
260 template<
class TRange>
262 {
return testAnyOf( rhs & TRange::Mask::value ); }
265 {
return (
_value & rhs); }
282 {
_value <<= num;
return *
this; }
285 {
_value >>= num;
return *
this; }
297 std::ostream & operator<<( std::ostream & str, const BitField<TInt> & obj )
299 return str << obj.asString();
310 {
return ! (lhs == rhs); }