passenger 5.1.4 → 5.1.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (542) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +9 -0
  3. data/CHANGELOG +9 -0
  4. data/build/cxx_tests.rb +11 -1
  5. data/build/documentation.rb +0 -32
  6. data/build/support/cxx_dependency_map.rb +602 -2
  7. data/build/test_basics.rb +3 -3
  8. data/dev/boost-patches/0001-Patch-boost-thread-so-that-oxt-thread-can-use-it.patch +48 -0
  9. data/dev/boost-patches/0002-Make-boost-thread_interrupted-derive-from-oxt-tracab.patch +33 -0
  10. data/dev/boost-patches/0003-Disable-a-Clang-pragma-to-prevent-warnings-on-OS-X.patch +25 -0
  11. data/dev/ci/README.md +121 -0
  12. data/dev/ci/lib/functions.sh +129 -0
  13. data/dev/ci/lib/set-container-envvars.sh +46 -0
  14. data/dev/ci/lib/setup-container.sh +43 -0
  15. data/dev/ci/run-tests-natively +24 -0
  16. data/dev/ci/run-tests-with-docker +42 -0
  17. data/dev/ci/scripts/debug-console-wrapper.sh +27 -0
  18. data/dev/ci/scripts/docker-entrypoint-stage2.sh +17 -0
  19. data/dev/ci/scripts/docker-entrypoint.sh +17 -0
  20. data/dev/ci/scripts/inituidgid +17 -0
  21. data/dev/ci/scripts/run-tests-natively-stage2.sh +17 -0
  22. data/dev/ci/scripts/setup-host-natively.sh +11 -0
  23. data/dev/ci/setup-host +50 -0
  24. data/dev/ci/tests/apache2/run +6 -0
  25. data/dev/ci/tests/apache2/setup +4 -0
  26. data/dev/ci/tests/cxx/run +9 -0
  27. data/dev/ci/tests/cxx/setup +4 -0
  28. data/dev/ci/tests/nginx-dynamic/run +20 -0
  29. data/dev/ci/tests/nginx-dynamic/setup +4 -0
  30. data/dev/ci/tests/nginx/run +5 -0
  31. data/dev/ci/tests/nginx/setup +4 -0
  32. data/dev/ci/tests/nodejs/run +4 -0
  33. data/dev/ci/tests/nodejs/setup +4 -0
  34. data/dev/ci/tests/ruby/run +4 -0
  35. data/dev/ci/tests/ruby/setup +4 -0
  36. data/dev/ci/tests/source-packaging/run +4 -0
  37. data/dev/ci/tests/source-packaging/setup +4 -0
  38. data/dev/ci/tests/standalone/run +4 -0
  39. data/dev/ci/tests/standalone/setup +4 -0
  40. data/dev/copy_boost_headers +8 -2
  41. data/src/agent/Core/ApiServer.h +11 -5
  42. data/src/agent/Core/Controller.h +12 -46
  43. data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
  44. data/src/agent/Core/Controller/Config.h +369 -0
  45. data/src/agent/Core/Controller/ForwardResponse.cpp +4 -4
  46. data/src/agent/Core/Controller/Hooks.cpp +15 -3
  47. data/src/agent/Core/Controller/Implementation.cpp +1 -1
  48. data/src/agent/Core/Controller/InitRequest.cpp +28 -39
  49. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +25 -60
  50. data/src/agent/Core/Controller/InternalUtils.cpp +0 -16
  51. data/src/agent/Core/Controller/Miscellaneous.cpp +0 -17
  52. data/src/agent/Core/Controller/Request.h +2 -0
  53. data/src/agent/Core/Controller/SendRequest.cpp +4 -4
  54. data/src/agent/Core/Controller/{StateInspectionAndConfiguration.cpp → StateInspection.cpp} +0 -22
  55. data/src/agent/Core/Controller/TurboCaching.h +11 -10
  56. data/src/agent/Core/CoreMain.cpp +16 -6
  57. data/src/agent/Core/ResponseCache.h +3 -3
  58. data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -3
  59. data/src/agent/Core/SpawningKit/Spawner.h +7 -3
  60. data/src/agent/UstRouter/ApiServer.h +3 -2
  61. data/src/agent/UstRouter/Controller.h +66 -32
  62. data/src/agent/UstRouter/UstRouterMain.cpp +10 -2
  63. data/src/agent/Watchdog/ApiServer.h +3 -2
  64. data/src/agent/Watchdog/WatchdogMain.cpp +3 -1
  65. data/src/apache2_module/ConfigurationCommands.cpp +1 -1
  66. data/src/cxx_supportlib/ConfigKit/Common.h +125 -0
  67. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +34 -0
  68. data/src/cxx_supportlib/ConfigKit/README.md +895 -0
  69. data/src/cxx_supportlib/ConfigKit/Schema.h +331 -0
  70. data/src/cxx_supportlib/ConfigKit/Store.h +385 -0
  71. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +185 -0
  72. data/src/cxx_supportlib/ConfigKit/Utils.h +141 -0
  73. data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +81 -0
  74. data/src/cxx_supportlib/Constants.h +1 -1
  75. data/src/cxx_supportlib/Crypto.cpp +2 -2
  76. data/src/cxx_supportlib/Logging.h +0 -35
  77. data/src/cxx_supportlib/ServerKit/HttpServer.h +35 -16
  78. data/src/cxx_supportlib/ServerKit/Server.h +65 -25
  79. data/src/cxx_supportlib/oxt/macros.hpp +3 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +0 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +53 -42
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +11 -5
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +13 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +23 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +5 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +3 -2
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +8 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +3 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +2 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +2 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +5 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +2 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +6 -4
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +2 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +3 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +28 -17
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +2 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +2 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +9 -4
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +3 -3
  101. data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +10 -3
  102. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +90 -18
  103. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +2 -2
  104. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +2 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +35 -6
  108. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +2 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/compaq_cxx.hpp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +3 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +19 -4
  115. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +3 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +29 -7
  119. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +16 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +2 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sgi_mipspro.hpp +1 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +44 -16
  129. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  130. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +1 -2
  131. data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +21 -21
  133. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +42 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +7 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +40 -7
  136. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +39 -6
  137. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +7 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +7 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +7 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +8 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +7 -0
  142. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +7 -0
  143. data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +33 -4
  144. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +0 -2
  145. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +0 -3
  146. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -27
  147. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +62 -26
  148. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +4 -4
  150. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +4 -4
  151. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +2 -0
  152. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +39 -5
  153. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +49 -32
  154. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +175 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +223 -98
  156. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +57 -0
  157. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -41
  158. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +7 -8
  159. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +45 -18
  161. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +205 -26
  162. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +290 -181
  163. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +24 -19
  165. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +38 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +320 -46
  167. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +91 -18
  168. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -19
  169. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +491 -120
  170. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +4 -4
  171. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +0 -3
  172. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +399 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +2 -0
  174. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +2 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -0
  179. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +2 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +2 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +2 -0
  182. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +2 -0
  183. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +2 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +101 -20
  185. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +19 -14
  186. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +117 -59
  187. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -6
  188. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +33 -28
  189. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +414 -70
  190. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +1 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +2 -2
  192. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +134 -117
  193. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +202 -99
  194. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +8 -10
  195. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +217 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +29 -27
  197. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +5 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +13 -13
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +3 -3
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +2 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -3
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +6 -5
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +8 -7
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +2 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +2 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -3
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +3 -2
  209. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +2 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +4 -3
  211. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +27 -7
  212. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +5 -5
  213. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +5 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +4 -4
  215. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +4 -5
  216. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +2 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +5 -4
  218. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +4 -3
  219. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +3 -2
  220. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +2 -2
  222. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +5 -4
  223. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +6 -5
  224. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +2 -2
  226. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +5 -4
  227. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +2 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +3 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +13 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +1 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +5 -0
  232. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +11 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +17 -0
  234. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +25 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +2 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +114 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +116 -142
  238. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +57 -69
  239. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +3 -3
  241. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +27 -13
  242. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -12
  244. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +4 -2
  245. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +35 -4
  246. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +37 -6
  247. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +95 -8
  248. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +4 -2
  249. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +209 -72
  250. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +86 -20
  251. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +11 -11
  252. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +6 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +4 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +58 -45
  255. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +27 -26
  256. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +2 -2
  257. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  258. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +8 -3
  259. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +4 -3
  260. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -26
  261. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +3 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +4 -2
  263. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +9 -7
  264. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +83 -57
  265. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +30 -30
  266. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +9 -8
  267. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +8 -7
  268. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -15
  269. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +70 -44
  270. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +22 -21
  271. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +7 -6
  272. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
  273. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +29 -28
  274. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +33 -12
  275. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +19 -12
  276. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +21 -20
  277. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +4 -3
  278. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +3 -2
  279. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +23 -22
  280. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -22
  281. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +10 -9
  282. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +103 -29
  283. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +15 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +295 -211
  285. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +2 -2
  286. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +20 -7
  287. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +4 -2
  288. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +5 -4
  289. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +4 -4
  290. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +3 -2
  291. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
  292. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +4 -4
  293. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +22 -4
  294. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +36 -4
  295. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +43 -13
  296. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +95 -8
  297. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +4 -2
  298. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +96 -12
  299. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +102 -5
  300. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +48 -4
  301. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +20 -11
  302. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +9 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +95 -8
  304. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +36 -4
  305. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +167 -23
  307. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +28 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +100 -46
  309. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +5 -4
  310. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -27
  311. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +30 -14
  312. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +35 -36
  314. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +6 -28
  315. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +20 -5
  316. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +4 -2
  317. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +5 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +11 -7
  320. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +1 -3
  321. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +5 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +11 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +10 -2
  324. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +40 -7
  325. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +67 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +63 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +2437 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +121 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +127 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +637 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +139 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +155 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -116
  334. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +14 -13
  335. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +17 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +2 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +67 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +227 -32
  339. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +4 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +30 -9
  341. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +12 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +84 -80
  343. data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +30 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +171 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +14 -20
  346. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +14 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +32 -33
  349. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +2 -1
  350. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +49 -49
  351. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +8 -7
  352. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +17 -16
  353. data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +3 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
  355. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +2 -3
  356. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +197 -255
  357. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +1059 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +75 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +116 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +36 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +253 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +196 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +117 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +372 -554
  365. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +12 -1
  366. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +15 -7
  367. data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +24 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +9 -2
  369. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +15 -1
  370. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +16 -4
  371. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +3 -3
  372. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +4 -4
  373. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +1 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +2 -2
  376. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +20 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/cat.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +6 -6
  379. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +5 -6
  380. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/to_list.hpp +12 -0
  382. data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +4 -4
  383. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +0 -5
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +16 -16
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +4 -4
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +3 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +102 -87
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +45 -21
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +2 -2
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +14 -2
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +46 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +5 -2
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +5 -14
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +116 -13
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +34 -0
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +2 -2
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -0
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -2
  403. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1004 -159
  404. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +9 -0
  405. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +3 -0
  406. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +4 -58
  407. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +5 -2
  408. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +9 -0
  409. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -8
  410. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +3 -3
  411. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +30 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +3 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +5 -4
  414. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +28 -3
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +187 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +52 -144
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +120 -450
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +2 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +2 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +7 -6
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +70 -8
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +6 -5
  423. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +9 -8
  424. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +3 -3
  425. data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +5 -4
  426. data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +0 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +0 -11
  428. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +6 -4
  429. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
  430. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +11 -4
  431. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +8 -8
  432. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +5 -5
  434. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +22 -18
  435. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +163 -55
  436. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +1 -0
  437. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +9 -9
  439. data/src/cxx_supportlib/vendor-modified/boost/thread/locks.hpp +1 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +6 -7
  441. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +17 -2
  442. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +2 -2
  443. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +5 -5
  444. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +29 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +23 -18
  446. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +6 -6
  447. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_functors.hpp +19 -4
  448. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +3 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +265 -0
  451. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +272 -0
  452. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +300 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +3 -3
  454. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +6 -6
  455. data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +1 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +9 -3
  457. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +3 -3
  458. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +1 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +2 -1
  460. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +2 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +2 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +1 -0
  464. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +1 -1
  465. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +1 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +1 -0
  468. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +1 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +1 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +2 -1
  471. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +21 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -1
  475. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +1 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +1 -1
  477. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +1 -1
  478. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +2 -1
  479. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +52 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +1 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  482. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  483. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  484. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +1 -1
  486. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
  488. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +40 -6
  489. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4986 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +107 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +105 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +1814 -1255
  493. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -45
  494. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1498 -1161
  495. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -44
  496. data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +2 -2
  497. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +7 -6
  498. data/src/cxx_supportlib/vendor-modified/boost/utility/compare_pointees.hpp +10 -2
  499. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +39 -22
  500. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +690 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view_fwd.hpp +39 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  503. data/src/helper-scripts/crash-watch.rb +3 -0
  504. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  505. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -0
  506. data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -12
  507. metadata +77 -38
  508. data/dev/ci/inituidgid +0 -24
  509. data/dev/ci/run_jenkins.sh +0 -70
  510. data/dev/ci/run_travis.sh +0 -314
  511. data/doc/Design and Architecture.html +0 -2421
  512. data/doc/Design and Architecture.txt +0 -511
  513. data/doc/Security of user switching support.html +0 -1833
  514. data/doc/Users guide Apache.html +0 -3101
  515. data/doc/Users guide Apache.idmap.txt +0 -451
  516. data/doc/Users guide Apache.txt +0 -534
  517. data/doc/Users guide Nginx.html +0 -3026
  518. data/doc/Users guide Nginx.idmap.txt +0 -431
  519. data/doc/Users guide Nginx.txt +0 -451
  520. data/doc/Users guide Standalone.html +0 -2092
  521. data/doc/Users guide Standalone.idmap.txt +0 -137
  522. data/doc/Users guide Standalone.txt +0 -81
  523. data/doc/Users guide.html +0 -1606
  524. data/doc/Users guide.txt +0 -8
  525. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -20
  526. data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +0 -29
  527. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +0 -40
  528. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -22
  529. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -29
  530. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -383
  531. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +0 -318
  532. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +0 -67
  533. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +0 -60
  534. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +0 -214
  535. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +0 -34
  536. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +0 -1128
  537. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +0 -928
  538. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +0 -686
  539. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +0 -188
  540. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +0 -873
  541. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +0 -628
  542. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +0 -266
@@ -50,7 +50,8 @@ struct make_slist_base_hook
50
50
  >::type packed_options;
51
51
 
52
52
  typedef generic_hook
53
- < circular_slist_algorithms<slist_node_traits<typename packed_options::void_pointer> >
53
+ < CircularSListAlgorithms
54
+ , slist_node_traits<typename packed_options::void_pointer>
54
55
  , typename packed_options::tag
55
56
  , packed_options::link_mode
56
57
  , SlistBaseHookId
@@ -178,7 +179,8 @@ struct make_slist_member_hook
178
179
  >::type packed_options;
179
180
 
180
181
  typedef generic_hook
181
- < circular_slist_algorithms<slist_node_traits<typename packed_options::void_pointer> >
182
+ < CircularSListAlgorithms
183
+ , slist_node_traits<typename packed_options::void_pointer>
182
184
  , member_tag
183
185
  , packed_options::link_mode
184
186
  , NoBaseHookId
@@ -270,6 +272,11 @@ class slist_member_hook
270
272
  //! otherwise. This function can be used to test whether \c slist::iterator_to
271
273
  //! will return a valid iterator.
272
274
  //!
275
+ //! <b>Note</b>: If this member is called when the value is inserted in a
276
+ //! slist with the option linear<true>, this function will return "false"
277
+ //! for the last element, as it is not linked to anything (the next element is null),
278
+ //! so use with care.
279
+ //!
273
280
  //! <b>Complexity</b>: Constant
274
281
  bool is_linked() const;
275
282
 
@@ -23,6 +23,11 @@
23
23
  # pragma once
24
24
  #endif
25
25
 
26
+ #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
27
+ template<class ValueTraits, class VoidOrKeyOfValue, class Compare, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
28
+ class splay_multiset_impl;
29
+ #endif
30
+
26
31
  namespace boost {
27
32
  namespace intrusive {
28
33
 
@@ -81,9 +86,13 @@ class splay_set_impl
81
86
  static const bool constant_time_size = tree_type::constant_time_size;
82
87
 
83
88
  public:
89
+ //! @copydoc ::boost::intrusive::splaytree::splaytree()
90
+ splay_set_impl()
91
+ : tree_type()
92
+ {}
93
+
84
94
  //! @copydoc ::boost::intrusive::splaytree::splaytree(const key_compare &,const value_traits &)
85
- explicit splay_set_impl( const key_compare &cmp = key_compare()
86
- , const value_traits &v_traits = value_traits())
95
+ explicit splay_set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
87
96
  : tree_type(cmp, v_traits)
88
97
  {}
89
98
 
@@ -144,6 +153,15 @@ class splay_set_impl
144
153
  //! @copydoc ::boost::intrusive::splaytree::crend()const
145
154
  const_reverse_iterator crend() const;
146
155
 
156
+ //! @copydoc ::boost::intrusive::splaytree::root()
157
+ iterator root();
158
+
159
+ //! @copydoc ::boost::intrusive::splaytree::root()const
160
+ const_iterator root() const;
161
+
162
+ //! @copydoc ::boost::intrusive::splaytree::croot()const
163
+ const_iterator croot() const;
164
+
147
165
  //! @copydoc ::boost::intrusive::splaytree::container_from_end_iterator(iterator)
148
166
  static splay_set_impl &container_from_end_iterator(iterator end_iterator);
149
167
 
@@ -194,6 +212,17 @@ class splay_set_impl
194
212
  iterator insert(const_iterator hint, reference value)
195
213
  { return tree_type::insert_unique(hint, value); }
196
214
 
215
+ //! @copydoc ::boost::intrusive::rbtree::insert_unique_check(const key_type&,insert_commit_data&)
216
+ std::pair<iterator, bool> insert_check
217
+ (const key_type &key, insert_commit_data &commit_data)
218
+ { return tree_type::insert_unique_check(key, commit_data); }
219
+
220
+ //! @copydoc ::boost::intrusive::rbtree::insert_unique_check(const_iterator,const key_type&,insert_commit_data&)
221
+ std::pair<iterator, bool> insert_check
222
+ (const_iterator hint, const key_type &key
223
+ ,insert_commit_data &commit_data)
224
+ { return tree_type::insert_unique_check(hint, key, commit_data); }
225
+
197
226
  //! @copydoc ::boost::intrusive::splaytree::insert_unique_check(const KeyType&,KeyTypeKeyCompare,insert_commit_data&)
198
227
  template<class KeyType, class KeyTypeKeyCompare>
199
228
  std::pair<iterator, bool> insert_check
@@ -405,6 +434,26 @@ class splay_set_impl
405
434
 
406
435
  //! @copydoc ::boost::intrusive::splaytree::rebalance_subtree
407
436
  iterator rebalance_subtree(iterator root);
437
+
438
+ //! @copydoc ::boost::intrusive::splaytree::merge_unique
439
+ template<class ...Options2>
440
+ void merge(splay_set<T, Options2...> &source);
441
+
442
+ //! @copydoc ::boost::intrusive::splaytree::merge_unique
443
+ template<class ...Options2>
444
+ void merge(splay_multiset<T, Options2...> &source);
445
+
446
+ #else
447
+
448
+ template<class Compare2>
449
+ void merge(splay_set_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
450
+ { return tree_type::merge_unique(source); }
451
+
452
+
453
+ template<class Compare2>
454
+ void merge(splay_multiset_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
455
+ { return tree_type::merge_unique(source); }
456
+
408
457
  #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
409
458
  };
410
459
 
@@ -497,8 +546,11 @@ class splay_set
497
546
  //Assert if passed value traits are compatible with the type
498
547
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
499
548
 
500
- explicit splay_set( const key_compare &cmp = key_compare()
501
- , const value_traits &v_traits = value_traits())
549
+ splay_set()
550
+ : Base()
551
+ {}
552
+
553
+ explicit splay_set( const key_compare &cmp, const value_traits &v_traits = value_traits())
502
554
  : Base(cmp, v_traits)
503
555
  {}
504
556
 
@@ -594,9 +646,13 @@ class splay_multiset_impl
594
646
  static const bool constant_time_size = tree_type::constant_time_size;
595
647
 
596
648
  public:
649
+ //! @copydoc ::boost::intrusive::splaytree::splaytree()
650
+ splay_multiset_impl()
651
+ : tree_type()
652
+ {}
653
+
597
654
  //! @copydoc ::boost::intrusive::splaytree::splaytree(const key_compare &,const value_traits &)
598
- explicit splay_multiset_impl( const key_compare &cmp = key_compare()
599
- , const value_traits &v_traits = value_traits())
655
+ explicit splay_multiset_impl(const key_compare &cmp, const value_traits &v_traits = value_traits())
600
656
  : tree_type(cmp, v_traits)
601
657
  {}
602
658
 
@@ -657,6 +713,15 @@ class splay_multiset_impl
657
713
  //! @copydoc ::boost::intrusive::splaytree::crend()const
658
714
  const_reverse_iterator crend() const;
659
715
 
716
+ //! @copydoc ::boost::intrusive::splaytree::root()
717
+ iterator root();
718
+
719
+ //! @copydoc ::boost::intrusive::splaytree::root()const
720
+ const_iterator root() const;
721
+
722
+ //! @copydoc ::boost::intrusive::splaytree::croot()const
723
+ const_iterator croot() const;
724
+
660
725
  //! @copydoc ::boost::intrusive::splaytree::container_from_end_iterator(iterator)
661
726
  static splay_multiset_impl &container_from_end_iterator(iterator end_iterator);
662
727
 
@@ -880,6 +945,25 @@ class splay_multiset_impl
880
945
 
881
946
  //! @copydoc ::boost::intrusive::splaytree::rebalance_subtree
882
947
  iterator rebalance_subtree(iterator root);
948
+
949
+ //! @copydoc ::boost::intrusive::splaytree::merge_equal
950
+ template<class ...Options2>
951
+ void merge(splay_multiset<T, Options2...> &source);
952
+
953
+ //! @copydoc ::boost::intrusive::splaytree::merge_equal
954
+ template<class ...Options2>
955
+ void merge(splay_set<T, Options2...> &source);
956
+
957
+ #else
958
+
959
+ template<class Compare2>
960
+ void merge(splay_multiset_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
961
+ { return tree_type::merge_equal(source); }
962
+
963
+ template<class Compare2>
964
+ void merge(splay_set_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
965
+ { return tree_type::merge_equal(source); }
966
+
883
967
  #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
884
968
  };
885
969
 
@@ -973,8 +1057,11 @@ class splay_multiset
973
1057
  //Assert if passed value traits are compatible with the type
974
1058
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
975
1059
 
976
- explicit splay_multiset( const key_compare &cmp = key_compare()
977
- , const value_traits &v_traits = value_traits())
1060
+ splay_multiset()
1061
+ : Base()
1062
+ {}
1063
+
1064
+ explicit splay_multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
978
1065
  : Base(cmp, v_traits)
979
1066
  {}
980
1067
 
@@ -111,9 +111,13 @@ class splaytree_impl
111
111
 
112
112
  typedef typename implementation_defined::insert_commit_data insert_commit_data;
113
113
 
114
+ //! @copydoc ::boost::intrusive::bstree::bstree()
115
+ splaytree_impl()
116
+ : tree_type()
117
+ {}
118
+
114
119
  //! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
115
- explicit splaytree_impl( const key_compare &cmp = key_compare()
116
- , const value_traits &v_traits = value_traits())
120
+ explicit splaytree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
117
121
  : tree_type(cmp, v_traits)
118
122
  {}
119
123
 
@@ -179,6 +183,15 @@ class splaytree_impl
179
183
  //! @copydoc ::boost::intrusive::bstree::crend()const
180
184
  const_reverse_iterator crend() const;
181
185
 
186
+ //! @copydoc ::boost::intrusive::bstree::root()
187
+ iterator root();
188
+
189
+ //! @copydoc ::boost::intrusive::bstree::root()const
190
+ const_iterator root() const;
191
+
192
+ //! @copydoc ::boost::intrusive::bstree::croot()const
193
+ const_iterator croot() const;
194
+
182
195
  //! @copydoc ::boost::intrusive::bstree::container_from_end_iterator(iterator)
183
196
  static splaytree_impl &container_from_end_iterator(iterator end_iterator);
184
197
 
@@ -240,6 +253,14 @@ class splaytree_impl
240
253
  //! @copydoc ::boost::intrusive::bstree::insert_unique(const_iterator,reference)
241
254
  iterator insert_unique(const_iterator hint, reference value);
242
255
 
256
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const key_type&,insert_commit_data&)
257
+ std::pair<iterator, bool> insert_unique_check
258
+ (const key_type &key, insert_commit_data &commit_data);
259
+
260
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const_iterator,const key_type&,insert_commit_data&)
261
+ std::pair<iterator, bool> insert_unique_check
262
+ (const_iterator hint, const key_type &key, insert_commit_data &commit_data);
263
+
243
264
  //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const KeyType&,KeyTypeKeyCompare,insert_commit_data&)
244
265
  template<class KeyType, class KeyTypeKeyCompare>
245
266
  std::pair<iterator, bool> insert_unique_check
@@ -442,6 +463,14 @@ class splaytree_impl
442
463
  //! @copydoc ::boost::intrusive::bstree::remove_node
443
464
  void remove_node(reference value);
444
465
 
466
+ //! @copydoc ::boost::intrusive::bstree::merge_unique(bstree<T, Options2...>&)
467
+ template<class T, class ...Options2>
468
+ void merge_unique(splaytree<T, Options2...> &);
469
+
470
+ //! @copydoc ::boost::intrusive::bstree::merge_equal(bstree<T, Options2...>&)
471
+ template<class T, class ...Options2>
472
+ void merge_equal(splaytree<T, Options2...> &);
473
+
445
474
  #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
446
475
 
447
476
  //! <b>Requires</b>: i must be a valid iterator of *this.
@@ -584,8 +613,11 @@ class splaytree
584
613
  //Assert if passed value traits are compatible with the type
585
614
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
586
615
 
587
- explicit splaytree( const key_compare &cmp = key_compare()
588
- , const value_traits &v_traits = value_traits())
616
+ splaytree()
617
+ : Base()
618
+ {}
619
+
620
+ explicit splaytree( const key_compare &cmp, const value_traits &v_traits = value_traits())
589
621
  : Base(cmp, v_traits)
590
622
  {}
591
623
 
@@ -251,6 +251,33 @@ class splaytree_algorithms
251
251
  bstree_algo::erase(header, z);
252
252
  }
253
253
 
254
+ //! @copydoc ::boost::intrusive::bstree_algorithms::transfer_unique
255
+ template<class NodePtrCompare>
256
+ static bool transfer_unique
257
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z)
258
+ {
259
+ typename bstree_algo::insert_commit_data commit_data;
260
+ bool const transferable = bstree_algo::insert_unique_check(header1, z, comp, commit_data).second;
261
+ if(transferable){
262
+ erase(header2, z);
263
+ bstree_algo::insert_commit(header1, z, commit_data);
264
+ splay_up(z, header1);
265
+ }
266
+ return transferable;
267
+ }
268
+
269
+ //! @copydoc ::boost::intrusive::bstree_algorithms::transfer_equal
270
+ template<class NodePtrCompare>
271
+ static void transfer_equal
272
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z)
273
+ {
274
+ insert_commit_data commit_data;
275
+ splay_down(header1, z, comp);
276
+ bstree_algo::insert_equal_upper_bound_check(header1, z, comp, commit_data);
277
+ erase(header2, z);
278
+ bstree_algo::insert_commit(header1, z, commit_data);
279
+ }
280
+
254
281
  #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
255
282
  //! @copydoc ::boost::intrusive::bstree_algorithms::clone(const const_node_ptr&,const node_ptr&,Cloner,Disposer)
256
283
  template <class Cloner, class Disposer>
@@ -80,7 +80,7 @@ class treap_impl
80
80
  < typename get_prio
81
81
  < VoidOrPrioComp
82
82
  , typename bstree_impl
83
- <ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, SizeType, ConstantTimeSize, BsTreeAlgorithms, HeaderHolder>::value_type>::type
83
+ <ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, SizeType, ConstantTimeSize, BsTreeAlgorithms, HeaderHolder>::key_type>::type
84
84
  >
85
85
  /// @endcond
86
86
  {
@@ -93,7 +93,7 @@ class treap_impl
93
93
  typedef tree_type implementation_defined;
94
94
  typedef get_prio
95
95
  < VoidOrPrioComp
96
- , typename tree_type::value_type> get_prio_type;
96
+ , typename tree_type::key_type> get_prio_type;
97
97
 
98
98
  typedef detail::ebo_functor_holder
99
99
  <typename get_prio_type::type> prio_base;
@@ -126,14 +126,11 @@ class treap_impl
126
126
  static const bool stateful_value_traits = implementation_defined::stateful_value_traits;
127
127
  static const bool safemode_or_autounlink = is_safe_autounlink<value_traits::link_mode>::value;
128
128
 
129
- typedef detail::key_nodeptr_comp<priority_compare, value_traits> value_node_prio_comp_t;
129
+ typedef detail::key_nodeptr_comp<priority_compare, value_traits, key_of_value> key_node_prio_comp_t;
130
130
 
131
131
  template<class KeyPrioComp>
132
- detail::key_nodeptr_comp<KeyPrioComp, value_traits> key_node_prio_comp(KeyPrioComp keypriocomp) const
133
- { return detail::key_nodeptr_comp<KeyPrioComp, value_traits>(keypriocomp, &this->get_value_traits()); }
134
-
135
- value_node_prio_comp_t value_node_prio_comp() const
136
- { return this->key_node_prio_comp(this->priv_pcomp()); }
132
+ detail::key_nodeptr_comp<KeyPrioComp, value_traits, key_of_value> key_node_prio_comp(KeyPrioComp keypriocomp) const
133
+ { return detail::key_nodeptr_comp<KeyPrioComp, value_traits, key_of_value>(keypriocomp, &this->get_value_traits()); }
137
134
 
138
135
  /// @cond
139
136
  private:
@@ -159,7 +156,18 @@ class treap_impl
159
156
  //! <b>Throws</b>: If value_traits::node_traits::node
160
157
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
161
158
  //! or the copy constructor of the value_compare/priority_compare objects throw. Basic guarantee.
162
- explicit treap_impl( const key_compare &cmp = key_compare()
159
+ treap_impl()
160
+ : tree_type(), prio_base(priority_compare())
161
+ {}
162
+
163
+ //! <b>Effects</b>: Constructs an empty container.
164
+ //!
165
+ //! <b>Complexity</b>: Constant.
166
+ //!
167
+ //! <b>Throws</b>: If value_traits::node_traits::node
168
+ //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
169
+ //! or the copy constructor of the value_compare/priority_compare objects throw. Basic guarantee.
170
+ explicit treap_impl( const key_compare &cmp
163
171
  , const priority_compare &pcmp = priority_compare()
164
172
  , const value_traits &v_traits = value_traits())
165
173
  : tree_type(cmp, v_traits), prio_base(pcmp)
@@ -266,6 +274,16 @@ class treap_impl
266
274
 
267
275
  //! @copydoc ::boost::intrusive::bstree::crend()const
268
276
  const_reverse_iterator crend() const;
277
+
278
+ //! @copydoc ::boost::intrusive::bstree::root()
279
+ iterator root();
280
+
281
+ //! @copydoc ::boost::intrusive::bstree::root()const
282
+ const_iterator root() const;
283
+
284
+ //! @copydoc ::boost::intrusive::bstree::croot()const
285
+ const_iterator croot() const;
286
+
269
287
  #endif
270
288
 
271
289
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the highest priority object of the
@@ -336,9 +354,9 @@ class treap_impl
336
354
  //! <b>Throws</b>: If the comparison functor's swap call throws.
337
355
  void swap(treap_impl& other)
338
356
  {
339
- tree_type::swap(other);
340
357
  //This can throw
341
358
  ::boost::adl_move_swap(this->priv_pcomp(), other.priv_pcomp());
359
+ tree_type::swap(other);
342
360
  }
343
361
 
344
362
  //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
@@ -403,7 +421,7 @@ class treap_impl
403
421
  ( this->tree_type::header_ptr()
404
422
  , to_insert
405
423
  , this->key_node_comp(this->key_comp())
406
- , this->value_node_prio_comp())
424
+ , this->key_node_prio_comp(this->priv_pcomp()))
407
425
  , this->priv_value_traits_ptr());
408
426
  this->tree_type::sz_traits().increment();
409
427
  return ret;
@@ -433,7 +451,7 @@ class treap_impl
433
451
  , hint.pointed_node()
434
452
  , to_insert
435
453
  , this->key_node_comp(this->key_comp())
436
- , this->value_node_prio_comp())
454
+ , this->key_node_prio_comp(this->priv_pcomp()))
437
455
  , this->priv_value_traits_ptr());
438
456
  this->tree_type::sz_traits().increment();
439
457
  return ret;
@@ -478,8 +496,7 @@ class treap_impl
478
496
  std::pair<iterator, bool> insert_unique(reference value)
479
497
  {
480
498
  insert_commit_data commit_data;
481
- std::pair<iterator, bool> ret = this->insert_unique_check
482
- (value, this->comp(), this->priv_pcomp(), commit_data);
499
+ std::pair<iterator, bool> ret = this->insert_unique_check(key_of_value()(value), commit_data);
483
500
  if(!ret.second)
484
501
  return ret;
485
502
  return std::pair<iterator, bool> (this->insert_unique_commit(value, commit_data), true);
@@ -503,8 +520,7 @@ class treap_impl
503
520
  iterator insert_unique(const_iterator hint, reference value)
504
521
  {
505
522
  insert_commit_data commit_data;
506
- std::pair<iterator, bool> ret = this->insert_unique_check
507
- (hint, value, this->comp(), this->priv_pcomp(), commit_data);
523
+ std::pair<iterator, bool> ret = this->insert_unique_check(hint, key_of_value()(value), commit_data);
508
524
  if(!ret.second)
509
525
  return ret.first;
510
526
  return this->insert_unique_commit(value, commit_data);
@@ -538,6 +554,68 @@ class treap_impl
538
554
  }
539
555
  }
540
556
 
557
+ //! <b>Effects</b>: Checks if a value can be inserted in the container, using
558
+ //! a user provided key instead of the value itself.
559
+ //!
560
+ //! <b>Returns</b>: If there is an equivalent value
561
+ //! returns a pair containing an iterator to the already present value
562
+ //! and false. If the value can be inserted returns true in the returned
563
+ //! pair boolean and fills "commit_data" that is meant to be used with
564
+ //! the "insert_commit" function.
565
+ //!
566
+ //! <b>Complexity</b>: Average complexity is at most logarithmic.
567
+ //!
568
+ //! <b>Throws</b>: If the comparison or predicate functions throw. Strong guarantee.
569
+ //!
570
+ //! <b>Notes</b>: This function is used to improve performance when constructing
571
+ //! a value_type is expensive: if there is an equivalent value
572
+ //! the constructed object must be discarded. Many times, the part of the
573
+ //! node that is used to impose the order is much cheaper to construct
574
+ //! than the value_type and this function offers the possibility to use that
575
+ //! part to check if the insertion will be successful.
576
+ //!
577
+ //! If the check is successful, the user can construct the value_type and use
578
+ //! "insert_commit" to insert the object in constant-time. This gives a total
579
+ //! logarithmic complexity to the insertion: check(O(log(N)) + commit(O(1)).
580
+ //!
581
+ //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
582
+ //! objects are inserted or erased from the container.
583
+ std::pair<iterator, bool> insert_unique_check
584
+ ( const key_type &key, insert_commit_data &commit_data)
585
+ { return this->insert_unique_check(key, this->key_comp(), this->priv_pcomp(), commit_data); }
586
+
587
+ //! <b>Effects</b>: Checks if a value can be inserted in the container, using
588
+ //! a user provided key instead of the value itself, using "hint"
589
+ //! as a hint to where it will be inserted.
590
+ //!
591
+ //! <b>Returns</b>: If there is an equivalent value
592
+ //! returns a pair containing an iterator to the already present value
593
+ //! and false. If the value can be inserted returns true in the returned
594
+ //! pair boolean and fills "commit_data" that is meant to be used with
595
+ //! the "insert_commit" function.
596
+ //!
597
+ //! <b>Complexity</b>: Logarithmic in general, but it's amortized
598
+ //! constant time if t is inserted immediately before hint.
599
+ //!
600
+ //! <b>Throws</b>: If the comparison or predicate functions throw. Strong guarantee.
601
+ //!
602
+ //! <b>Notes</b>: This function is used to improve performance when constructing
603
+ //! a value_type is expensive: if there is an equivalent value
604
+ //! the constructed object must be discarded. Many times, the part of the
605
+ //! constructing that is used to impose the order is much cheaper to construct
606
+ //! than the value_type and this function offers the possibility to use that key
607
+ //! to check if the insertion will be successful.
608
+ //!
609
+ //! If the check is successful, the user can construct the value_type and use
610
+ //! "insert_commit" to insert the object in constant-time. This can give a total
611
+ //! constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
612
+ //!
613
+ //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
614
+ //! objects are inserted or erased from the container.
615
+ std::pair<iterator, bool> insert_unique_check
616
+ ( const_iterator hint, const key_type &key, insert_commit_data &commit_data)
617
+ { return this->insert_unique_check(hint, key, this->key_comp(), this->priv_pcomp(), commit_data); }
618
+
541
619
  //! <b>Requires</b>: comp must be a comparison function that induces
542
620
  //! the same strict weak ordering as key_compare.
543
621
  //! key_value_pcomp must be a comparison function that induces
@@ -572,7 +650,11 @@ class treap_impl
572
650
  //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
573
651
  //! objects are inserted or erased from the container.
574
652
  template<class KeyType, class KeyTypeKeyCompare, class KeyValuePrioCompare>
575
- std::pair<iterator, bool> insert_unique_check
653
+ BOOST_INTRUSIVE_DOC1ST(std::pair<iterator BOOST_INTRUSIVE_I bool>
654
+ , typename detail::disable_if_convertible
655
+ <KeyType BOOST_INTRUSIVE_I const_iterator BOOST_INTRUSIVE_I
656
+ std::pair<iterator BOOST_INTRUSIVE_I bool> >::type)
657
+ insert_unique_check
576
658
  ( const KeyType &key, KeyTypeKeyCompare comp
577
659
  , KeyValuePrioCompare key_value_pcomp, insert_commit_data &commit_data)
578
660
  {
@@ -678,7 +760,11 @@ class treap_impl
678
760
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || node_algorithms::unique(to_insert));
679
761
  iterator ret
680
762
  ( node_algorithms::insert_before
681
- ( this->tree_type::header_ptr(), pos.pointed_node(), to_insert, this->value_node_prio_comp())
763
+ ( this->tree_type::header_ptr()
764
+ , pos.pointed_node()
765
+ , to_insert
766
+ , this->key_node_prio_comp(this->priv_pcomp())
767
+ )
682
768
  , this->priv_value_traits_ptr());
683
769
  this->tree_type::sz_traits().increment();
684
770
  return ret;
@@ -702,7 +788,8 @@ class treap_impl
702
788
  {
703
789
  node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
704
790
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || node_algorithms::unique(to_insert));
705
- node_algorithms::push_back(this->tree_type::header_ptr(), to_insert, this->value_node_prio_comp());
791
+ node_algorithms::push_back
792
+ (this->tree_type::header_ptr(), to_insert, this->key_node_prio_comp(this->priv_pcomp()));
706
793
  this->tree_type::sz_traits().increment();
707
794
  }
708
795
 
@@ -724,7 +811,8 @@ class treap_impl
724
811
  {
725
812
  node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
726
813
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || node_algorithms::unique(to_insert));
727
- node_algorithms::push_front(this->tree_type::header_ptr(), to_insert, this->value_node_prio_comp());
814
+ node_algorithms::push_front
815
+ (this->tree_type::header_ptr(), to_insert, this->key_node_prio_comp(this->priv_pcomp()));
728
816
  this->tree_type::sz_traits().increment();
729
817
  }
730
818
 
@@ -742,7 +830,8 @@ class treap_impl
742
830
  ++ret;
743
831
  node_ptr to_erase(i.pointed_node());
744
832
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || !node_algorithms::unique(to_erase));
745
- node_algorithms::erase(this->tree_type::header_ptr(), to_erase, this->value_node_prio_comp());
833
+ node_algorithms::erase
834
+ (this->tree_type::header_ptr(), to_erase, this->key_node_prio_comp(this->priv_pcomp()));
746
835
  this->tree_type::sz_traits().decrement();
747
836
  if(safemode_or_autounlink)
748
837
  node_algorithms::init(to_erase);
@@ -918,12 +1007,64 @@ class treap_impl
918
1007
  this->tree_type::sz_traits().set_size(0);
919
1008
  }
920
1009
 
1010
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1011
+ //! @copydoc ::boost::intrusive::bstree::merge_unique
1012
+ template<class T, class ...Options2> void merge_unique(sgtree<T, Options2...> &);
1013
+ #else
1014
+ template<class Compare2>
1015
+ void merge_unique(treap_impl
1016
+ <ValueTraits, VoidOrKeyOfValue, Compare2, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> &source)
1017
+ #endif
1018
+ {
1019
+ node_ptr it (node_algorithms::begin_node(source.header_ptr()))
1020
+ , itend(node_algorithms::end_node (source.header_ptr()));
1021
+
1022
+ while(it != itend){
1023
+ node_ptr const p(it);
1024
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || !node_algorithms::unique(p));
1025
+ it = node_algorithms::next_node(it);
1026
+
1027
+ if( node_algorithms::transfer_unique
1028
+ ( this->header_ptr(), this->key_node_comp(this->key_comp())
1029
+ , this->key_node_prio_comp(this->priv_pcomp()), source.header_ptr(), p) ){
1030
+ this->sz_traits().increment();
1031
+ source.sz_traits().decrement();
1032
+ }
1033
+ }
1034
+ }
1035
+
1036
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1037
+ //! @copydoc ::boost::intrusive::bstree::merge_equal(bstree<T, Options2...>&)
1038
+ template<class T, class ...Options2> void merge_equal(sgtree<T, Options2...> &);
1039
+ #else
1040
+ template<class Compare2>
1041
+ void merge_equal(treap_impl
1042
+ <ValueTraits, VoidOrKeyOfValue, Compare2, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> &source)
1043
+ #endif
1044
+ {
1045
+ node_ptr it (node_algorithms::begin_node(source.header_ptr()))
1046
+ , itend(node_algorithms::end_node (source.header_ptr()));
1047
+
1048
+ while(it != itend){
1049
+ node_ptr const p(it);
1050
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || !node_algorithms::unique(p));
1051
+ it = node_algorithms::next_node(it);
1052
+ node_algorithms::transfer_equal
1053
+ ( this->header_ptr(), this->key_node_comp(this->key_comp())
1054
+ , this->key_node_prio_comp(this->priv_pcomp()), source.header_ptr(), p);
1055
+ this->sz_traits().increment();
1056
+ source.sz_traits().decrement();
1057
+ }
1058
+ }
1059
+
921
1060
  //! @copydoc ::boost::intrusive::bstree::check(ExtraChecker)const
922
1061
  template <class ExtraChecker>
923
1062
  void check(ExtraChecker extra_checker) const
924
1063
  {
1064
+ typedef detail::key_nodeptr_comp<priority_compare, value_traits, key_of_value> nodeptr_prio_comp_t;
925
1065
  tree_type::check(detail::treap_node_extra_checker
926
- <ValueTraits, value_node_prio_comp_t, ExtraChecker>(this->value_node_prio_comp(), extra_checker));
1066
+ <ValueTraits, nodeptr_prio_comp_t, ExtraChecker>
1067
+ (this->key_node_prio_comp(this->priv_pcomp()), extra_checker));
927
1068
  }
928
1069
 
929
1070
  //! @copydoc ::boost::intrusive::bstree::check()const
@@ -1147,8 +1288,11 @@ class treap
1147
1288
 
1148
1289
  //Assert if passed value traits are compatible with the type
1149
1290
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
1291
+ treap()
1292
+ : Base()
1293
+ {}
1150
1294
 
1151
- explicit treap( const key_compare &cmp = key_compare()
1295
+ explicit treap( const key_compare &cmp
1152
1296
  , const priority_compare &pcmp = priority_compare()
1153
1297
  , const value_traits &v_traits = value_traits())
1154
1298
  : Base(cmp, pcmp, v_traits)