/usr/include/boost/heap/detail
NameSizeModeActions
heap_comparison.hpp73640644editdlrm
heap_node.hpp95570644editdlrm
ilog2.hpp11730644editdlrm
mutable_heap.hpp151230644editdlrm
ordered_adaptor_iterator.hpp51540644editdlrm
stable_heap.hpp149400644editdlrm
tree_iterator.hpp111190644editdlrm
Edit: /usr/include/boost/heap/detail/ilog2.hpp (1173B)
// boost heap: integer log2 // // Copyright (C) 2010 Tim Blechmann // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_HEAP_DETAIL_ILOG2_HPP #define BOOST_HEAP_DETAIL_ILOG2_HPP #include // std::size_t namespace boost { namespace heap { namespace detail { template struct log2 { IntType operator()(IntType value) { IntType l = 0; while( (value >> l) > 1 ) ++l; return l; } }; #ifdef __GNUC__ template<> struct log2 { unsigned int operator()(unsigned int value) { return sizeof(unsigned int)*8 - __builtin_clz(value - 1); } }; template<> struct log2 { unsigned long operator()(unsigned long value) { return sizeof(unsigned long)*8 - __builtin_clzl(value - 1); } }; #endif } /* namespace detail */ template IntType log2(IntType value) { detail::log2 fn; return fn(value); } } /* namespace heap */ } /* namespace boost */ #endif /* BOOST_HEAP_DETAIL_ILOG2_HPP */