diff options
author | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-31 01:56:56 +0000 |
---|---|---|
committer | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-31 01:56:56 +0000 |
commit | 6165a7852d01439d20ed5ee1814798863a3d5bf7 (patch) | |
tree | 79c893eea7572c70e3149db79562e61b25ffa5af /utils/d_ary_heap.h | |
parent | e4175086a36fbaf752b8a2dae089b9081ac5880f (diff) |
l2r bugfixes
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@635 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'utils/d_ary_heap.h')
-rw-r--r-- | utils/d_ary_heap.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/utils/d_ary_heap.h b/utils/d_ary_heap.h index eee8efe0..20cdab95 100644 --- a/utils/d_ary_heap.h +++ b/utils/d_ary_heap.h @@ -12,6 +12,9 @@ #define D_ARY_VERIFY_HEAP 1 // This is a very expensive test so it should be disabled even when NDEBUG is not defined +# undef D_ARY_HEAP_NULL_INDEX +# define D_ARY_HEAP_NULL_INDEX (-1) // if you want to test contains before adding, init location to this. + /* adapted from boost/graph/detail/d_ary_heap.hpp local modifications: @@ -112,8 +115,6 @@ typename Equal = std::equal_to<Value> > class d_ary_heap_indirect { BOOST_STATIC_ASSERT (Arity >= 2); -# undef D_ARY_HEAP_NULL_INDEX -# define D_ARY_HEAP_NULL_INDEX ((size_type)(-1)) public: typedef Container container_type; typedef Size size_type; @@ -285,9 +286,10 @@ #pragma GCC diagnostic ignored "-Wtype-limits" // because maybe size_type is signed or unsigned inline bool contains(const Value &v,size_type i) const { - return D_ARY_TRACK_OUT_OF_HEAP ? - (i != D_ARY_HEAP_NULL_INDEX) : - i>=0 && i<data.size() && equal(v,data[i]); // note: size_type may be signed (don't recommend it, though) - thus i>=0 check to catch uninit. data + if (D_ARY_TRACK_OUT_OF_HEAP) + return i != D_ARY_HEAP_NULL_INDEX; + size_type sz=data.size(); + return i>=0 && i<sz && equal(v,data[i]); // note: size_type may be signed (don't recommend it, though) - thus i>=0 check to catch uninit. data } #include "warning_pop.h" |