Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/pending/lowest_bit.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 // ----------------------------------------------------------- | |
2 // lowest_bit.hpp | |
3 // | |
4 // Position of the lowest bit 'on' | |
5 // | |
6 // Copyright (c) 2003-2004, 2008 Gennaro Prota | |
7 // | |
8 // Distributed under the Boost Software License, Version 1.0. | |
9 // (See accompanying file LICENSE_1_0.txt or copy at | |
10 // http://www.boost.org/LICENSE_1_0.txt) | |
11 // | |
12 // ----------------------------------------------------------- | |
13 | |
14 #ifndef BOOST_LOWEST_BIT_HPP_GP_20030301 | |
15 #define BOOST_LOWEST_BIT_HPP_GP_20030301 | |
16 | |
17 #include <assert.h> | |
18 #include "boost/pending/integer_log2.hpp" | |
19 | |
20 | |
21 namespace boost { | |
22 | |
23 template <typename T> | |
24 int lowest_bit(T x) { | |
25 | |
26 assert(x >= 1); // PRE | |
27 | |
28 // clear all bits on except the rightmost one, | |
29 // then calculate the logarithm base 2 | |
30 // | |
31 return boost::integer_log2<T>( x - ( x & (x-1) ) ); | |
32 | |
33 } | |
34 | |
35 | |
36 } | |
37 | |
38 | |
39 #endif // include guard |