| // 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 <boost/config.hpp> |
| |
| /*===========================================================================*/ |
| #define BOOST_BIMAP_NON_UNIQUE_VIEW_INSERT_FUNCTIONS \ |
| \ |
| template <class InputIterator> \ |
| 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<BOOST_DEDUCED_TYPENAME base_::iterator, bool> 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<typename base_::iterator, bool>( \ |
| 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 |