/usr/include/boost/range/detail
NameSizeModeActions
any_iterator.hpp194670644editdlrm
any_iterator_buffer.hpp27360644editdlrm
any_iterator_interface.hpp100950644editdlrm
any_iterator_wrapper.hpp213590644editdlrm
collection_traits.hpp85050644editdlrm
collection_traits_detail.hpp144710644editdlrm
combine_cxx03.hpp23900644editdlrm
combine_cxx11.hpp10480644editdlrm
combine_no_rvalue.hpp24930644editdlrm
combine_rvalue.hpp11830644editdlrm
common.hpp66600644editdlrm
default_constructible_unary_fn.hpp20380644editdlrm
demote_iterator_traversal_tag.hpp54400644editdlrm
difference_type.hpp31620644editdlrm
empty.hpp31710644editdlrm
extract_optional_type.hpp20180644editdlrm
has_member_size.hpp15270644editdlrm
implementation_help.hpp31770644editdlrm
join_iterator.hpp109450644editdlrm
less.hpp4720644editdlrm
microsoft.hpp289280644editdlrm
misc_concept.hpp8220644editdlrm
msvc_has_iterator_workaround.hpp36120644editdlrm
range_return.hpp61820644editdlrm
safe_bool.hpp20670644editdlrm
sfinae.hpp26990644editdlrm
sizer.hpp9460644editdlrm
str_types.hpp8130644editdlrm
Edit: /usr/include/boost/range/detail/any_iterator_buffer.hpp (2736B)
// Boost.Range library // // Copyright Neil Groves 2010. Use, modification and // distribution is subject to 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) // // For more information, see http://www.boost.org/libs/range/ // #ifndef BOOST_RANGE_DETAIL_ANY_ITERATOR_BUFFER_HPP_INCLUDED #define BOOST_RANGE_DETAIL_ANY_ITERATOR_BUFFER_HPP_INCLUDED #include #include #include #include namespace boost { template class any_iterator_buffer : noncopyable { BOOST_STATIC_ASSERT(( StackBufferSize > 0 )); public: any_iterator_buffer() : m_ptr() { } ~any_iterator_buffer() { delete [] m_ptr; } void* allocate(std::size_t bytes) { BOOST_ASSERT( !m_ptr ); if (bytes <= StackBufferSize) return m_buffer.data(); m_ptr = new char[bytes]; return m_ptr; } void deallocate() { delete [] m_ptr; m_ptr = 0; } private: // Rationale: // Do not use inheritance from noncopyable because this causes // the concepts to erroneous detect the derived any_iterator // as noncopyable. any_iterator_buffer(const any_iterator_buffer&); void operator=(const any_iterator_buffer&); char* m_ptr; boost::array m_buffer; }; class any_iterator_heap_only_buffer : noncopyable { public: any_iterator_heap_only_buffer() : m_ptr() { } ~any_iterator_heap_only_buffer() { delete [] m_ptr; } void* allocate(std::size_t bytes) { BOOST_ASSERT( !m_ptr ); m_ptr = new char[bytes]; return m_ptr; } void deallocate() { delete [] m_ptr; m_ptr = 0; } private: char* m_ptr; }; template class any_iterator_stack_only_buffer { BOOST_STATIC_ASSERT(( StackBufferSize > 0 )); public: void* allocate(std::size_t bytes) { BOOST_ASSERT( bytes <= m_buffer.size() ); return m_buffer.data(); } void deallocate() { } private: boost::array m_buffer; }; typedef any_iterator_buffer<64> any_iterator_default_buffer; } // namespace boost #endif // include guard