diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/stdapis/boost/ptr_container/detail/map_iterator.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/stdapis/boost/ptr_container/detail/map_iterator.hpp Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,87 @@ +// +// Boost.Pointer Container +// +// Copyright Thorsten Ottosen 2003-2005. 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/ptr_container/ +// + +#ifndef BOOST_PTR_CONTAINER_MAP_ITERATOR_HPP +#define BOOST_PTR_CONTAINER_MAP_ITERATOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include +#include +#include + +namespace boost +{ + namespace ptr_container_detail + { + template< class F, class S > + struct ref_pair + { + typedef F first_type; + typedef S second_type; + + const F& first; + S second; + + template< class F2, class S2 > + ref_pair( const std::pair& p ) + : first(p.first), second(static_cast(p.second)) + { } + + template< class RP > + ref_pair( const RP* rp ) + : first(rp->first), second(rp->second) + { } + + const ref_pair* const operator->() const + { + return this; + } + }; + } + + template< + class I, // base iterator + class F, // first type, key type + class S // second type, mapped type + > + class ptr_map_iterator : + public boost::iterator_adaptor< ptr_map_iterator, I, + ptr_container_detail::ref_pair, + use_default, + ptr_container_detail::ref_pair > + { + typedef boost::iterator_adaptor< ptr_map_iterator, I, + ptr_container_detail::ref_pair, + use_default, + ptr_container_detail::ref_pair > + base_type; + + + public: + ptr_map_iterator() : base_type() + { } + + explicit ptr_map_iterator( const I& i ) : base_type(i) + { } + + template< class I2, class F2, class S2 > + ptr_map_iterator( const ptr_map_iterator& r ) + : base_type(r.base()) + { } + + }; // class 'ptr_map_iterator' + +} + +#endif