瀏覽代碼

operator bool

David Rose 17 年之前
父節點
當前提交
da684d4f49

+ 12 - 0
panda/src/putil/bitArray.I

@@ -411,6 +411,18 @@ clear() {
   _highest_bits = 0;
   _highest_bits = 0;
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: BitArray::operator bool
+//       Access: Published
+//  Description: The bool typecast operator returns true if any bits
+//               are set, false if none of them is set.  That is, true
+//               if nonzero, false if zero.
+////////////////////////////////////////////////////////////////////
+INLINE BitArray::
+operator bool () const {
+  return !is_zero();
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: BitArray::operator ==
 //     Function: BitArray::operator ==
 //       Access: Published
 //       Access: Published

+ 1 - 0
panda/src/putil/bitArray.h

@@ -102,6 +102,7 @@ PUBLISHED:
   void output_hex(ostream &out, int spaces_every = 4) const;
   void output_hex(ostream &out, int spaces_every = 4) const;
   void write(ostream &out, int indent_level = 0) const;
   void write(ostream &out, int indent_level = 0) const;
 
 
+  INLINE operator bool () const;
   INLINE bool operator == (const BitArray &other) const;
   INLINE bool operator == (const BitArray &other) const;
   INLINE bool operator != (const BitArray &other) const;
   INLINE bool operator != (const BitArray &other) const;
   INLINE bool operator < (const BitArray &other) const;
   INLINE bool operator < (const BitArray &other) const;

+ 13 - 0
panda/src/putil/bitMask.I

@@ -631,6 +631,19 @@ write(ostream &out, int indent_level) const {
   indent(out, indent_level) << *this << "\n";
   indent(out, indent_level) << *this << "\n";
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: BitMask::operator bool
+//       Access: Published
+//  Description: The bool typecast operator returns true if any bits
+//               are set, false if none of them is set.  That is, true
+//               if nonzero, false if zero.
+////////////////////////////////////////////////////////////////////
+template<class WType, int nbits>
+INLINE BitMask<WType, nbits>::
+operator bool () const {
+  return !is_zero();
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: BitMask::operator ==
 //     Function: BitMask::operator ==
 //       Access: Published
 //       Access: Published

+ 1 - 0
panda/src/putil/bitMask.h

@@ -89,6 +89,7 @@ PUBLISHED:
   void output_hex(ostream &out, int spaces_every = 4) const;
   void output_hex(ostream &out, int spaces_every = 4) const;
   void write(ostream &out, int indent_level = 0) const;
   void write(ostream &out, int indent_level = 0) const;
 
 
+  INLINE operator bool () const;
   INLINE bool operator == (const BitMask<WType, nbits> &other) const;
   INLINE bool operator == (const BitMask<WType, nbits> &other) const;
   INLINE bool operator != (const BitMask<WType, nbits> &other) const;
   INLINE bool operator != (const BitMask<WType, nbits> &other) const;
   INLINE bool operator < (const BitMask<WType, nbits> &other) const;
   INLINE bool operator < (const BitMask<WType, nbits> &other) const;

+ 13 - 0
panda/src/putil/doubleBitMask.I

@@ -646,6 +646,19 @@ write(ostream &out, int indent_level) const {
   indent(out, indent_level) << *this << "\n";
   indent(out, indent_level) << *this << "\n";
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: DoubleBitMask::operator bool
+//       Access: Published
+//  Description: The bool typecast operator returns true if any bits
+//               are set, false if none of them is set.  That is, true
+//               if nonzero, false if zero.
+////////////////////////////////////////////////////////////////////
+template<class BMType>
+INLINE DoubleBitMask<BMType>::
+operator bool () const {
+  return !is_zero();
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: DoubleBitMask::operator ==
 //     Function: DoubleBitMask::operator ==
 //       Access: Published
 //       Access: Published

+ 1 - 0
panda/src/putil/doubleBitMask.h

@@ -89,6 +89,7 @@ PUBLISHED:
   void output_hex(ostream &out, int spaces_every = 4) const;
   void output_hex(ostream &out, int spaces_every = 4) const;
   void write(ostream &out, int indent_level = 0) const;
   void write(ostream &out, int indent_level = 0) const;
 
 
+  INLINE operator bool () const;
   INLINE bool operator == (const DoubleBitMask<BMType> &other) const;
   INLINE bool operator == (const DoubleBitMask<BMType> &other) const;
   INLINE bool operator != (const DoubleBitMask<BMType> &other) const;
   INLINE bool operator != (const DoubleBitMask<BMType> &other) const;
   INLINE bool operator < (const DoubleBitMask<BMType> &other) const;
   INLINE bool operator < (const DoubleBitMask<BMType> &other) const;

+ 12 - 0
panda/src/putil/sparseArray.I

@@ -360,6 +360,18 @@ clear() {
   _inverse = false;
   _inverse = false;
 }
 }
 
 
+////////////////////////////////////////////////////////////////////
+//     Function: SparseArray::operator bool
+//       Access: Published
+//  Description: The bool typecast operator returns true if any bits
+//               are set, false if none of them is set.  That is, true
+//               if nonzero, false if zero.
+////////////////////////////////////////////////////////////////////
+INLINE SparseArray::
+operator bool () const {
+  return !is_zero();
+}
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: SparseArray::operator ==
 //     Function: SparseArray::operator ==
 //       Access: Published
 //       Access: Published

+ 1 - 0
panda/src/putil/sparseArray.h

@@ -93,6 +93,7 @@ PUBLISHED:
 
 
   void output(ostream &out) const;
   void output(ostream &out) const;
 
 
+  INLINE operator bool () const;
   INLINE bool operator == (const SparseArray &other) const;
   INLINE bool operator == (const SparseArray &other) const;
   INLINE bool operator != (const SparseArray &other) const;
   INLINE bool operator != (const SparseArray &other) const;
   INLINE bool operator < (const SparseArray &other) const;
   INLINE bool operator < (const SparseArray &other) const;