Add Boost.Test karmic valgrind suppressions
[senf.git] / boost / bimap / detail / non_unique_views_helper.hpp
1 // Boost.Bimap
2 //
3 // Copyright (c) 2006-2007 Matias Capeletto
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8
9 /// \file detail/non_unique_views_helper.hpp
10 /// \brief Details for non unique views
11
12 #ifndef BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP
13 #define BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP
14
15 #if defined(_MSC_VER) && (_MSC_VER>=1200)
16 #pragma once
17 #endif
18
19 #include <boost/config.hpp>
20
21 /*===========================================================================*/
22 #define BOOST_BIMAP_NON_UNIQUE_VIEW_INSERT_FUNCTIONS                         \
23                                                                              \
24 template <class InputIterator>                                               \
25 void insert(InputIterator iterBegin, InputIterator iterEnd)                  \
26 {                                                                            \
27     for( ; iterBegin != iterEnd ; ++iterBegin )                              \
28     {                                                                        \
29         this->base().insert(                                                 \
30             this->template functor<                                          \
31                 BOOST_DEDUCED_TYPENAME base_::value_to_base>()(              \
32                     BOOST_DEDUCED_TYPENAME base_::value_type(*iterBegin)) ); \
33     }                                                                        \
34 }                                                                            \
35                                                                              \
36 std::pair<BOOST_DEDUCED_TYPENAME base_::iterator, bool> insert(              \
37     BOOST_DEDUCED_TYPENAME ::boost::call_traits<                             \
38         BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x)            \
39 {                                                                            \
40     typedef BOOST_DEDUCED_TYPENAME base_::base_type::iterator base_iterator; \
41                                                                              \
42     std::pair< base_iterator, bool > r(                                      \
43         this->base().insert(                                                 \
44             this->template functor<                                          \
45                 BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x) )          \
46     );                                                                       \
47                                                                              \
48     return std::pair<typename base_::iterator, bool>(                        \
49         this->template functor<                                              \
50             BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()(r.first),    \
51             r.second                                                         \
52     );                                                                       \
53 }                                                                            \
54                                                                              \
55 BOOST_DEDUCED_TYPENAME base_::iterator insert(                               \
56     BOOST_DEDUCED_TYPENAME base_::iterator pos,                              \
57         BOOST_DEDUCED_TYPENAME ::boost::call_traits<                         \
58             BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x)        \
59 {                                                                            \
60     return this->template functor<                                           \
61         BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()(                 \
62             this->base().insert(                                             \
63                 this->template functor<                                      \
64                     BOOST_DEDUCED_TYPENAME base_::iterator_to_base>()(pos),  \
65             this->template functor<                                          \
66                 BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x))           \
67     );                                                                       \
68 }
69 /*===========================================================================*/
70
71 #endif // BOOST_BIMAP_DETAIL_NON_UNIQUE_VIEWS_HELPER_HPP