Boost C++ Libraries Boost.Bimap Home Libraries People FAQ More

PrevUpHomeNext

non_unique_container_helper.hpp

Go to the documentation of this file.
00001 // Boost.Bimap
00002 //
00003 // Copyright (c) 2006-2007 Matias Capeletto
00004 //
00005 // Distributed under the Boost Software License, Version 1.0.
00006 // (See accompanying file LICENSE_1_0.txt or copy at
00007 // http://www.boost.org/LICENSE_1_0.txt)
00008 
00009 /// \file container_adaptor/detail/non_unique_container_helper.hpp
00010 /// \brief Details for non unique containers
00011 
00012 #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_NON_UNIQUE_CONTAINER_HELPER_HPP
00013 #define BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_NON_UNIQUE_CONTAINER_HELPER_HPP
00014 
00015 #if defined(_MSC_VER) && (_MSC_VER>=1200)
00016 #pragma once
00017 #endif
00018 
00019 #include <boost/config.hpp>
00020 
00021 /*****************************************************************************/
00022 #define BOOST_BIMAP_NON_UNIQUE_CONTAINER_ADAPTOR_INSERT_FUNCTIONS             \
00023                                                                               \
00024 template <class InputIterator>                                                \
00025 void insert(InputIterator iterBegin, InputIterator iterEnd)                   \
00026 {                                                                             \
00027     for( ; iterBegin != iterEnd ; ++iterBegin )                               \
00028     {                                                                         \
00029         this->base().insert(                                                  \
00030             this->template functor<                                           \
00031                 BOOST_DEDUCED_TYPENAME base_::value_to_base>()(               \
00032                     BOOST_DEDUCED_TYPENAME base_::value_type(*iterBegin)) );  \
00033     }                                                                         \
00034 }                                                                             \
00035                                                                               \
00036 BOOST_DEDUCED_TYPENAME base_::iterator insert(                                \
00037     BOOST_DEDUCED_TYPENAME ::boost::call_traits<                              \
00038         BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x)             \
00039 {                                                                             \
00040     return this->base().insert( this->template functor<                       \
00041                                    BOOST_DEDUCED_TYPENAME base_::             \
00042                                         value_to_base>()(x) );                \
00043 }                                                                             \
00044                                                                               \
00045 BOOST_DEDUCED_TYPENAME base_::iterator                                        \
00046     insert(BOOST_DEDUCED_TYPENAME base_::iterator pos,                        \
00047                BOOST_DEDUCED_TYPENAME ::boost::call_traits<                   \
00048                     BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \
00049 {                                                                             \
00050     return this->template functor<                                            \
00051         BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()(                  \
00052             this->base().insert(this->template functor<                       \
00053                 BOOST_DEDUCED_TYPENAME base_::iterator_to_base>()(pos),       \
00054             this->template functor<                                           \
00055                 BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x))            \
00056     );                                                                        \
00057 }
00058 /*****************************************************************************/
00059 
00060 #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_NON_UNIQUE_CONTAINER_HELPER_HPP
00061 
00062 
Copyright 2006 Matias Capeletto

PrevUpHomeNext