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
@@ -141,7 +141,7 @@ class linear_slist_algorithms
141
141
  //! <b>Complexity</b>: Constant
142
142
  //!
143
143
  //! <b>Throws</b>: Nothing.
144
- static void init_header(const node_ptr & this_node)
144
+ BOOST_INTRUSIVE_FORCEINLINE static void init_header(const node_ptr & this_node)
145
145
  { NodeTraits::set_next(this_node, node_ptr ()); }
146
146
 
147
147
  //! <b>Requires</b>: this_node and prev_init_node must be in the same linear list.
@@ -153,7 +153,7 @@ class linear_slist_algorithms
153
153
  //! <b>Complexity</b>: Linear to the number of elements between prev_init_node and this_node.
154
154
  //!
155
155
  //! <b>Throws</b>: Nothing.
156
- static node_ptr get_previous_node(const node_ptr & prev_init_node, const node_ptr & this_node)
156
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous_node(const node_ptr & prev_init_node, const node_ptr & this_node)
157
157
  { return base_t::get_previous_node(prev_init_node, this_node); }
158
158
 
159
159
  //! <b>Requires</b>: this_node must be in a linear list or be an empty linear list.
@@ -176,7 +176,20 @@ class list_impl
176
176
  //!
177
177
  //! <b>Throws</b>: If value_traits::node_traits::node
178
178
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
179
- explicit list_impl(const value_traits &v_traits = value_traits())
179
+ list_impl()
180
+ : data_(value_traits())
181
+ {
182
+ this->priv_size_traits().set_size(size_type(0));
183
+ node_algorithms::init_header(this->get_root_node());
184
+ }
185
+
186
+ //! <b>Effects</b>: constructs an empty list.
187
+ //!
188
+ //! <b>Complexity</b>: Constant
189
+ //!
190
+ //! <b>Throws</b>: If value_traits::node_traits::node
191
+ //! constructor throws (this does not happen with predefined Boost.Intrusive hooks).
192
+ explicit list_impl(const value_traits &v_traits)
180
193
  : data_(v_traits)
181
194
  {
182
195
  this->priv_size_traits().set_size(size_type(0));
@@ -529,11 +542,7 @@ class list_impl
529
542
  void swap(list_impl& other)
530
543
  {
531
544
  node_algorithms::swap_nodes(this->get_root_node(), other.get_root_node());
532
- if(constant_time_size){
533
- size_type backup = this->priv_size_traits().get_size();
534
- this->priv_size_traits().set_size(other.priv_size_traits().get_size());
535
- other.priv_size_traits().set_size(backup);
536
- }
545
+ this->priv_size_traits().swap(other.priv_size_traits());
537
546
  }
538
547
 
539
548
  //! <b>Effects</b>: Moves backwards all the elements, so that the first
@@ -1455,7 +1464,11 @@ class list
1455
1464
  typedef typename Base::iterator iterator;
1456
1465
  typedef typename Base::const_iterator const_iterator;
1457
1466
 
1458
- explicit list(const value_traits &v_traits = value_traits())
1467
+ list()
1468
+ : Base()
1469
+ {}
1470
+
1471
+ explicit list(const value_traits &v_traits)
1459
1472
  : Base(v_traits)
1460
1473
  {}
1461
1474
 
@@ -50,7 +50,8 @@ struct make_list_base_hook
50
50
  >::type packed_options;
51
51
 
52
52
  typedef generic_hook
53
- < circular_list_algorithms<list_node_traits<typename packed_options::void_pointer> >
53
+ < CircularListAlgorithms
54
+ , list_node_traits<typename packed_options::void_pointer>
54
55
  , typename packed_options::tag
55
56
  , packed_options::link_mode
56
57
  , ListBaseHookId
@@ -177,7 +178,8 @@ struct make_list_member_hook
177
178
  >::type packed_options;
178
179
 
179
180
  typedef generic_hook
180
- < circular_list_algorithms<list_node_traits<typename packed_options::void_pointer> >
181
+ < CircularListAlgorithms
182
+ , list_node_traits<typename packed_options::void_pointer>
181
183
  , member_tag
182
184
  , packed_options::link_mode
183
185
  , NoBaseHookId
@@ -18,6 +18,7 @@
18
18
 
19
19
  #include <boost/intrusive/link_mode.hpp>
20
20
  #include <boost/intrusive/detail/parent_from_member.hpp>
21
+ #include <boost/intrusive/detail/to_raw_pointer.hpp>
21
22
  #include <boost/intrusive/pointer_traits.hpp>
22
23
 
23
24
  #if defined(BOOST_HAS_PRAGMA_ONCE)
@@ -56,19 +57,19 @@ struct member_value_traits
56
57
  typedef const value_type & const_reference;
57
58
  static const link_mode_type link_mode = LinkMode;
58
59
 
59
- static node_ptr to_node_ptr(reference value)
60
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr to_node_ptr(reference value)
60
61
  { return pointer_traits<node_ptr>::pointer_to(value.*PtrToMember); }
61
62
 
62
- static const_node_ptr to_node_ptr(const_reference value)
63
+ BOOST_INTRUSIVE_FORCEINLINE static const_node_ptr to_node_ptr(const_reference value)
63
64
  { return pointer_traits<const_node_ptr>::pointer_to(value.*PtrToMember); }
64
65
 
65
- static pointer to_value_ptr(const node_ptr &n)
66
+ BOOST_INTRUSIVE_FORCEINLINE static pointer to_value_ptr(const node_ptr &n)
66
67
  {
67
68
  return pointer_traits<pointer>::pointer_to(*detail::parent_from_member<value_type, node>
68
69
  (boost::intrusive::detail::to_raw_pointer(n), PtrToMember));
69
70
  }
70
71
 
71
- static const_pointer to_value_ptr(const const_node_ptr &n)
72
+ BOOST_INTRUSIVE_FORCEINLINE static const_pointer to_value_ptr(const const_node_ptr &n)
72
73
  {
73
74
  return pointer_traits<const_pointer>::pointer_to(*detail::parent_from_member<value_type, node>
74
75
  (boost::intrusive::detail::to_raw_pointer(n), PtrToMember));
@@ -61,12 +61,12 @@ BOOST_INTRUSIVE_OPTION_TYPE(size_type, SizeType, SizeType, size_type)
61
61
  //!comparison functor for the value type
62
62
  BOOST_INTRUSIVE_OPTION_TYPE(compare, Compare, Compare, compare)
63
63
 
64
- //!This option setter specifies the a function object
64
+ //!This option setter specifies a function object
65
65
  //!that specifies the type of the key of an associative
66
66
  //!container and an operator to obtain it from a value type.
67
67
  //!
68
- //!This function object must the define a `key_type` and
69
- //!a member with signature `const key_type & operator()(const value_type &) const`
68
+ //!This function object must the define a `type` member typedef and
69
+ //!a member with signature `type [const&] operator()(const value_type &) const`
70
70
  //!that will return the key from a value_type of an associative container
71
71
  BOOST_INTRUSIVE_OPTION_TYPE(key_of_value, KeyOfValue, KeyOfValue, key_of_value)
72
72
 
@@ -88,7 +88,7 @@ BOOST_INTRUSIVE_OPTION_CONSTANT(floating_point, bool, Enabled, floating_point)
88
88
  //!functor for the value type
89
89
  BOOST_INTRUSIVE_OPTION_TYPE(equal, Equal, Equal, equal)
90
90
 
91
- //!This option setter specifies the equality
91
+ //!This option setter specifies the priority comparison
92
92
  //!functor for the value type
93
93
  BOOST_INTRUSIVE_OPTION_TYPE(priority, Priority, Priority, priority)
94
94
 
@@ -13,6 +13,7 @@
13
13
  #define BOOST_INTRUSIVE_PARENT_FROM_MEMBER_HPP
14
14
 
15
15
  #include <boost/intrusive/detail/config_begin.hpp>
16
+ #include <boost/intrusive/detail/workaround.hpp>
16
17
  #include <boost/intrusive/intrusive_fwd.hpp>
17
18
 
18
19
  #include <boost/intrusive/detail/parent_from_member.hpp>
@@ -29,7 +30,7 @@ namespace intrusive {
29
30
  //! Note: this function does not work with pointer to members that rely on
30
31
  //! virtual inheritance.
31
32
  template<class Parent, class Member>
32
- inline Parent *get_parent_from_member(Member *member, const Member Parent::* ptr_to_member)
33
+ BOOST_INTRUSIVE_FORCEINLINE Parent *get_parent_from_member(Member *member, const Member Parent::* ptr_to_member)
33
34
  { return ::boost::intrusive::detail::parent_from_member(member, ptr_to_member); }
34
35
 
35
36
  //! Given a const pointer to a member and its corresponding const pointer to data member,
@@ -37,7 +38,7 @@ inline Parent *get_parent_from_member(Member *member, const Member Parent::* ptr
37
38
  //! Note: this function does not work with pointer to members that rely on
38
39
  //! virtual inheritance.
39
40
  template<class Parent, class Member>
40
- inline const Parent *get_parent_from_member(const Member *member, const Member Parent::* ptr_to_member)
41
+ BOOST_INTRUSIVE_FORCEINLINE const Parent *get_parent_from_member(const Member *member, const Member Parent::* ptr_to_member)
41
42
  { return ::boost::intrusive::detail::parent_from_member(member, ptr_to_member); }
42
43
 
43
44
  } //namespace intrusive {
@@ -67,19 +67,19 @@ struct pointer_plus_bits<T*, NumBits>
67
67
  static const uintptr_t Mask = uintptr_t((uintptr_t(1u) << NumBits) - 1);
68
68
  typedef T* pointer;
69
69
 
70
- static pointer get_pointer(pointer n)
70
+ BOOST_INTRUSIVE_FORCEINLINE static pointer get_pointer(pointer n)
71
71
  { return pointer(uintptr_t(n) & uintptr_t(~Mask)); }
72
72
 
73
- static void set_pointer(pointer &n, pointer p)
73
+ BOOST_INTRUSIVE_FORCEINLINE static void set_pointer(pointer &n, pointer p)
74
74
  {
75
75
  BOOST_INTRUSIVE_INVARIANT_ASSERT(0 == (uintptr_t(p) & Mask));
76
76
  n = pointer(uintptr_t(p) | (uintptr_t(n) & Mask));
77
77
  }
78
78
 
79
- static std::size_t get_bits(pointer n)
79
+ BOOST_INTRUSIVE_FORCEINLINE static std::size_t get_bits(pointer n)
80
80
  { return std::size_t(uintptr_t(n) & Mask); }
81
81
 
82
- static void set_bits(pointer &n, std::size_t c)
82
+ BOOST_INTRUSIVE_FORCEINLINE static void set_bits(pointer &n, std::size_t c)
83
83
  {
84
84
  BOOST_INTRUSIVE_INVARIANT_ASSERT(uintptr_t(c) <= Mask);
85
85
  n = pointer(uintptr_t((get_pointer)(n)) | uintptr_t(c));
@@ -288,25 +288,25 @@ struct pointer_traits<T*>
288
288
 
289
289
  //! <b>Returns</b>: addressof(r)
290
290
  //!
291
- static pointer pointer_to(reference r)
291
+ BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r)
292
292
  { return boost::intrusive::detail::addressof(r); }
293
293
 
294
294
  //! <b>Returns</b>: static_cast<pointer>(uptr)
295
295
  //!
296
296
  template<class U>
297
- static pointer static_cast_from(U *uptr)
297
+ BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(U *uptr)
298
298
  { return static_cast<pointer>(uptr); }
299
299
 
300
300
  //! <b>Returns</b>: const_cast<pointer>(uptr)
301
301
  //!
302
302
  template<class U>
303
- static pointer const_cast_from(U *uptr)
303
+ BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(U *uptr)
304
304
  { return const_cast<pointer>(uptr); }
305
305
 
306
306
  //! <b>Returns</b>: dynamic_cast<pointer>(uptr)
307
307
  //!
308
308
  template<class U>
309
- static pointer dynamic_cast_from(U *uptr)
309
+ BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(U *uptr)
310
310
  { return dynamic_cast<pointer>(uptr); }
311
311
  };
312
312
 
@@ -14,6 +14,7 @@
14
14
  #define BOOST_INTRUSIVE_PRIORITY_COMPARE_HPP
15
15
 
16
16
  #include <boost/intrusive/detail/config_begin.hpp>
17
+ #include <boost/intrusive/detail/workaround.hpp>
17
18
  #include <boost/intrusive/intrusive_fwd.hpp>
18
19
 
19
20
  #include <boost/intrusive/detail/minimal_less_equal_header.hpp>
@@ -25,7 +26,14 @@
25
26
  namespace boost {
26
27
  namespace intrusive {
27
28
 
28
- template <class T>
29
+ /// @cond
30
+
31
+ template<class U>
32
+ void priority_order();
33
+
34
+ /// @endcond
35
+
36
+ template <class T = void>
29
37
  struct priority_compare
30
38
  {
31
39
  //Compatibility with std::binary_function
@@ -33,18 +41,28 @@ struct priority_compare
33
41
  typedef T second_argument_type;
34
42
  typedef bool result_type;
35
43
 
36
- bool operator()(const T &val, const T &val2) const
44
+ BOOST_INTRUSIVE_FORCEINLINE bool operator()(const T &val, const T &val2) const
37
45
  {
38
46
  return priority_order(val, val2);
39
47
  }
40
48
  };
41
49
 
50
+ template <>
51
+ struct priority_compare<void>
52
+ {
53
+ template<class T, class U>
54
+ BOOST_INTRUSIVE_FORCEINLINE bool operator()(const T &t, const U &u) const
55
+ {
56
+ return priority_order(t, u);
57
+ }
58
+ };
59
+
42
60
  /// @cond
43
61
 
44
- template<class Less, class T>
62
+ template<class PrioComp, class T>
45
63
  struct get_prio
46
64
  {
47
- typedef Less type;
65
+ typedef PrioComp type;
48
66
  };
49
67
 
50
68
 
@@ -121,9 +121,13 @@ class rbtree_impl
121
121
 
122
122
  typedef typename implementation_defined::insert_commit_data insert_commit_data;
123
123
 
124
+ //! @copydoc ::boost::intrusive::bstree::bstree()
125
+ rbtree_impl()
126
+ : tree_type()
127
+ {}
128
+
124
129
  //! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
125
- explicit rbtree_impl( const key_compare &cmp = key_compare()
126
- , const value_traits &v_traits = value_traits())
130
+ explicit rbtree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
127
131
  : tree_type(cmp, v_traits)
128
132
  {}
129
133
 
@@ -184,6 +188,15 @@ class rbtree_impl
184
188
  //! @copydoc ::boost::intrusive::bstree::crend()const
185
189
  const_reverse_iterator crend() const;
186
190
 
191
+ //! @copydoc ::boost::intrusive::bstree::root()
192
+ iterator root();
193
+
194
+ //! @copydoc ::boost::intrusive::bstree::root()const
195
+ const_iterator root() const;
196
+
197
+ //! @copydoc ::boost::intrusive::bstree::croot()const
198
+ const_iterator croot() const;
199
+
187
200
  //! @copydoc ::boost::intrusive::bstree::container_from_end_iterator(iterator)
188
201
  static rbtree_impl &container_from_end_iterator(iterator end_iterator);
189
202
 
@@ -259,6 +272,14 @@ class rbtree_impl
259
272
  (const_iterator hint, const KeyType &key
260
273
  ,KeyTypeKeyCompare comp, insert_commit_data &commit_data);
261
274
 
275
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const key_type&,insert_commit_data&)
276
+ std::pair<iterator, bool> insert_unique_check
277
+ (const key_type &key, insert_commit_data &commit_data);
278
+
279
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const_iterator,const key_type&,insert_commit_data&)
280
+ std::pair<iterator, bool> insert_unique_check
281
+ (const_iterator hint, const key_type &key, insert_commit_data &commit_data);
282
+
262
283
  //! @copydoc ::boost::intrusive::bstree::insert_unique_commit
263
284
  iterator insert_unique_commit(reference value, const insert_commit_data &commit_data);
264
285
 
@@ -418,6 +439,14 @@ class rbtree_impl
418
439
  //! @copydoc ::boost::intrusive::bstree::remove_node
419
440
  void remove_node(reference value);
420
441
 
442
+ //! @copydoc ::boost::intrusive::bstree::merge_unique(bstree<T, Options2...>&)
443
+ template<class T, class ...Options2>
444
+ void merge_unique(rbtree<T, Options2...> &);
445
+
446
+ //! @copydoc ::boost::intrusive::bstree::merge_equal(bstree<T, Options2...>&)
447
+ template<class T, class ...Options2>
448
+ void merge_equal(rbtree<T, Options2...> &);
449
+
421
450
  friend bool operator< (const rbtree_impl &x, const rbtree_impl &y);
422
451
 
423
452
  friend bool operator==(const rbtree_impl &x, const rbtree_impl &y);
@@ -509,8 +538,11 @@ class rbtree
509
538
  //Assert if passed value traits are compatible with the type
510
539
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
511
540
 
512
- explicit rbtree( const key_compare &cmp = key_compare()
513
- , const value_traits &v_traits = value_traits())
541
+ rbtree()
542
+ : Base()
543
+ {}
544
+
545
+ explicit rbtree( const key_compare &cmp, const value_traits &v_traits = value_traits())
514
546
  : Base(cmp, v_traits)
515
547
  {}
516
548
 
@@ -284,20 +284,33 @@ class rbtree_algorithms
284
284
  {
285
285
  typename bstree_algo::data_for_rebalance info;
286
286
  bstree_algo::erase(header, z, info);
287
+ rebalance_after_erasure(header, z, info);
288
+ return z;
289
+ }
287
290
 
288
- color new_z_color;
289
- if(info.y != z){
290
- new_z_color = NodeTraits::get_color(info.y);
291
- NodeTraits::set_color(info.y, NodeTraits::get_color(z));
292
- }
293
- else{
294
- new_z_color = NodeTraits::get_color(z);
295
- }
296
- //Rebalance rbtree if needed
297
- if(new_z_color != NodeTraits::red()){
298
- rebalance_after_erasure(header, info.x, info.x_parent);
291
+ //! @copydoc ::boost::intrusive::bstree_algorithms::transfer_unique
292
+ template<class NodePtrCompare>
293
+ static bool transfer_unique
294
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z)
295
+ {
296
+ typename bstree_algo::data_for_rebalance info;
297
+ bool const transferred = bstree_algo::transfer_unique(header1, comp, header2, z, info);
298
+ if(transferred){
299
+ rebalance_after_erasure(header2, z, info);
300
+ rebalance_after_insertion(header1, z);
299
301
  }
300
- return z;
302
+ return transferred;
303
+ }
304
+
305
+ //! @copydoc ::boost::intrusive::bstree_algorithms::transfer_equal
306
+ template<class NodePtrCompare>
307
+ static void transfer_equal
308
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z)
309
+ {
310
+ typename bstree_algo::data_for_rebalance info;
311
+ bstree_algo::transfer_equal(header1, comp, header2, z, info);
312
+ rebalance_after_erasure(header2, z, info);
313
+ rebalance_after_insertion(header1, z);
301
314
  }
302
315
 
303
316
  //! @copydoc ::boost::intrusive::bstree_algorithms::clone(const const_node_ptr&,const node_ptr&,Cloner,Disposer)
@@ -431,7 +444,24 @@ class rbtree_algorithms
431
444
  /// @cond
432
445
  private:
433
446
 
434
- static void rebalance_after_erasure(const node_ptr & header, node_ptr x, node_ptr x_parent)
447
+ static void rebalance_after_erasure
448
+ ( const node_ptr & header, const node_ptr &z, const typename bstree_algo::data_for_rebalance &info)
449
+ {
450
+ color new_z_color;
451
+ if(info.y != z){
452
+ new_z_color = NodeTraits::get_color(info.y);
453
+ NodeTraits::set_color(info.y, NodeTraits::get_color(z));
454
+ }
455
+ else{
456
+ new_z_color = NodeTraits::get_color(z);
457
+ }
458
+ //Rebalance rbtree if needed
459
+ if(new_z_color != NodeTraits::red()){
460
+ rebalance_after_erasure_restore_invariants(header, info.x, info.x_parent);
461
+ }
462
+ }
463
+
464
+ static void rebalance_after_erasure_restore_invariants(const node_ptr & header, node_ptr x, node_ptr x_parent)
435
465
  {
436
466
  while(1){
437
467
  if(x_parent == header || (x && NodeTraits::get_color(x) != NodeTraits::black())){
@@ -28,6 +28,11 @@
28
28
  namespace boost {
29
29
  namespace intrusive {
30
30
 
31
+ #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
32
+ template<class ValueTraits, class VoidOrKeyOfValue, class Compare, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
33
+ class multiset_impl;
34
+ #endif
35
+
31
36
  //! The class template set is an intrusive container, that mimics most of
32
37
  //! the interface of std::set as described in the C++ standard.
33
38
  //!
@@ -83,9 +88,13 @@ class set_impl
83
88
  static const bool constant_time_size = tree_type::constant_time_size;
84
89
 
85
90
  public:
91
+ //! @copydoc ::boost::intrusive::rbtree::rbtree()
92
+ set_impl()
93
+ : tree_type()
94
+ {}
95
+
86
96
  //! @copydoc ::boost::intrusive::rbtree::rbtree(const key_compare &,const value_traits &)
87
- explicit set_impl( const key_compare &cmp = key_compare()
88
- , const value_traits &v_traits = value_traits())
97
+ explicit set_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
89
98
  : tree_type(cmp, v_traits)
90
99
  {}
91
100
 
@@ -146,6 +155,15 @@ class set_impl
146
155
  //! @copydoc ::boost::intrusive::rbtree::crend()const
147
156
  const_reverse_iterator crend() const;
148
157
 
158
+ //! @copydoc ::boost::intrusive::rbtree::root()
159
+ iterator root();
160
+
161
+ //! @copydoc ::boost::intrusive::rbtree::root()const
162
+ const_iterator root() const;
163
+
164
+ //! @copydoc ::boost::intrusive::rbtree::croot()const
165
+ const_iterator croot() const;
166
+
149
167
  //! @copydoc ::boost::intrusive::rbtree::container_from_end_iterator(iterator)
150
168
  static set_impl &container_from_end_iterator(iterator end_iterator);
151
169
 
@@ -196,6 +214,17 @@ class set_impl
196
214
  iterator insert(const_iterator hint, reference value)
197
215
  { return tree_type::insert_unique(hint, value); }
198
216
 
217
+ //! @copydoc ::boost::intrusive::rbtree::insert_unique_check(const key_type&,insert_commit_data&)
218
+ std::pair<iterator, bool> insert_check
219
+ (const key_type &key, insert_commit_data &commit_data)
220
+ { return tree_type::insert_unique_check(key, commit_data); }
221
+
222
+ //! @copydoc ::boost::intrusive::rbtree::insert_unique_check(const_iterator,const key_type&,insert_commit_data&)
223
+ std::pair<iterator, bool> insert_check
224
+ (const_iterator hint, const key_type &key
225
+ ,insert_commit_data &commit_data)
226
+ { return tree_type::insert_unique_check(hint, key, commit_data); }
227
+
199
228
  //! @copydoc ::boost::intrusive::rbtree::insert_unique_check(const KeyType&,KeyTypeKeyCompare,insert_commit_data&)
200
229
  template<class KeyType, class KeyTypeKeyCompare>
201
230
  std::pair<iterator, bool> insert_check
@@ -384,6 +413,26 @@ class set_impl
384
413
 
385
414
  //! @copydoc ::boost::intrusive::rbtree::remove_node
386
415
  void remove_node(reference value);
416
+
417
+ //! @copydoc ::boost::intrusive::rbtree::merge_unique
418
+ template<class ...Options2>
419
+ void merge(set<T, Options2...> &source);
420
+
421
+ //! @copydoc ::boost::intrusive::rbtree::merge_unique
422
+ template<class ...Options2>
423
+ void merge(multiset<T, Options2...> &source);
424
+
425
+ #else
426
+
427
+ template<class Compare2>
428
+ void merge(set_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
429
+ { return tree_type::merge_unique(source); }
430
+
431
+
432
+ template<class Compare2>
433
+ void merge(multiset_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
434
+ { return tree_type::merge_unique(source); }
435
+
387
436
  #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
388
437
  };
389
438
 
@@ -476,8 +525,11 @@ class set
476
525
  //Assert if passed value traits are compatible with the type
477
526
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
478
527
 
479
- explicit set( const key_compare &cmp = key_compare()
480
- , const value_traits &v_traits = value_traits())
528
+ set()
529
+ : Base()
530
+ {}
531
+
532
+ explicit set( const key_compare &cmp, const value_traits &v_traits = value_traits())
481
533
  : Base(cmp, v_traits)
482
534
  {}
483
535
 
@@ -573,9 +625,13 @@ class multiset_impl
573
625
  static const bool constant_time_size = tree_type::constant_time_size;
574
626
 
575
627
  public:
628
+ //! @copydoc ::boost::intrusive::rbtree::rbtree()
629
+ multiset_impl()
630
+ : tree_type()
631
+ {}
632
+
576
633
  //! @copydoc ::boost::intrusive::rbtree::rbtree(const key_compare &,const value_traits &)
577
- explicit multiset_impl( const key_compare &cmp = key_compare()
578
- , const value_traits &v_traits = value_traits())
634
+ explicit multiset_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
579
635
  : tree_type(cmp, v_traits)
580
636
  {}
581
637
 
@@ -636,6 +692,15 @@ class multiset_impl
636
692
  //! @copydoc ::boost::intrusive::rbtree::crend()const
637
693
  const_reverse_iterator crend() const;
638
694
 
695
+ //! @copydoc ::boost::intrusive::rbtree::root()
696
+ iterator root();
697
+
698
+ //! @copydoc ::boost::intrusive::rbtree::root()const
699
+ const_iterator root() const;
700
+
701
+ //! @copydoc ::boost::intrusive::rbtree::croot()const
702
+ const_iterator croot() const;
703
+
639
704
  //! @copydoc ::boost::intrusive::rbtree::container_from_end_iterator(iterator)
640
705
  static multiset_impl &container_from_end_iterator(iterator end_iterator);
641
706
 
@@ -843,6 +908,25 @@ class multiset_impl
843
908
 
844
909
  //! @copydoc ::boost::intrusive::rbtree::remove_node
845
910
  void remove_node(reference value);
911
+
912
+ //! @copydoc ::boost::intrusive::rbtree::merge_equal
913
+ template<class ...Options2>
914
+ void merge(multiset<T, Options2...> &source);
915
+
916
+ //! @copydoc ::boost::intrusive::rbtree::merge_equal
917
+ template<class ...Options2>
918
+ void merge(set<T, Options2...> &source);
919
+
920
+ #else
921
+
922
+ template<class Compare2>
923
+ void merge(multiset_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
924
+ { return tree_type::merge_equal(source); }
925
+
926
+ template<class Compare2>
927
+ void merge(set_impl<ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, HeaderHolder> &source)
928
+ { return tree_type::merge_equal(source); }
929
+
846
930
  #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
847
931
  };
848
932
 
@@ -936,8 +1020,11 @@ class multiset
936
1020
  //Assert if passed value traits are compatible with the type
937
1021
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
938
1022
 
939
- multiset( const key_compare &cmp = key_compare()
940
- , const value_traits &v_traits = value_traits())
1023
+ multiset()
1024
+ : Base()
1025
+ {}
1026
+
1027
+ explicit multiset( const key_compare &cmp, const value_traits &v_traits = value_traits())
941
1028
  : Base(cmp, v_traits)
942
1029
  {}
943
1030