epoc32/include/stdapis/boost/pending/lowest_bit.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 // -------------------------------------
     2 // lowest_bit.hpp
     3 //
     4 //           Position of the lowest bit 'on'
     5 //
     6 //       (C) Copyright Gennaro Prota 2003 - 2004.
     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 <cassert>
    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