From 3ddad3e2d21de2ba6d8a8210b96db8d5c774256e Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 1 Jul 2012 15:23:34 +0000 Subject: [PATCH] let the empty bitmask evaluate to False in Python --- panda/src/putil/bitMask.I | 31 +++++++++++++++++++++---------- panda/src/putil/bitMask.h | 2 ++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/panda/src/putil/bitMask.I b/panda/src/putil/bitMask.I index 9c7de08321..723df90513 100644 --- a/panda/src/putil/bitMask.I +++ b/panda/src/putil/bitMask.I @@ -833,6 +833,17 @@ get_key() const { return (int)_word; } +//////////////////////////////////////////////////////////////////// +// Function: BitMask::__nonzero__ +// Access: Published +// Description: Returns true if the bitmask is not zero. +//////////////////////////////////////////////////////////////////// +template +INLINE bool BitMask:: +__nonzero__() const { + return _word != 0; +} + //////////////////////////////////////////////////////////////////// // Function: BitMask::generate_hash // Access: Public @@ -949,8 +960,8 @@ INLINE BitMask BitMask:: keep_next_highest_bit(int index) const { BitMask mask,temp; nassertr(index >= 0 && index < num_bits, mask); - - mask.set_bit(index); + + mask.set_bit(index); mask.flood_down_in_place(); mask.invert_in_place(); mask &= *this; @@ -960,7 +971,7 @@ keep_next_highest_bit(int index) const { mask.flood_up_in_place(); mask.invert_in_place(); mask &= temp; - + return mask; } @@ -975,8 +986,8 @@ INLINE BitMask BitMask:: keep_next_lowest_bit(int index) const { BitMask mask, temp; nassertr(index >= 0 && index < num_bits, mask); - - mask.set_bit(index); + + mask.set_bit(index); mask.flood_up_in_place(); mask.invert_in_place(); mask &= *this; @@ -986,7 +997,7 @@ keep_next_lowest_bit(int index) const { mask.flood_down_in_place(); mask.invert_in_place(); mask &= temp; - + return mask; } @@ -994,8 +1005,8 @@ keep_next_lowest_bit(int index) const { // Function: BitMask::keep_next_highest_bit // Access: Published // Description: Returns a BitMask with only the next highest "on" -// bit above all "on" bits in the passed in bitmask, or -// all_off. If there are no "on" bits in the passed in +// bit above all "on" bits in the passed in bitmask, or +// all_off. If there are no "on" bits in the passed in // bitmask, it will return keep_next_highest_bit(). //////////////////////////////////////////////////////////////////// template @@ -1013,8 +1024,8 @@ keep_next_highest_bit(const BitMask &other) const { // Function: BitMask::keep_next_lowest_bit // Access: Published // Description: Returns a BitMask with only the next lowest "on" -// bit below all "on" bits in the passed in bitmask, or -// all_off. If there are no "on" bits in the passed in +// bit below all "on" bits in the passed in bitmask, or +// all_off. If there are no "on" bits in the passed in // bitmask, it will return keep_next_lowest_bit(). //////////////////////////////////////////////////////////////////// template diff --git a/panda/src/putil/bitMask.h b/panda/src/putil/bitMask.h index fdc3b58fc1..1c9d27cf2c 100644 --- a/panda/src/putil/bitMask.h +++ b/panda/src/putil/bitMask.h @@ -131,6 +131,8 @@ PUBLISHED: INLINE int get_key() const; + INLINE bool __nonzero__() const; + public: INLINE void generate_hash(ChecksumHashGenerator &hashgen) const;