allow comparison between BitMask and integer

This commit is contained in:
rdb
2012-03-20 10:59:21 +00:00
parent 0b4654d512
commit d9ef0f11ae
2 changed files with 64 additions and 0 deletions
+59
View File
@@ -690,6 +690,65 @@ compare_to(const BitMask<WType, nbits> &other) const {
}
}
////////////////////////////////////////////////////////////////////
// Function: BitMask::operator ==
// Access: Published
// Description:
////////////////////////////////////////////////////////////////////
template<class WType, int nbits>
INLINE bool BitMask<WType, nbits>::
operator == (WordType other) const {
return _word == other;
}
////////////////////////////////////////////////////////////////////
// Function: BitMask::operator !=
// Access: Published
// Description:
////////////////////////////////////////////////////////////////////
template<class WType, int nbits>
INLINE bool BitMask<WType, nbits>::
operator != (WordType other) const {
return _word != other;
}
////////////////////////////////////////////////////////////////////
// Function: BitMask::operator <
// Access: Published
// Description: The ordering operator is of limited usefulness with a
// BitMask, however, it has a definition which places
// all unique BitMasks into a unique ordering. It may
// be useful when defining ordered STL containers of
// BitMasks, for instance; and it's required in order to
// export any STL container (ordered or unordered) of
// BitMask under Windows.
////////////////////////////////////////////////////////////////////
template<class WType, int nbits>
INLINE bool BitMask<WType, nbits>::
operator < (WordType other) const {
return _word < other;
}
////////////////////////////////////////////////////////////////////
// Function: BitMask::compare_to
// Access: Published
// Description: Returns a number less than zero if this BitMask sorts
// before the indicated other BitMask, greater than zero
// if it sorts after, or 0 if they are equivalent. This
// is based on the same ordering defined by operator <.
////////////////////////////////////////////////////////////////////
template<class WType, int nbits>
INLINE int BitMask<WType, nbits>::
compare_to(WordType other) const {
if ((*this) < other) {
return -1;
} else if (other < (*this)) {
return 1;
} else {
return 0;
}
}
////////////////////////////////////////////////////////////////////
// Function: BitMask::operator &
// Access: Published
+5
View File
@@ -94,6 +94,11 @@ PUBLISHED:
INLINE bool operator < (const BitMask<WType, nbits> &other) const;
INLINE int compare_to(const BitMask<WType, nbits> &other) const;
INLINE bool operator == (WordType other) const;
INLINE bool operator != (WordType other) const;
INLINE bool operator < (WordType other) const;
INLINE int compare_to(WordType other) const;
INLINE BitMask<WType, nbits>
operator & (const BitMask<WType, nbits> &other) const;