// Boost.Bimap // // Copyright (c) 2006-2007 Matias Capeletto // // 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) /// \file detail/non_unique_views_helper.hpp /// \brief Details for non unique views #ifndef BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP #define BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP #if defined(_MSC_VER) && (_MSC_VER>=1200) #pragma once #endif #include /*===========================================================================*/ #define BOOST_BIMAP_NON_UNIQUE_VIEW_INSERT_FUNCTIONS \ \ template \ void insert(InputIterator iterBegin, InputIterator iterEnd) \ { \ for( ; iterBegin != iterEnd ; ++iterBegin ) \ { \ this->base().insert( \ this->template functor< \ BOOST_DEDUCED_TYPENAME base_::value_to_base>()( \ BOOST_DEDUCED_TYPENAME base_::value_type(*iterBegin)) ); \ } \ } \ \ std::pair insert( \ BOOST_DEDUCED_TYPENAME ::boost::call_traits< \ BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \ { \ typedef BOOST_DEDUCED_TYPENAME base_::base_type::iterator base_iterator; \ \ std::pair< base_iterator, bool > r( \ this->base().insert( \ this->template functor< \ BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x) ) \ ); \ \ return std::pair( \ this->template functor< \ BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()(r.first), \ r.second \ ); \ } \ \ BOOST_DEDUCED_TYPENAME base_::iterator insert( \ BOOST_DEDUCED_TYPENAME base_::iterator pos, \ BOOST_DEDUCED_TYPENAME ::boost::call_traits< \ BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \ { \ return this->template functor< \ BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( \ this->base().insert( \ this->template functor< \ BOOST_DEDUCED_TYPENAME base_::iterator_to_base>()(pos), \ this->template functor< \ BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x)) \ ); \ } /*===========================================================================*/ #endif // BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP