00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023
00033 #ifndef _CTTL_XTL_BITFLAGS_H_INCLUDED_
00034 #define _CTTL_XTL_BITFLAGS_H_INCLUDED_
00035
00039 namespace cttl_impl {
00040
00049 struct xtl_bitflags
00050 {
00052 typedef unsigned int value_type;
00053
00060 xtl_bitflags( value_type flags_ = 0 )
00061 : bits( flags_ )
00062 {}
00063
00073 value_type clear( value_type flags_ )
00074 {
00075 value_type old_value = bits;
00076 bits &= ~flags_;
00077 return old_value;
00078 }
00079
00089 value_type set( value_type flags_ )
00090 {
00091 value_type old_value = bits;
00092 bits |= flags_;
00093 return old_value;
00094 }
00095
00105 value_type test( value_type flags_ ) const
00106 {
00107 return bits & flags_;
00108 }
00109
00119 bool exact_test( value_type flags_ ) const
00120 {
00121 return ( bits & flags_ ) == flags_;
00122 }
00123
00125 operator value_type() const
00126 {
00127 return bits;
00128 }
00129
00131 value_type bits;
00132
00133 };
00134
00135 }
00136
00137 #endif //_CTTL_XTL_BITFLAGS_H_INCLUDED_