bs_test_common.hpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // (C) Copyright Ion Gaztanaga 2015-2015.
  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. // See http://www.boost.org/libs/intrusive for documentation.
  10. //
  11. /////////////////////////////////////////////////////////////////////////////
  12. #ifndef BOOST_INTRUSIVE_TEST_BS_TEST_COMMON_HPP
  13. #define BOOST_INTRUSIVE_TEST_BS_TEST_COMMON_HPP
  14. #include <boost/intrusive/bs_set_hook.hpp>
  15. #include <boost/intrusive/detail/mpl.hpp>
  16. #include "bptr_value.hpp"
  17. #include "test_common.hpp"
  18. namespace boost {
  19. namespace intrusive {
  20. template<class VoidPointer>
  21. struct bs_hooks
  22. {
  23. typedef bs_set_base_hook<void_pointer<VoidPointer> > base_hook_type;
  24. typedef bs_set_base_hook
  25. <link_mode<auto_unlink>
  26. , void_pointer<VoidPointer>
  27. , tag<void> > auto_base_hook_type;
  28. typedef bs_set_member_hook
  29. <void_pointer<VoidPointer> > member_hook_type;
  30. typedef bs_set_member_hook
  31. < link_mode<auto_unlink>
  32. , void_pointer<VoidPointer> > auto_member_hook_type;
  33. typedef nonhook_node_member< tree_node_traits<VoidPointer>,
  34. bstree_algorithms
  35. > nonhook_node_member_type;
  36. };
  37. template < class ValueTraits, bool DefaultHolder, bool Map >
  38. struct tree_rebinder_common
  39. {
  40. typedef typename ValueTraits::value_type value_type;
  41. typedef typename detail::if_c
  42. < DefaultHolder
  43. , typename detail::if_c
  44. < detail::is_same<value_type, BPtr_Value>::value
  45. , header_holder_type< bounded_pointer_holder< BPtr_Value > >
  46. , void
  47. >::type
  48. , header_holder_type< heap_node_holder< typename ValueTraits::node_ptr > >
  49. >::type holder_opt;
  50. typedef typename detail::if_c
  51. < Map, key_of_value<int_holder_key_of_value<value_type> >, void
  52. >::type key_of_value_opt;
  53. typedef typename detail::if_c
  54. < Map, priority_of_value<int_priority_of_value<value_type> >, void
  55. >::type prio_of_value_opt;
  56. };
  57. } //namespace intrusive {
  58. } //namespace boost {
  59. #endif //BOOST_INTRUSIVE_TEST_BS_TEST_COMMON_HPP