[GIT] ppl/ppl(master): Added helper function least_significant_one_mask().

Module: ppl/ppl Branch: master Commit: 015e50d0dfee5724c26b989121c15e79b92b8059 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=015e50d0dfee5...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Sat Feb 25 16:08:48 2012 +0100
Added helper function least_significant_one_mask().
---
src/globals.defs.hh | 3 +++ src/globals.inlines.hh | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/src/globals.defs.hh b/src/globals.defs.hh index 2c54772..a7e46a3 100644 --- a/src/globals.defs.hh +++ b/src/globals.defs.hh @@ -497,6 +497,9 @@ template <typename RA_Container> typename RA_Container::const_iterator nth_iter(const RA_Container& cont, dimension_type n);
+dimension_type +least_significant_one_mask(dimension_type i); + } // namespace Parma_Polyhedra_Library
// By default, use sparse matrices both for MIP_Problem and PIP_Problem. diff --git a/src/globals.inlines.hh b/src/globals.inlines.hh index d176bb0..0d27ddb 100644 --- a/src/globals.inlines.hh +++ b/src/globals.inlines.hh @@ -39,7 +39,8 @@ not_a_dimension() { inline int32_t hash_code_from_dimension(dimension_type dim) { const dimension_type divisor = 1U << (32 - 1); - return static_cast<int32_t>(dim % divisor); + dim = dim % divisor; + return static_cast<int32_t>(dim); }
inline const Weightwatch_Traits::Threshold& @@ -142,6 +143,11 @@ nth_iter(const RA_Container& cont, dimension_type n) { return cont.begin() + static_cast<diff_t>(n); }
+inline dimension_type +least_significant_one_mask(const dimension_type i) { + return i & (~i + 1U); +} + } // namespace Parma_Polyhedra_Library
#endif // !defined(PPL_globals_inlines_hh)
participants (1)
-
Enea Zaffanella