Chris@16: // Boost.Bimap Chris@16: // Chris@16: // Copyright (c) 2006-2007 Matias Capeletto Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: /// \file detail/non_unique_views_helper.hpp Chris@16: /// \brief Details for non unique views Chris@16: Chris@16: #ifndef BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP Chris@16: #define BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP Chris@16: Chris@101: #if defined(_MSC_VER) Chris@16: #pragma once Chris@16: #endif Chris@16: Chris@16: #include Chris@16: Chris@16: /*===========================================================================*/ Chris@16: #define BOOST_BIMAP_NON_UNIQUE_VIEW_INSERT_FUNCTIONS \ Chris@16: \ Chris@16: template \ Chris@16: void insert(InputIterator iterBegin, InputIterator iterEnd) \ Chris@16: { \ Chris@16: for( ; iterBegin != iterEnd ; ++iterBegin ) \ Chris@16: { \ Chris@16: this->base().insert( \ Chris@16: this->template functor< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::value_to_base>()( \ Chris@16: BOOST_DEDUCED_TYPENAME base_::value_type(*iterBegin)) ); \ Chris@16: } \ Chris@16: } \ Chris@16: \ Chris@16: std::pair insert( \ Chris@16: BOOST_DEDUCED_TYPENAME ::boost::call_traits< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \ Chris@16: { \ Chris@16: typedef BOOST_DEDUCED_TYPENAME base_::base_type::iterator base_iterator; \ Chris@16: \ Chris@16: std::pair< base_iterator, bool > r( \ Chris@16: this->base().insert( \ Chris@16: this->template functor< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x) ) \ Chris@16: ); \ Chris@16: \ Chris@16: return std::pair( \ Chris@16: this->template functor< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()(r.first), \ Chris@16: r.second \ Chris@16: ); \ Chris@16: } \ Chris@16: \ Chris@16: BOOST_DEDUCED_TYPENAME base_::iterator insert( \ Chris@16: BOOST_DEDUCED_TYPENAME base_::iterator pos, \ Chris@16: BOOST_DEDUCED_TYPENAME ::boost::call_traits< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \ Chris@16: { \ Chris@16: return this->template functor< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( \ Chris@16: this->base().insert( \ Chris@16: this->template functor< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::iterator_to_base>()(pos), \ Chris@16: this->template functor< \ Chris@16: BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x)) \ Chris@16: ); \ Chris@16: } Chris@16: /*===========================================================================*/ Chris@16: Chris@16: #endif // BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP