#include <TAPsFlag.hpp>

Public Member Functions | |
| bool | CheckFlag (T flag) const |
| bool | CheckFlagNumber (int i) const |
| Check status (zero-based). | |
| void | ClearAll () |
| Operations. | |
| void | ClearFlag (T flag) |
| void | ClearFlagNumber (int i) |
| zero-based | |
| Flag (Flag< T, Bits, Holder > const &flag) | |
| copy constructor | |
| Flag (Holder flags) | |
| Flag (T f1=T(0)) | |
| Constructor. | |
| unsigned int | FlagsToUnsignedInt () const |
| Check status (zero-based). | |
| Flag< T, Bits, Holder > | operator & (Flag< T, Bits, Holder > const &flag) const |
| Flag< T, Bits, Holder > & | operator &= (Flag< T, Bits, Holder > const &flag) |
| bool | operator!= (Flag< T, Bits, Holder > const &flag) const |
| bool | operator< (Flag< T, Bits, Holder > const &flag) const |
| bool | operator<= (Flag< T, Bits, Holder > const &flag) const |
| Flag< T, Bits, Holder > & | operator= (Flag< T, Bits, Holder > const &flag) |
| Assignment Operator. | |
| bool | operator== (Flag< T, Bits, Holder > const &flag) const |
| Comparison Operators. | |
| bool | operator> (Flag< T, Bits, Holder > const &flag) const |
| bool | operator>= (Flag< T, Bits, Holder > const &flag) const |
| Flag< T, Bits, Holder > | operator| (Flag< T, Bits, Holder > const &flag) const |
| Flag< T, Bits, Holder > & | operator|= (Flag< T, Bits, Holder > const &flag) |
| Flag< T, Bits, Holder > | operator~ () const |
| Bitwise Operators. | |
| void | SetAll () |
| void | SetFlag (T flag) |
| void | SetFlagNumber (int i) |
| zero-based | |
| virtual std::string | StrInfo () const |
| Return this object info as a string. | |
| ~Flag () | |
| destructor | |
Protected Attributes | |
| Holder | m_flags |
| flags | |
Friends | |
| std::ostream & | operator<< (std::ostream &output, Flag< T, Bits, Holder > const &obj) |
| Output Operator <<. | |
All provided constructors (e.g., Flag<T>(...)), except the copy constructor, will create a Flag object that can hold up to eight flags.
However, an object of this Flag class can be created to hold up to 32 flags. To create a Flag object that can hold more than eight flags, use Flag<T,n>(...) where n (8 < n <=32) is the number of flags.
Definition at line 49 of file TAPsFlag.hpp.
| Flag< T, Bits, Holder >::Flag | ( | Flag< T, Bits, Holder > const & | flag | ) |
copy constructor
| bool Flag< T, Bits, Holder >::CheckFlag | ( | T | flag | ) | const [inline] |
Check status (zero-based) If two or more flags are presented, i.e., T flag composed of more than
Definition at line 242 of file TAPsFlag.cpp.
00243 { 00244 Holder result = m_flags & flag; 00245 if ( result > 0 ) return true; 00246 return false; 00247 }
| bool Flag< T, Bits, Holder >::CheckFlagNumber | ( | int | i | ) | const [inline] |
Check status (zero-based).
Definition at line 234 of file TAPsFlag.cpp.
00235 { 00236 Holder result = m_flags & ( 1 << i ); 00237 if ( result > 0 ) return true; 00238 return false; 00239 }
| void Flag< T, Bits, Holder >::ClearAll | ( | ) | [inline] |
| void Flag< T, Bits, Holder >::ClearFlag | ( | T | flag | ) | [inline] |
Definition at line 218 of file TAPsFlag.cpp.
00219 { 00220 m_flags |= flag; // Bitwise OR --> make the flag become 1 00221 m_flags ^= flag; // Bitwise XOR --> 1 XOR 1 results in 0 00222 }
| void Flag< T, Bits, Holder >::ClearFlagNumber | ( | int | i | ) | [inline] |
zero-based
Definition at line 173 of file TAPsFlag.cpp.
00174 { 00175 assert( i < Bits ); 00176 Holder val = 1; 00177 //std::cout << "VAL# " << 0 << " : " << val << std::endl; 00178 int b = 1; 00179 for ( ; b <= i; ++b ) { 00180 (val = val << 1); 00181 val += 1; 00182 //std::cout << "VAL# " << b << " : " << val << std::endl; 00183 } 00184 (val = val << 1); 00185 for ( ++b; b < Bits; ++b ) { 00186 (val = val << 1); 00187 val += 1; 00188 //std::cout << "VAL# " << b << " : " << val << std::endl; 00189 } 00190 00191 /* 00192 std::cout << "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; 00193 Holder A = 1; 00194 char ch[Bits]; 00195 for ( int b = 0; b < Bits; ++b ) { 00196 if ( A & val ) ch[b] = '1'; 00197 else ch[b] = '0'; 00198 (A = A << 1); 00199 } 00200 for ( int b = Bits-1; b >= 0; --b ) { 00201 std::cout << ch[b]; 00202 if ( b % 4 == 0 ) std::cout << " "; 00203 } 00204 std::cout << std::endl; 00205 //*/ 00206 00207 m_flags &= val; 00208 }
| unsigned int Flag< T, Bits, Holder >::FlagsToUnsignedInt | ( | ) | const [inline] |
Check status (zero-based).
Definition at line 104 of file TAPsFlag.hpp.
00104 { return static_cast<unsigned int>( m_flags ); }
| Flag< T, Bits, Holder > Flag< T, Bits, Holder >::operator & | ( | Flag< T, Bits, Holder > const & | flag | ) | const [inline] |
Definition at line 128 of file TAPsFlag.cpp.
00129 { 00130 return Flag<T,Bits,Holder>( m_flags & flag.m_flags ); 00131 }
| Flag< T, Bits, Holder > & Flag< T, Bits, Holder >::operator &= | ( | Flag< T, Bits, Holder > const & | flag | ) | [inline] |
| Flag< T, Bits, Holder > & Flag< T, Bits, Holder >::operator= | ( | Flag< T, Bits, Holder > const & | flag | ) | [inline] |
| bool Flag< T, Bits, Holder >::operator== | ( | Flag< T, Bits, Holder > const & | flag | ) | const [inline] |
| Flag< T, Bits, Holder > Flag< T, Bits, Holder >::operator| | ( | Flag< T, Bits, Holder > const & | flag | ) | const [inline] |
Definition at line 134 of file TAPsFlag.cpp.
00135 { 00136 return Flag<T,Bits,Holder>( m_flags | flag.m_flags ); 00137 }
| Flag< T, Bits, Holder > & Flag< T, Bits, Holder >::operator|= | ( | Flag< T, Bits, Holder > const & | flag | ) | [inline] |
| Flag< T, Bits, Holder > Flag< T, Bits, Holder >::operator~ | ( | ) | const [inline] |
Bitwise Operators.
bitwise one's complement
Definition at line 122 of file TAPsFlag.cpp.
00123 { 00124 return Flag<T,Bits,Holder>( ~m_flags ); 00125 }
| void Flag< T, Bits, Holder >::SetAll | ( | ) | [inline] |
Definition at line 163 of file TAPsFlag.cpp.
00164 { 00165 Holder val = 1; 00166 for ( int i = 0; i < Bits; ++i ) { 00167 m_flags |= val; 00168 (val = val << 1); 00169 } 00170 }
| void Flag< T, Bits, Holder >::SetFlag | ( | T | flag | ) | [inline] |
Definition at line 225 of file TAPsFlag.cpp.
00226 { 00227 m_flags |= flag; // Bitwise OR --> make the flag become 1 00228 }
| void Flag< T, Bits, Holder >::SetFlagNumber | ( | int | i | ) | [inline] |
zero-based
Definition at line 211 of file TAPsFlag.cpp.
00212 { 00213 assert( i < Bits ); 00214 m_flags |= ( 1 << i ); 00215 }
| std::string Flag< T, Bits, Holder >::StrInfo | ( | ) | const [inline, virtual] |
Return this object info as a string.
Definition at line 45 of file TAPsFlag.cpp.
00046 { 00047 std::ostringstream ss; 00048 ss << "Flag of " << "type: " << typeid(T).name() << ", " 00049 << "size: " << Bits << ", " 00050 << "holder: " << typeid(Holder).name() << ", with"; 00051 ss << " set flag_bits: "; 00052 Holder val = 1; 00053 char ch[Bits]; 00054 for ( int i = 0; i < Bits; ++i ) { 00055 if ( m_flags & val ) ch[i] = '1'; 00056 else ch[i] = '0'; 00057 (val = val << 1); 00058 } 00059 for ( int i = Bits-1; i >= 0; --i ) { 00060 ss << ch[i]; 00061 if ( i % 4 == 0 ) ss << " "; 00062 } 00063 00064 ss << " decimal value: " << static_cast<unsigned int>( m_flags ); 00065 00066 return ss.str(); 00067 }
| std::ostream& operator<< | ( | std::ostream & | output, | |
| Flag< T, Bits, Holder > const & | obj | |||
| ) | [friend] |
Output Operator <<.
Definition at line 53 of file TAPsFlag.hpp.
00054 { 00055 output << obj.StrInfo(); 00056 return output; 00057 }
1.5.6