non_unique_container_helper.hpp 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. /// \file container_adaptor/detail/non_unique_container_helper.hpp
  9. /// \brief Details for non unique containers
  10. #ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_NON_UNIQUE_CONTAINER_HELPER_HPP
  11. #define BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_NON_UNIQUE_CONTAINER_HELPER_HPP
  12. #if defined(_MSC_VER)
  13. #pragma once
  14. #endif
  15. #include <boost/config.hpp>
  16. /*****************************************************************************/
  17. #define BOOST_BIMAP_NON_UNIQUE_CONTAINER_ADAPTOR_INSERT_FUNCTIONS \
  18. \
  19. template <class InputIterator> \
  20. void insert(InputIterator iterBegin, InputIterator iterEnd) \
  21. { \
  22. for( ; iterBegin != iterEnd ; ++iterBegin ) \
  23. { \
  24. this->base().insert( \
  25. this->template functor< \
  26. BOOST_DEDUCED_TYPENAME base_::value_to_base>()( \
  27. BOOST_DEDUCED_TYPENAME base_::value_type(*iterBegin)) ); \
  28. } \
  29. } \
  30. \
  31. BOOST_DEDUCED_TYPENAME base_::iterator insert( \
  32. BOOST_DEDUCED_TYPENAME ::boost::call_traits< \
  33. BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \
  34. { \
  35. return this->base().insert( this->template functor< \
  36. BOOST_DEDUCED_TYPENAME base_:: \
  37. value_to_base>()(x) ); \
  38. } \
  39. \
  40. BOOST_DEDUCED_TYPENAME base_::iterator \
  41. insert(BOOST_DEDUCED_TYPENAME base_::iterator pos, \
  42. BOOST_DEDUCED_TYPENAME ::boost::call_traits< \
  43. BOOST_DEDUCED_TYPENAME base_::value_type >::param_type x) \
  44. { \
  45. return this->template functor< \
  46. BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( \
  47. this->base().insert(this->template functor< \
  48. BOOST_DEDUCED_TYPENAME base_::iterator_to_base>()(pos), \
  49. this->template functor< \
  50. BOOST_DEDUCED_TYPENAME base_::value_to_base>()(x)) \
  51. ); \
  52. }
  53. /*****************************************************************************/
  54. #endif // BOOST_BIMAP_CONTAINER_ADAPTOR_DETAIL_NON_UNIQUE_CONTAINER_HELPER_HPP