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
@@ -47,7 +47,8 @@ struct make_bs_set_base_hook
47
47
  ::type packed_options;
48
48
 
49
49
  typedef generic_hook
50
- < bstree_algorithms<tree_node_traits<typename packed_options::void_pointer> >
50
+ < BsTreeAlgorithms
51
+ , tree_node_traits<typename packed_options::void_pointer>
51
52
  , typename packed_options::tag
52
53
  , packed_options::link_mode
53
54
  , BsTreeBaseHookId
@@ -176,7 +177,8 @@ struct make_bs_set_member_hook
176
177
  ::type packed_options;
177
178
 
178
179
  typedef generic_hook
179
- < bstree_algorithms<tree_node_traits<typename packed_options::void_pointer> >
180
+ < BsTreeAlgorithms
181
+ , tree_node_traits<typename packed_options::void_pointer>
180
182
  , member_tag
181
183
  , packed_options::link_mode
182
184
  , NoBaseHookId
@@ -105,7 +105,7 @@ struct bstbase3
105
105
 
106
106
  struct holder_t : public ValueTraits
107
107
  {
108
- explicit holder_t(const ValueTraits &vtraits)
108
+ BOOST_INTRUSIVE_FORCEINLINE explicit holder_t(const ValueTraits &vtraits)
109
109
  : ValueTraits(vtraits)
110
110
  {}
111
111
  header_holder_type root;
@@ -121,34 +121,34 @@ struct bstbase3
121
121
  return *base;
122
122
  }
123
123
 
124
- bstbase3(const ValueTraits &vtraits)
124
+ BOOST_INTRUSIVE_FORCEINLINE bstbase3(const ValueTraits &vtraits)
125
125
  : holder(vtraits)
126
126
  {
127
127
  node_algorithms::init_header(this->header_ptr());
128
128
  }
129
129
 
130
- node_ptr header_ptr()
130
+ BOOST_INTRUSIVE_FORCEINLINE node_ptr header_ptr()
131
131
  { return holder.root.get_node(); }
132
132
 
133
- const_node_ptr header_ptr() const
133
+ BOOST_INTRUSIVE_FORCEINLINE const_node_ptr header_ptr() const
134
134
  { return holder.root.get_node(); }
135
135
 
136
- const value_traits &get_value_traits() const
136
+ BOOST_INTRUSIVE_FORCEINLINE const value_traits &get_value_traits() const
137
137
  { return this->holder; }
138
138
 
139
- value_traits &get_value_traits()
139
+ BOOST_INTRUSIVE_FORCEINLINE value_traits &get_value_traits()
140
140
  { return this->holder; }
141
141
 
142
142
  typedef typename boost::intrusive::value_traits_pointers
143
143
  <ValueTraits>::const_value_traits_ptr const_value_traits_ptr;
144
144
 
145
- const_value_traits_ptr priv_value_traits_ptr() const
145
+ BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr priv_value_traits_ptr() const
146
146
  { return pointer_traits<const_value_traits_ptr>::pointer_to(this->get_value_traits()); }
147
147
 
148
148
  iterator begin()
149
149
  { return iterator(node_algorithms::begin_node(this->header_ptr()), this->priv_value_traits_ptr()); }
150
150
 
151
- const_iterator begin() const
151
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator begin() const
152
152
  { return cbegin(); }
153
153
 
154
154
  const_iterator cbegin() const
@@ -157,37 +157,37 @@ struct bstbase3
157
157
  iterator end()
158
158
  { return iterator(node_algorithms::end_node(this->header_ptr()), this->priv_value_traits_ptr()); }
159
159
 
160
- const_iterator end() const
160
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator end() const
161
161
  { return cend(); }
162
162
 
163
- const_iterator cend() const
163
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator cend() const
164
164
  { return const_iterator(node_algorithms::end_node(this->header_ptr()), this->priv_value_traits_ptr()); }
165
165
 
166
- iterator root()
166
+ BOOST_INTRUSIVE_FORCEINLINE iterator root()
167
167
  { return iterator(node_algorithms::root_node(this->header_ptr()), this->priv_value_traits_ptr()); }
168
168
 
169
- const_iterator root() const
169
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator root() const
170
170
  { return croot(); }
171
171
 
172
- const_iterator croot() const
172
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator croot() const
173
173
  { return const_iterator(node_algorithms::root_node(this->header_ptr()), this->priv_value_traits_ptr()); }
174
174
 
175
- reverse_iterator rbegin()
175
+ BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rbegin()
176
176
  { return reverse_iterator(end()); }
177
177
 
178
- const_reverse_iterator rbegin() const
178
+ BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rbegin() const
179
179
  { return const_reverse_iterator(end()); }
180
180
 
181
- const_reverse_iterator crbegin() const
181
+ BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crbegin() const
182
182
  { return const_reverse_iterator(end()); }
183
183
 
184
- reverse_iterator rend()
184
+ BOOST_INTRUSIVE_FORCEINLINE reverse_iterator rend()
185
185
  { return reverse_iterator(begin()); }
186
186
 
187
- const_reverse_iterator rend() const
187
+ BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator rend() const
188
188
  { return const_reverse_iterator(begin()); }
189
189
 
190
- const_reverse_iterator crend() const
190
+ BOOST_INTRUSIVE_FORCEINLINE const_reverse_iterator crend() const
191
191
  { return const_reverse_iterator(begin()); }
192
192
 
193
193
  void replace_node(iterator replace_this, reference with_this)
@@ -199,7 +199,7 @@ struct bstbase3
199
199
  node_algorithms::init(replace_this.pointed_node());
200
200
  }
201
201
 
202
- void rebalance()
202
+ BOOST_INTRUSIVE_FORCEINLINE void rebalance()
203
203
  { node_algorithms::rebalance(this->header_ptr()); }
204
204
 
205
205
  iterator rebalance_subtree(iterator root)
@@ -223,7 +223,7 @@ struct bstbase3
223
223
  const_iterator iterator_to(const_reference value) const
224
224
  { return const_iterator (this->get_value_traits().to_node_ptr(*pointer_traits<pointer>::const_cast_from(pointer_traits<const_pointer>::pointer_to(value))), this->priv_value_traits_ptr()); }
225
225
 
226
- static void init_node(reference value)
226
+ BOOST_INTRUSIVE_FORCEINLINE static void init_node(reference value)
227
227
  { node_algorithms::init(value_traits::to_node_ptr(value)); }
228
228
 
229
229
  };
@@ -252,17 +252,18 @@ struct get_key_of_value<void, T>
252
252
  typedef ::boost::intrusive::detail::identity<T> type;
253
253
  };
254
254
 
255
- template<class T, class VoidOrKeyOfValue, class VoidOrKeyComp>
255
+ template<class ValuePtr, class VoidOrKeyOfValue, class VoidOrKeyComp>
256
256
  struct bst_key_types
257
257
  {
258
+ typedef typename pointer_element<ValuePtr>::type value_type;
258
259
  typedef typename get_key_of_value
259
- < VoidOrKeyOfValue, T>::type key_of_value;
260
- typedef typename key_of_value::type key_type;
260
+ < VoidOrKeyOfValue, value_type>::type key_of_value;
261
+ typedef typename key_of_value::type key_type;
261
262
  typedef typename get_compare< VoidOrKeyComp
262
263
  , key_type
263
- >::type key_compare;
264
+ >::type key_compare;
264
265
  typedef tree_value_compare
265
- <key_type, T, key_compare, key_of_value> value_compare;
266
+ <ValuePtr, key_compare, key_of_value> value_compare;
266
267
  };
267
268
 
268
269
  template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, algo_types AlgoType, typename HeaderHolder>
@@ -271,15 +272,16 @@ struct bstbase2
271
272
  //Use public inheritance to avoid MSVC bugs with closures
272
273
  : public detail::ebo_functor_holder
273
274
  < typename bst_key_types
274
- < typename ValueTraits::value_type
275
+ < typename ValueTraits::pointer
275
276
  , VoidOrKeyOfValue
276
277
  , VoidOrKeyComp
278
+
277
279
  >::value_compare
278
280
  >
279
281
  , public bstbase3<ValueTraits, AlgoType, HeaderHolder>
280
282
  {
281
283
  typedef bstbase3<ValueTraits, AlgoType, HeaderHolder> treeheader_t;
282
- typedef bst_key_types< typename ValueTraits::value_type
284
+ typedef bst_key_types< typename ValueTraits::pointer
283
285
  , VoidOrKeyOfValue
284
286
  , VoidOrKeyComp> key_types;
285
287
  typedef typename treeheader_t::value_traits value_traits;
@@ -311,17 +313,17 @@ struct bstbase2
311
313
  typedef BOOST_INTRUSIVE_IMPDEF(typename pointer_traits<const_pointer>::difference_type) difference_type;
312
314
  typedef typename node_algorithms::insert_commit_data insert_commit_data;
313
315
 
314
- value_compare value_comp() const
316
+ BOOST_INTRUSIVE_FORCEINLINE value_compare value_comp() const
315
317
  { return this->comp(); }
316
318
 
317
- key_compare key_comp() const
319
+ BOOST_INTRUSIVE_FORCEINLINE key_compare key_comp() const
318
320
  { return this->comp().key_comp(); }
319
321
 
320
322
  //lower_bound
321
- iterator lower_bound(const key_type &key)
323
+ BOOST_INTRUSIVE_FORCEINLINE iterator lower_bound(const key_type &key)
322
324
  { return this->lower_bound(key, this->key_comp()); }
323
325
 
324
- const_iterator lower_bound(const key_type &key) const
326
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator lower_bound(const key_type &key) const
325
327
  { return this->lower_bound(key, this->key_comp()); }
326
328
 
327
329
  template<class KeyType, class KeyTypeKeyCompare>
@@ -339,7 +341,7 @@ struct bstbase2
339
341
  }
340
342
 
341
343
  //upper_bound
342
- iterator upper_bound(const key_type &key)
344
+ BOOST_INTRUSIVE_FORCEINLINE iterator upper_bound(const key_type &key)
343
345
  { return this->upper_bound(key, this->key_comp()); }
344
346
 
345
347
  template<class KeyType, class KeyTypeKeyCompare>
@@ -349,7 +351,7 @@ struct bstbase2
349
351
  (this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
350
352
  }
351
353
 
352
- const_iterator upper_bound(const key_type &key) const
354
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator upper_bound(const key_type &key) const
353
355
  { return this->upper_bound(key, this->key_comp()); }
354
356
 
355
357
  template<class KeyType, class KeyTypeKeyCompare>
@@ -364,13 +366,13 @@ struct bstbase2
364
366
  { typedef detail::key_nodeptr_comp<KeyTypeKeyCompare, value_traits, key_of_value> type; };
365
367
 
366
368
  template<class KeyTypeKeyCompare>
367
- typename key_node_comp_ret<KeyTypeKeyCompare>::type key_node_comp(KeyTypeKeyCompare comp) const
369
+ BOOST_INTRUSIVE_FORCEINLINE typename key_node_comp_ret<KeyTypeKeyCompare>::type key_node_comp(KeyTypeKeyCompare comp) const
368
370
  {
369
371
  return detail::key_nodeptr_comp<KeyTypeKeyCompare, value_traits, key_of_value>(comp, &this->get_value_traits());
370
372
  }
371
373
 
372
374
  //find
373
- iterator find(const key_type &key)
375
+ BOOST_INTRUSIVE_FORCEINLINE iterator find(const key_type &key)
374
376
  { return this->find(key, this->key_comp()); }
375
377
 
376
378
  template<class KeyType, class KeyTypeKeyCompare>
@@ -380,7 +382,7 @@ struct bstbase2
380
382
  (node_algorithms::find(this->header_ptr(), key, this->key_node_comp(comp)), this->priv_value_traits_ptr());
381
383
  }
382
384
 
383
- const_iterator find(const key_type &key) const
385
+ BOOST_INTRUSIVE_FORCEINLINE const_iterator find(const key_type &key) const
384
386
  { return this->find(key, this->key_comp()); }
385
387
 
386
388
  template<class KeyType, class KeyTypeKeyCompare>
@@ -391,7 +393,7 @@ struct bstbase2
391
393
  }
392
394
 
393
395
  //equal_range
394
- std::pair<iterator,iterator> equal_range(const key_type &key)
396
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator,iterator> equal_range(const key_type &key)
395
397
  { return this->equal_range(key, this->key_comp()); }
396
398
 
397
399
  template<class KeyType, class KeyTypeKeyCompare>
@@ -403,7 +405,7 @@ struct bstbase2
403
405
  , iterator(ret.second, this->priv_value_traits_ptr()));
404
406
  }
405
407
 
406
- std::pair<const_iterator, const_iterator>
408
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<const_iterator, const_iterator>
407
409
  equal_range(const key_type &key) const
408
410
  { return this->equal_range(key, this->key_comp()); }
409
411
 
@@ -418,7 +420,7 @@ struct bstbase2
418
420
  }
419
421
 
420
422
  //lower_bound_range
421
- std::pair<iterator,iterator> lower_bound_range(const key_type &key)
423
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator,iterator> lower_bound_range(const key_type &key)
422
424
  { return this->lower_bound_range(key, this->key_comp()); }
423
425
 
424
426
  template<class KeyType, class KeyTypeKeyCompare>
@@ -430,7 +432,7 @@ struct bstbase2
430
432
  , iterator(ret.second, this->priv_value_traits_ptr()));
431
433
  }
432
434
 
433
- std::pair<const_iterator, const_iterator>
435
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<const_iterator, const_iterator>
434
436
  lower_bound_range(const key_type &key) const
435
437
  { return this->lower_bound_range(key, this->key_comp()); }
436
438
 
@@ -445,7 +447,7 @@ struct bstbase2
445
447
  }
446
448
 
447
449
  //bounded_range
448
- std::pair<iterator,iterator> bounded_range
450
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator,iterator> bounded_range
449
451
  (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed)
450
452
  { return this->bounded_range(lower_key, upper_key, this->key_comp(), left_closed, right_closed); }
451
453
 
@@ -460,7 +462,7 @@ struct bstbase2
460
462
  , iterator(ret.second, this->priv_value_traits_ptr()));
461
463
  }
462
464
 
463
- std::pair<const_iterator,const_iterator> bounded_range
465
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<const_iterator,const_iterator> bounded_range
464
466
  (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const
465
467
  { return this->bounded_range(lower_key, upper_key, this->key_comp(), left_closed, right_closed); }
466
468
 
@@ -476,8 +478,20 @@ struct bstbase2
476
478
  }
477
479
 
478
480
  //insert_unique_check
481
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert_unique_check
482
+ (const key_type &key, insert_commit_data &commit_data)
483
+ { return this->insert_unique_check(key, this->key_comp(), commit_data); }
484
+
485
+ BOOST_INTRUSIVE_FORCEINLINE std::pair<iterator, bool> insert_unique_check
486
+ (const_iterator hint, const key_type &key, insert_commit_data &commit_data)
487
+ { return this->insert_unique_check(hint, key, this->key_comp(), commit_data); }
488
+
479
489
  template<class KeyType, class KeyTypeKeyCompare>
480
- std::pair<iterator, bool> insert_unique_check
490
+ BOOST_INTRUSIVE_DOC1ST(std::pair<iterator BOOST_INTRUSIVE_I bool>
491
+ , typename detail::disable_if_convertible
492
+ <KeyType BOOST_INTRUSIVE_I const_iterator BOOST_INTRUSIVE_I
493
+ std::pair<iterator BOOST_INTRUSIVE_I bool> >::type)
494
+ insert_unique_check
481
495
  (const KeyType &key, KeyTypeKeyCompare comp, insert_commit_data &commit_data)
482
496
  {
483
497
  std::pair<node_ptr, bool> ret =
@@ -488,8 +502,7 @@ struct bstbase2
488
502
 
489
503
  template<class KeyType, class KeyTypeKeyCompare>
490
504
  std::pair<iterator, bool> insert_unique_check
491
- (const_iterator hint, const KeyType &key
492
- ,KeyTypeKeyCompare comp, insert_commit_data &commit_data)
505
+ (const_iterator hint, const KeyType &key, KeyTypeKeyCompare comp, insert_commit_data &commit_data)
493
506
  {
494
507
  std::pair<node_ptr, bool> ret =
495
508
  (node_algorithms::insert_unique_check
@@ -514,7 +527,7 @@ struct bstbase_hack
514
527
  typedef typename get_algo
515
528
  <AlgoType, node_traits>::type algo_type;
516
529
 
517
- bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
530
+ BOOST_INTRUSIVE_FORCEINLINE bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
518
531
  : base_type(comp, vtraits)
519
532
  {
520
533
  this->sz_traits().set_size(size_type(0));
@@ -522,10 +535,10 @@ struct bstbase_hack
522
535
 
523
536
  typedef detail::size_holder<ConstantTimeSize, SizeType> size_traits;
524
537
 
525
- size_traits &sz_traits()
538
+ BOOST_INTRUSIVE_FORCEINLINE size_traits &sz_traits()
526
539
  { return static_cast<size_traits &>(*this); }
527
540
 
528
- const size_traits &sz_traits() const
541
+ BOOST_INTRUSIVE_FORCEINLINE const size_traits &sz_traits() const
529
542
  { return static_cast<const size_traits &>(*this); }
530
543
  };
531
544
 
@@ -537,24 +550,16 @@ struct bstbase_hack<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, false, SizeTyp
537
550
  typedef bstbase2< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, AlgoType, HeaderHolder> base_type;
538
551
  typedef typename base_type::value_compare value_compare;
539
552
  typedef typename base_type::key_compare key_compare;
540
- bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
553
+ BOOST_INTRUSIVE_FORCEINLINE bstbase_hack(const key_compare & comp, const ValueTraits &vtraits)
541
554
  : base_type(comp, vtraits)
542
555
  {}
543
556
 
544
557
  typedef detail::size_holder<false, SizeType> size_traits;
545
558
 
546
- size_traits &sz_traits()
547
- { return s_size_traits; }
548
-
549
- const size_traits &sz_traits() const
550
- { return s_size_traits; }
551
-
552
- static size_traits s_size_traits;
559
+ BOOST_INTRUSIVE_FORCEINLINE size_traits sz_traits() const
560
+ { return size_traits(); }
553
561
  };
554
562
 
555
- template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class SizeType, algo_types AlgoType, typename HeaderHolder>
556
- detail::size_holder<false, SizeType> bstbase_hack<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, false, SizeType, AlgoType, HeaderHolder>::s_size_traits;
557
-
558
563
  //This class will
559
564
  template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, bool ConstantTimeSize, class SizeType, algo_types AlgoType, typename HeaderHolder>
560
565
  struct bstbase
@@ -573,7 +578,7 @@ struct bstbase
573
578
  <AlgoType, node_traits>::type node_algorithms;
574
579
  typedef SizeType size_type;
575
580
 
576
- bstbase(const key_compare & comp, const ValueTraits &vtraits)
581
+ BOOST_INTRUSIVE_FORCEINLINE bstbase(const key_compare & comp, const ValueTraits &vtraits)
577
582
  : base_type(comp, vtraits)
578
583
  {}
579
584
 
@@ -679,8 +684,18 @@ class bstree_impl
679
684
  //! <b>Throws</b>: If value_traits::node_traits::node
680
685
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
681
686
  //! or the copy constructor of the key_compare object throws. Basic guarantee.
682
- explicit bstree_impl( const key_compare &cmp = key_compare()
683
- , const value_traits &v_traits = value_traits())
687
+ bstree_impl()
688
+ : data_type(key_compare(), value_traits())
689
+ {}
690
+
691
+ //! <b>Effects</b>: Constructs an empty container with given comparison and traits.
692
+ //!
693
+ //! <b>Complexity</b>: Constant.
694
+ //!
695
+ //! <b>Throws</b>: If value_traits::node_traits::node
696
+ //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
697
+ //! or the copy constructor of the key_compare object throws. Basic guarantee.
698
+ explicit bstree_impl( const key_compare &cmp, const value_traits &v_traits = value_traits())
684
699
  : data_type(cmp, v_traits)
685
700
  {}
686
701
 
@@ -719,7 +734,7 @@ class bstree_impl
719
734
 
720
735
  //! <b>Effects</b>: to-do
721
736
  //!
722
- bstree_impl& operator=(BOOST_RV_REF(bstree_impl) x)
737
+ BOOST_INTRUSIVE_FORCEINLINE bstree_impl& operator=(BOOST_RV_REF(bstree_impl) x)
723
738
  { this->swap(x); return *this; }
724
739
 
725
740
  #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
@@ -823,6 +838,27 @@ class bstree_impl
823
838
  //! <b>Throws</b>: Nothing.
824
839
  const_reverse_iterator crend() const;
825
840
 
841
+ //! <b>Effects</b>: Returns a iterator pointing to the root node of the container or end() if not present.
842
+ //!
843
+ //! <b>Complexity</b>: Constant.
844
+ //!
845
+ //! <b>Throws</b>: Nothing.
846
+ iterator root();
847
+
848
+ //! <b>Effects</b>: Returns a const_iterator pointing to the root node of the container or cend() if not present.
849
+ //!
850
+ //! <b>Complexity</b>: Constant.
851
+ //!
852
+ //! <b>Throws</b>: Nothing.
853
+ const_iterator root() const;
854
+
855
+ //! <b>Effects</b>: Returns a const_iterator pointing to the root node of the container or cend() if not present.
856
+ //!
857
+ //! <b>Complexity</b>: Constant.
858
+ //!
859
+ //! <b>Throws</b>: Nothing.
860
+ const_iterator croot() const;
861
+
826
862
  #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
827
863
 
828
864
  //! <b>Precondition</b>: end_iterator must be a valid end iterator
@@ -931,14 +967,10 @@ class bstree_impl
931
967
  void swap(bstree_impl& other)
932
968
  {
933
969
  //This can throw
934
- ::boost::adl_move_swap(this->comp(), this->comp());
970
+ ::boost::adl_move_swap(this->comp(), other.comp());
935
971
  //These can't throw
936
972
  node_algorithms::swap_tree(this->header_ptr(), node_ptr(other.header_ptr()));
937
- if(constant_time_size){
938
- size_type backup = this->sz_traits().get_size();
939
- this->sz_traits().set_size(other.sz_traits().get_size());
940
- other.sz_traits().set_size(backup);
941
- }
973
+ this->sz_traits().swap(other.sz_traits());
942
974
  }
943
975
 
944
976
  //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
@@ -1154,6 +1186,36 @@ class bstree_impl
1154
1186
 
1155
1187
  #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1156
1188
 
1189
+ //! <b>Effects</b>: Checks if a value can be inserted in the container, using
1190
+ //! a user provided key instead of the value itself.
1191
+ //!
1192
+ //! <b>Returns</b>: If there is an equivalent value
1193
+ //! returns a pair containing an iterator to the already present value
1194
+ //! and false. If the value can be inserted returns true in the returned
1195
+ //! pair boolean and fills "commit_data" that is meant to be used with
1196
+ //! the "insert_commit" function.
1197
+ //!
1198
+ //! <b>Complexity</b>: Average complexity is at most logarithmic.
1199
+ //!
1200
+ //! <b>Throws</b>: If the comp ordering function throws. Strong guarantee.
1201
+ std::pair<iterator, bool> insert_unique_check(const key_type &key, insert_commit_data &commit_data);
1202
+
1203
+ //! <b>Effects</b>: Checks if a value can be inserted in the container, using
1204
+ //! a user provided key instead of the value itself, using "hint"
1205
+ //! as a hint to where it will be inserted.
1206
+ //!
1207
+ //! <b>Returns</b>: If there is an equivalent value
1208
+ //! returns a pair containing an iterator to the already present value
1209
+ //! and false. If the value can be inserted returns true in the returned
1210
+ //! pair boolean and fills "commit_data" that is meant to be used with
1211
+ //! the "insert_commit" function.
1212
+ //!
1213
+ //! <b>Complexity</b>: Logarithmic in general, but it's amortized
1214
+ //! constant time if t is inserted immediately before hint.
1215
+ //!
1216
+ //! <b>Throws</b>: If the comp ordering function throws. Strong guarantee.
1217
+ std::pair<iterator, bool> insert_unique_check(const_iterator hint, const key_type &key, insert_commit_data &commit_data);
1218
+
1157
1219
  //! <b>Requires</b>: comp must be a comparison function that induces
1158
1220
  //! the same strict weak ordering as key_compare. The difference is that
1159
1221
  //! comp compares an arbitrary key with the contained values.
@@ -1905,6 +1967,78 @@ class bstree_impl
1905
1967
  node_algorithms::init(to_remove);
1906
1968
  }
1907
1969
 
1970
+ //! <b>Requires</b>: "source" container's Options can only can differ in the comparison
1971
+ //! function from *this.
1972
+ //!
1973
+ //! <b>Effects</b>: Attempts to extract each element in source and insert it into a using
1974
+ //! the comparison object of *this. If there is an element in a with key equivalent to the
1975
+ //! key of an element from source, then that element is not extracted from source.
1976
+ //!
1977
+ //! <b>Postcondition</b>: Pointers and references to the transferred elements of source refer
1978
+ //! to those same elements but as members of *this. Iterators referring to the transferred
1979
+ //! elements will continue to refer to their elements, but they now behave as iterators into *this,
1980
+ //! not into source.
1981
+ //!
1982
+ //! <b>Throws</b>: Nothing unless the comparison object throws.
1983
+ //!
1984
+ //! <b>Complexity</b>: N log(a.size() + N) (N has the value source.size())
1985
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1986
+ template<class T, class ...Options2> void merge_unique(bstree<T, Options2...> &);
1987
+ #else
1988
+ template<class Compare2>
1989
+ void merge_unique(bstree_impl
1990
+ <ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, AlgoType, HeaderHolder> &source)
1991
+ #endif
1992
+ {
1993
+ node_ptr it (node_algorithms::begin_node(source.header_ptr()))
1994
+ , itend(node_algorithms::end_node (source.header_ptr()));
1995
+
1996
+ while(it != itend){
1997
+ node_ptr const p(it);
1998
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || !node_algorithms::unique(p));
1999
+ it = node_algorithms::next_node(it);
2000
+ if( node_algorithms::transfer_unique(this->header_ptr(), this->key_node_comp(this->key_comp()), source.header_ptr(), p) ){
2001
+ source.sz_traits().decrement();
2002
+ this->sz_traits().increment();
2003
+ }
2004
+ }
2005
+ }
2006
+
2007
+ //! <b>Requires</b>: "source" container's Options can only can differ in the comparison
2008
+ //! function from *this.
2009
+ //!
2010
+ //! <b>Effects</b>: Extracts each element in source and insert it into a using
2011
+ //! the comparison object of *this.
2012
+ //!
2013
+ //! <b>Postcondition</b>: Pointers and references to the transferred elements of source refer
2014
+ //! to those same elements but as members of *this. Iterators referring to the transferred
2015
+ //! elements will continue to refer to their elements, but they now behave as iterators into *this,
2016
+ //! not into source.
2017
+ //!
2018
+ //! <b>Throws</b>: Nothing unless the comparison object throws.
2019
+ //!
2020
+ //! <b>Complexity</b>: N log(a.size() + N) (N has the value source.size())
2021
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2022
+ template<class T, class ...Options2> void merge_equal(bstree<T, Options2...> &);
2023
+ #else
2024
+ template<class Compare2>
2025
+ void merge_equal(bstree_impl
2026
+ <ValueTraits, VoidOrKeyOfValue, Compare2, SizeType, ConstantTimeSize, AlgoType, HeaderHolder> &source)
2027
+ #endif
2028
+ {
2029
+ node_ptr it (node_algorithms::begin_node(source.header_ptr()))
2030
+ , itend(node_algorithms::end_node (source.header_ptr()));
2031
+
2032
+ while(it != itend){
2033
+ node_ptr const p(it);
2034
+ BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!safemode_or_autounlink || !node_algorithms::unique(p));
2035
+ it = node_algorithms::next_node(it);
2036
+ node_algorithms::transfer_equal(this->header_ptr(), this->key_node_comp(this->key_comp()), source.header_ptr(), p);
2037
+ source.sz_traits().decrement();
2038
+ this->sz_traits().increment();
2039
+ }
2040
+ }
2041
+
1908
2042
  //! <b>Effects</b>: Asserts the integrity of the container with additional checks provided by the user.
1909
2043
  //!
1910
2044
  //! <b>Complexity</b>: Linear time.
@@ -2052,8 +2186,11 @@ class bstree
2052
2186
  //Assert if passed value traits are compatible with the type
2053
2187
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
2054
2188
 
2055
- bstree( const key_compare &cmp = key_compare()
2056
- , const value_traits &v_traits = value_traits())
2189
+ bstree()
2190
+ : Base()
2191
+ {}
2192
+
2193
+ explicit bstree( const key_compare &cmp, const value_traits &v_traits = value_traits())
2057
2194
  : Base(cmp, v_traits)
2058
2195
  {}
2059
2196