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
@@ -37,6 +37,9 @@ namespace intrusive {
37
37
  template <class NodePtr>
38
38
  struct insert_commit_data_t
39
39
  {
40
+ BOOST_INTRUSIVE_FORCEINLINE insert_commit_data_t()
41
+ : link_left(false), node()
42
+ {}
40
43
  bool link_left;
41
44
  NodePtr node;
42
45
  };
@@ -63,14 +66,16 @@ struct bstree_node_checker
63
66
  struct return_type
64
67
  : public base_checker_t::return_type
65
68
  {
66
- return_type() : min_key_node_ptr(const_node_ptr()), max_key_node_ptr(const_node_ptr()), node_count(0) {}
69
+ BOOST_INTRUSIVE_FORCEINLINE return_type()
70
+ : min_key_node_ptr(const_node_ptr()), max_key_node_ptr(const_node_ptr()), node_count(0)
71
+ {}
67
72
 
68
73
  const_node_ptr min_key_node_ptr;
69
74
  const_node_ptr max_key_node_ptr;
70
75
  size_t node_count;
71
76
  };
72
77
 
73
- bstree_node_checker(const NodePtrCompare& comp, ExtraChecker extra_checker)
78
+ BOOST_INTRUSIVE_FORCEINLINE bstree_node_checker(const NodePtrCompare& comp, ExtraChecker extra_checker)
74
79
  : base_checker_t(extra_checker), comp_(comp)
75
80
  {}
76
81
 
@@ -182,14 +187,14 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
182
187
  template<class Disposer>
183
188
  struct dispose_subtree_disposer
184
189
  {
185
- dispose_subtree_disposer(Disposer &disp, const node_ptr & subtree)
190
+ BOOST_INTRUSIVE_FORCEINLINE dispose_subtree_disposer(Disposer &disp, const node_ptr & subtree)
186
191
  : disposer_(&disp), subtree_(subtree)
187
192
  {}
188
193
 
189
- void release()
194
+ BOOST_INTRUSIVE_FORCEINLINE void release()
190
195
  { disposer_ = 0; }
191
196
 
192
- ~dispose_subtree_disposer()
197
+ BOOST_INTRUSIVE_FORCEINLINE ~dispose_subtree_disposer()
193
198
  {
194
199
  if(disposer_){
195
200
  dispose_subtree(subtree_, *disposer_);
@@ -209,7 +214,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
209
214
  //! <b>Complexity</b>: Constant time.
210
215
  //!
211
216
  //! <b>Throws</b>: Nothing.
212
- static node_ptr begin_node(const const_node_ptr & header)
217
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr begin_node(const const_node_ptr & header)
213
218
  { return node_traits::get_left(header); }
214
219
 
215
220
  //! <b>Requires</b>: 'header' is the header node of a tree.
@@ -219,7 +224,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
219
224
  //! <b>Complexity</b>: Constant time.
220
225
  //!
221
226
  //! <b>Throws</b>: Nothing.
222
- static node_ptr end_node(const const_node_ptr & header)
227
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr end_node(const const_node_ptr & header)
223
228
  { return detail::uncast(header); }
224
229
 
225
230
  //! <b>Requires</b>: 'header' is the header node of a tree.
@@ -229,7 +234,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
229
234
  //! <b>Complexity</b>: Constant time.
230
235
  //!
231
236
  //! <b>Throws</b>: Nothing.
232
- static node_ptr root_node(const const_node_ptr & header)
237
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr root_node(const const_node_ptr & header)
233
238
  {
234
239
  node_ptr p = node_traits::get_parent(header);
235
240
  return p ? p : detail::uncast(header);
@@ -243,7 +248,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
243
248
  //! <b>Complexity</b>: Constant time.
244
249
  //!
245
250
  //! <b>Throws</b>: Nothing.
246
- static bool unique(const const_node_ptr & node)
251
+ BOOST_INTRUSIVE_FORCEINLINE static bool unique(const const_node_ptr & node)
247
252
  { return !NodeTraits::get_parent(node); }
248
253
 
249
254
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
@@ -443,7 +448,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
443
448
  //! new_node is not equivalent to node_to_be_replaced according to the
444
449
  //! ordering rules. This function is faster than erasing and inserting
445
450
  //! the node, since no rebalancing and comparison is needed. Experimental function
446
- static void replace_node(const node_ptr & node_to_be_replaced, const node_ptr & new_node)
451
+ BOOST_INTRUSIVE_FORCEINLINE static void replace_node(const node_ptr & node_to_be_replaced, const node_ptr & new_node)
447
452
  {
448
453
  if(node_to_be_replaced == new_node)
449
454
  return;
@@ -554,7 +559,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
554
559
  //! <b>Throws</b>: Nothing.
555
560
  //!
556
561
  //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
557
- static void init(const node_ptr & node)
562
+ BOOST_INTRUSIVE_FORCEINLINE static void init(const node_ptr & node)
558
563
  {
559
564
  NodeTraits::set_parent(node, node_ptr());
560
565
  NodeTraits::set_left(node, node_ptr());
@@ -566,7 +571,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
566
571
  //! <b>Complexity</b>: Constant.
567
572
  //!
568
573
  //! <b>Throws</b>: Nothing.
569
- static bool inited(const const_node_ptr & node)
574
+ BOOST_INTRUSIVE_FORCEINLINE static bool inited(const const_node_ptr & node)
570
575
  {
571
576
  return !NodeTraits::get_parent(node) &&
572
577
  !NodeTraits::get_left(node) &&
@@ -583,7 +588,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
583
588
  //! <b>Throws</b>: Nothing.
584
589
  //!
585
590
  //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
586
- static void init_header(const node_ptr & header)
591
+ BOOST_INTRUSIVE_FORCEINLINE static void init_header(const node_ptr & header)
587
592
  {
588
593
  NodeTraits::set_parent(header, node_ptr());
589
594
  NodeTraits::set_left(header, header);
@@ -865,7 +870,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
865
870
  //!
866
871
  //! <b>Throws</b>: If "comp" throws.
867
872
  template<class KeyType, class KeyNodePtrCompare>
868
- static std::pair<node_ptr, node_ptr> equal_range
873
+ BOOST_INTRUSIVE_FORCEINLINE static std::pair<node_ptr, node_ptr> equal_range
869
874
  (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
870
875
  {
871
876
  return bounded_range(header, key, key, comp, true, true);
@@ -909,7 +914,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
909
914
  //!
910
915
  //! <b>Throws</b>: If "comp" throws.
911
916
  template<class KeyType, class KeyNodePtrCompare>
912
- static node_ptr lower_bound
917
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr lower_bound
913
918
  (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
914
919
  {
915
920
  return lower_bound_loop(NodeTraits::get_parent(header), detail::uncast(header), key, comp);
@@ -927,7 +932,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
927
932
  //!
928
933
  //! <b>Throws</b>: If "comp" throws.
929
934
  template<class KeyType, class KeyNodePtrCompare>
930
- static node_ptr upper_bound
935
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr upper_bound
931
936
  (const const_node_ptr & header, const KeyType &key, KeyNodePtrCompare comp)
932
937
  {
933
938
  return upper_bound_loop(NodeTraits::get_parent(header), detail::uncast(header), key, comp);
@@ -950,7 +955,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
950
955
  //! <b>Notes</b>: This function has only sense if a "insert_unique_check" has been
951
956
  //! previously executed to fill "commit_data". No value should be inserted or
952
957
  //! erased between the "insert_check" and "insert_commit" calls.
953
- static void insert_unique_commit
958
+ BOOST_INTRUSIVE_FORCEINLINE static void insert_unique_commit
954
959
  (const node_ptr & header, const node_ptr & new_value, const insert_commit_data &commit_data)
955
960
  { return insert_commit(header, new_value, commit_data); }
956
961
 
@@ -1311,12 +1316,49 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
1311
1316
  //! <b>Complexity</b>: Amortized constant time.
1312
1317
  //!
1313
1318
  //! <b>Throws</b>: Nothing.
1314
- static void erase(const node_ptr & header, const node_ptr & z)
1319
+ BOOST_INTRUSIVE_FORCEINLINE static void erase(const node_ptr & header, const node_ptr & z)
1315
1320
  {
1316
1321
  data_for_rebalance ignored;
1317
1322
  erase(header, z, ignored);
1318
1323
  }
1319
1324
 
1325
+ //! <b>Requires</b>: header1 and header2 must be the headers of trees tree1 and tree2
1326
+ //! respectively, z a non-header node of tree1. NodePtrCompare is the comparison
1327
+ //! function of tree1..
1328
+ //!
1329
+ //! <b>Effects</b>: Transfers node "z" from tree1 to tree2 if tree1 does not contain
1330
+ //! a node that is equivalent to z.
1331
+ //!
1332
+ //! <b>Returns</b>: True if the node was trasferred, false otherwise.
1333
+ //!
1334
+ //! <b>Complexity</b>: Logarithmic.
1335
+ //!
1336
+ //! <b>Throws</b>: If the comparison throws.
1337
+ template<class NodePtrCompare>
1338
+ BOOST_INTRUSIVE_FORCEINLINE static bool transfer_unique
1339
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z)
1340
+ {
1341
+ data_for_rebalance ignored;
1342
+ return transfer_unique(header1, comp, header2, z, ignored);
1343
+ }
1344
+
1345
+ //! <b>Requires</b>: header1 and header2 must be the headers of trees tree1 and tree2
1346
+ //! respectively, z a non-header node of tree1. NodePtrCompare is the comparison
1347
+ //! function of tree1..
1348
+ //!
1349
+ //! <b>Effects</b>: Transfers node "z" from tree1 to tree2.
1350
+ //!
1351
+ //! <b>Complexity</b>: Logarithmic.
1352
+ //!
1353
+ //! <b>Throws</b>: If the comparison throws.
1354
+ template<class NodePtrCompare>
1355
+ BOOST_INTRUSIVE_FORCEINLINE static void transfer_equal
1356
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z)
1357
+ {
1358
+ data_for_rebalance ignored;
1359
+ transfer_equal(header1, comp, header2, z, ignored);
1360
+ }
1361
+
1320
1362
  //! <b>Requires</b>: node is a tree node but not the header.
1321
1363
  //!
1322
1364
  //! <b>Effects</b>: Unlinks the node and rebalances the tree.
@@ -1431,6 +1473,30 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
1431
1473
  }
1432
1474
 
1433
1475
  protected:
1476
+
1477
+ template<class NodePtrCompare>
1478
+ static bool transfer_unique
1479
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z, data_for_rebalance &info)
1480
+ {
1481
+ insert_commit_data commit_data;
1482
+ bool const transferable = insert_unique_check(header1, z, comp, commit_data).second;
1483
+ if(transferable){
1484
+ erase(header2, z, info);
1485
+ insert_commit(header1, z, commit_data);
1486
+ }
1487
+ return transferable;
1488
+ }
1489
+
1490
+ template<class NodePtrCompare>
1491
+ static void transfer_equal
1492
+ (const node_ptr & header1, NodePtrCompare comp, const node_ptr &header2, const node_ptr & z, data_for_rebalance &info)
1493
+ {
1494
+ insert_commit_data commit_data;
1495
+ insert_equal_upper_bound_check(header1, z, comp, commit_data);
1496
+ erase(header2, z, info);
1497
+ insert_commit(header1, z, commit_data);
1498
+ }
1499
+
1434
1500
  static void erase(const node_ptr & header, const node_ptr & z, data_for_rebalance &info)
1435
1501
  {
1436
1502
  node_ptr y(z);
@@ -1563,7 +1629,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
1563
1629
  //! <b>Complexity</b>: Constant.
1564
1630
  //!
1565
1631
  //! <b>Throws</b>: Nothing.
1566
- static bool is_left_child(const node_ptr & p)
1632
+ BOOST_INTRUSIVE_FORCEINLINE static bool is_left_child(const node_ptr & p)
1567
1633
  { return NodeTraits::get_left(NodeTraits::get_parent(p)) == p; }
1568
1634
 
1569
1635
  //! <b>Requires</b>: p is a node of a tree.
@@ -1573,7 +1639,7 @@ class bstree_algorithms : public bstree_algorithms_base<NodeTraits>
1573
1639
  //! <b>Complexity</b>: Constant.
1574
1640
  //!
1575
1641
  //! <b>Throws</b>: Nothing.
1576
- static bool is_right_child(const node_ptr & p)
1642
+ BOOST_INTRUSIVE_FORCEINLINE static bool is_right_child(const node_ptr & p)
1577
1643
  { return NodeTraits::get_right(NodeTraits::get_parent(p)) == p; }
1578
1644
 
1579
1645
  static void insert_before_check
@@ -67,7 +67,7 @@ class circular_list_algorithms
67
67
  //! <b>Complexity</b>: Constant
68
68
  //!
69
69
  //! <b>Throws</b>: Nothing.
70
- static void init(const node_ptr &this_node)
70
+ BOOST_INTRUSIVE_FORCEINLINE static void init(const node_ptr &this_node)
71
71
  {
72
72
  const node_ptr null_node((node_ptr()));
73
73
  NodeTraits::set_next(this_node, null_node);
@@ -80,7 +80,7 @@ class circular_list_algorithms
80
80
  //! <b>Complexity</b>: Constant
81
81
  //!
82
82
  //! <b>Throws</b>: Nothing.
83
- static bool inited(const const_node_ptr &this_node)
83
+ BOOST_INTRUSIVE_FORCEINLINE static bool inited(const const_node_ptr &this_node)
84
84
  { return !NodeTraits::get_next(this_node); }
85
85
 
86
86
  //! <b>Effects</b>: Constructs an empty list, making this_node the only
@@ -91,7 +91,7 @@ class circular_list_algorithms
91
91
  //! <b>Complexity</b>: Constant
92
92
  //!
93
93
  //! <b>Throws</b>: Nothing.
94
- static void init_header(const node_ptr &this_node)
94
+ BOOST_INTRUSIVE_FORCEINLINE static void init_header(const node_ptr &this_node)
95
95
  {
96
96
  NodeTraits::set_next(this_node, this_node);
97
97
  NodeTraits::set_previous(this_node, this_node);
@@ -106,7 +106,7 @@ class circular_list_algorithms
106
106
  //! <b>Complexity</b>: Constant
107
107
  //!
108
108
  //! <b>Throws</b>: Nothing.
109
- static bool unique(const const_node_ptr &this_node)
109
+ BOOST_INTRUSIVE_FORCEINLINE static bool unique(const const_node_ptr &this_node)
110
110
  {
111
111
  node_ptr next = NodeTraits::get_next(this_node);
112
112
  return !next || next == this_node;
@@ -138,7 +138,7 @@ class circular_list_algorithms
138
138
  //! <b>Complexity</b>: Constant
139
139
  //!
140
140
  //! <b>Throws</b>: Nothing.
141
- static node_ptr unlink(const node_ptr &this_node)
141
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr unlink(const node_ptr &this_node)
142
142
  {
143
143
  node_ptr next(NodeTraits::get_next(this_node));
144
144
  node_ptr prev(NodeTraits::get_previous(this_node));
@@ -154,7 +154,7 @@ class circular_list_algorithms
154
154
  //! <b>Complexity</b>: Constant
155
155
  //!
156
156
  //! <b>Throws</b>: Nothing.
157
- static void unlink(const node_ptr &b, const node_ptr &e)
157
+ BOOST_INTRUSIVE_FORCEINLINE static void unlink(const node_ptr &b, const node_ptr &e)
158
158
  {
159
159
  if (b != e) {
160
160
  node_ptr prevb(NodeTraits::get_previous(b));
@@ -170,14 +170,14 @@ class circular_list_algorithms
170
170
  //! <b>Complexity</b>: Constant
171
171
  //!
172
172
  //! <b>Throws</b>: Nothing.
173
- static void link_before(const node_ptr &nxt_node, const node_ptr &this_node)
173
+ BOOST_INTRUSIVE_FORCEINLINE static void link_before(const node_ptr &nxt_node, const node_ptr &this_node)
174
174
  {
175
175
  node_ptr prev(NodeTraits::get_previous(nxt_node));
176
176
  NodeTraits::set_previous(this_node, prev);
177
177
  NodeTraits::set_next(this_node, nxt_node);
178
178
  //nxt_node might be an alias for prev->next_
179
179
  //so use it before NodeTraits::set_next(prev, ...)
180
- //is called and the reference changes it's value
180
+ //is called and the reference changes its value
181
181
  NodeTraits::set_previous(nxt_node, this_node);
182
182
  NodeTraits::set_next(prev, this_node);
183
183
  }
@@ -189,7 +189,7 @@ class circular_list_algorithms
189
189
  //! <b>Complexity</b>: Constant
190
190
  //!
191
191
  //! <b>Throws</b>: Nothing.
192
- static void link_after(const node_ptr &prev_node, const node_ptr &this_node)
192
+ BOOST_INTRUSIVE_FORCEINLINE static void link_after(const node_ptr &prev_node, const node_ptr &this_node)
193
193
  {
194
194
  node_ptr next(NodeTraits::get_next(prev_node));
195
195
  NodeTraits::set_previous(this_node, prev_node);
@@ -435,14 +435,14 @@ class circular_list_algorithms
435
435
  }
436
436
 
437
437
  private:
438
- static void swap_prev(const node_ptr &this_node, const node_ptr &other_node)
438
+ BOOST_INTRUSIVE_FORCEINLINE static void swap_prev(const node_ptr &this_node, const node_ptr &other_node)
439
439
  {
440
440
  node_ptr temp(NodeTraits::get_previous(this_node));
441
441
  NodeTraits::set_previous(this_node, NodeTraits::get_previous(other_node));
442
442
  NodeTraits::set_previous(other_node, temp);
443
443
  }
444
444
 
445
- static void swap_next(const node_ptr &this_node, const node_ptr &other_node)
445
+ BOOST_INTRUSIVE_FORCEINLINE static void swap_next(const node_ptr &this_node, const node_ptr &other_node)
446
446
  {
447
447
  node_ptr temp(NodeTraits::get_next(this_node));
448
448
  NodeTraits::set_next(this_node, NodeTraits::get_next(other_node));
@@ -141,7 +141,7 @@ class circular_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, this_node); }
146
146
 
147
147
  //! <b>Requires</b>: this_node and prev_init_node must be in the same circular list.
@@ -153,7 +153,7 @@ class circular_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 circular list or be an empty circular list.
@@ -163,7 +163,7 @@ class circular_slist_algorithms
163
163
  //! <b>Complexity</b>: Linear to the number of elements in the circular list.
164
164
  //!
165
165
  //! <b>Throws</b>: Nothing.
166
- static node_ptr get_previous_node(const node_ptr & this_node)
166
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous_node(const node_ptr & this_node)
167
167
  { return base_t::get_previous_node(this_node, this_node); }
168
168
 
169
169
  //! <b>Requires</b>: this_node must be in a circular list or be an empty circular list.
@@ -173,7 +173,7 @@ class circular_slist_algorithms
173
173
  //! <b>Complexity</b>: Linear to the number of elements in the circular list.
174
174
  //!
175
175
  //! <b>Throws</b>: Nothing.
176
- static node_ptr get_previous_previous_node(const node_ptr & this_node)
176
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous_previous_node(const node_ptr & this_node)
177
177
  { return get_previous_previous_node(this_node, this_node); }
178
178
 
179
179
  //! <b>Requires</b>: this_node and p must be in the same circular list.
@@ -223,7 +223,7 @@ class circular_slist_algorithms
223
223
  //! <b>Complexity</b>: Linear to the number of elements in the circular list
224
224
  //!
225
225
  //! <b>Throws</b>: Nothing.
226
- static void unlink(const node_ptr & this_node)
226
+ BOOST_INTRUSIVE_FORCEINLINE static void unlink(const node_ptr & this_node)
227
227
  {
228
228
  if(NodeTraits::get_next(this_node))
229
229
  base_t::unlink_after(get_previous_node(this_node));
@@ -236,7 +236,7 @@ class circular_slist_algorithms
236
236
  //! <b>Complexity</b>: Linear to the number of elements in the circular list.
237
237
  //!
238
238
  //! <b>Throws</b>: Nothing.
239
- static void link_before (const node_ptr & nxt_node, const node_ptr & this_node)
239
+ BOOST_INTRUSIVE_FORCEINLINE static void link_before (const node_ptr & nxt_node, const node_ptr & this_node)
240
240
  { base_t::link_after(get_previous_node(nxt_node), this_node); }
241
241
 
242
242
  //! <b>Requires</b>: this_node and other_node must be nodes inserted
@@ -35,7 +35,10 @@ enum algo_types
35
35
  AvlTreeAlgorithms,
36
36
  SgTreeAlgorithms,
37
37
  SplayTreeAlgorithms,
38
- TreapAlgorithms
38
+ TreapAlgorithms,
39
+ UnorderedAlgorithms,
40
+ UnorderedCircularSlistAlgorithms,
41
+ AnyAlgorithm
39
42
  };
40
43
 
41
44
  template<algo_types AlgoType, class NodeTraits>
@@ -21,9 +21,11 @@
21
21
  # pragma once
22
22
  #endif
23
23
 
24
+ #include <boost/intrusive/detail/workaround.hpp>
24
25
  #include <boost/intrusive/pointer_rebind.hpp>
25
- #include <cstddef>
26
26
  #include <boost/intrusive/detail/mpl.hpp>
27
+ #include <boost/intrusive/detail/algo_type.hpp>
28
+ #include <cstddef>
27
29
 
28
30
  namespace boost {
29
31
  namespace intrusive {
@@ -47,16 +49,16 @@ struct any_list_node_traits
47
49
  typedef typename node::node_ptr node_ptr;
48
50
  typedef typename node::const_node_ptr const_node_ptr;
49
51
 
50
- static node_ptr get_next(const const_node_ptr & n)
52
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_next(const const_node_ptr & n)
51
53
  { return n->node_ptr_1; }
52
54
 
53
- static void set_next(const node_ptr & n, const node_ptr & next)
55
+ BOOST_INTRUSIVE_FORCEINLINE static void set_next(const node_ptr & n, const node_ptr & next)
54
56
  { n->node_ptr_1 = next; }
55
57
 
56
- static node_ptr get_previous(const const_node_ptr & n)
58
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_previous(const const_node_ptr & n)
57
59
  { return n->node_ptr_2; }
58
60
 
59
- static void set_previous(const node_ptr & n, const node_ptr & prev)
61
+ BOOST_INTRUSIVE_FORCEINLINE static void set_previous(const node_ptr & n, const node_ptr & prev)
60
62
  { n->node_ptr_2 = prev; }
61
63
  };
62
64
 
@@ -68,10 +70,10 @@ struct any_slist_node_traits
68
70
  typedef typename node::node_ptr node_ptr;
69
71
  typedef typename node::const_node_ptr const_node_ptr;
70
72
 
71
- static node_ptr get_next(const const_node_ptr & n)
73
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_next(const const_node_ptr & n)
72
74
  { return n->node_ptr_1; }
73
75
 
74
- static void set_next(const node_ptr & n, const node_ptr & next)
76
+ BOOST_INTRUSIVE_FORCEINLINE static void set_next(const node_ptr & n, const node_ptr & next)
75
77
  { n->node_ptr_1 = next; }
76
78
  };
77
79
 
@@ -88,22 +90,22 @@ struct any_unordered_node_traits
88
90
  static const bool store_hash = true;
89
91
  static const bool optimize_multikey = true;
90
92
 
91
- static node_ptr get_next(const const_node_ptr & n)
93
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_next(const const_node_ptr & n)
92
94
  { return n->node_ptr_1; }
93
95
 
94
- static void set_next(const node_ptr & n, const node_ptr & next)
96
+ BOOST_INTRUSIVE_FORCEINLINE static void set_next(const node_ptr & n, const node_ptr & next)
95
97
  { n->node_ptr_1 = next; }
96
98
 
97
- static node_ptr get_prev_in_group(const const_node_ptr & n)
99
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_prev_in_group(const const_node_ptr & n)
98
100
  { return n->node_ptr_2; }
99
101
 
100
- static void set_prev_in_group(const node_ptr & n, const node_ptr & prev)
102
+ BOOST_INTRUSIVE_FORCEINLINE static void set_prev_in_group(const node_ptr & n, const node_ptr & prev)
101
103
  { n->node_ptr_2 = prev; }
102
104
 
103
- static std::size_t get_hash(const const_node_ptr & n)
105
+ BOOST_INTRUSIVE_FORCEINLINE static std::size_t get_hash(const const_node_ptr & n)
104
106
  { return n->size_t_1; }
105
107
 
106
- static void set_hash(const node_ptr & n, std::size_t h)
108
+ BOOST_INTRUSIVE_FORCEINLINE static void set_hash(const node_ptr & n, std::size_t h)
107
109
  { n->size_t_1 = h; }
108
110
  };
109
111
 
@@ -117,34 +119,34 @@ struct any_rbtree_node_traits
117
119
 
118
120
  typedef std::size_t color;
119
121
 
120
- static node_ptr get_parent(const const_node_ptr & n)
122
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const const_node_ptr & n)
121
123
  { return n->node_ptr_1; }
122
124
 
123
- static void set_parent(const node_ptr & n, const node_ptr & p)
125
+ BOOST_INTRUSIVE_FORCEINLINE static void set_parent(const node_ptr & n, const node_ptr & p)
124
126
  { n->node_ptr_1 = p; }
125
127
 
126
- static node_ptr get_left(const const_node_ptr & n)
128
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const const_node_ptr & n)
127
129
  { return n->node_ptr_2; }
128
130
 
129
- static void set_left(const node_ptr & n, const node_ptr & l)
131
+ BOOST_INTRUSIVE_FORCEINLINE static void set_left(const node_ptr & n, const node_ptr & l)
130
132
  { n->node_ptr_2 = l; }
131
133
 
132
- static node_ptr get_right(const const_node_ptr & n)
134
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const const_node_ptr & n)
133
135
  { return n->node_ptr_3; }
134
136
 
135
- static void set_right(const node_ptr & n, const node_ptr & r)
137
+ BOOST_INTRUSIVE_FORCEINLINE static void set_right(const node_ptr & n, const node_ptr & r)
136
138
  { n->node_ptr_3 = r; }
137
139
 
138
- static color get_color(const const_node_ptr & n)
140
+ BOOST_INTRUSIVE_FORCEINLINE static color get_color(const const_node_ptr & n)
139
141
  { return n->size_t_1; }
140
142
 
141
- static void set_color(const node_ptr & n, color c)
143
+ BOOST_INTRUSIVE_FORCEINLINE static void set_color(const node_ptr & n, color c)
142
144
  { n->size_t_1 = c; }
143
145
 
144
- static color black()
146
+ BOOST_INTRUSIVE_FORCEINLINE static color black()
145
147
  { return 0u; }
146
148
 
147
- static color red()
149
+ BOOST_INTRUSIVE_FORCEINLINE static color red()
148
150
  { return 1u; }
149
151
  };
150
152
 
@@ -158,37 +160,37 @@ struct any_avltree_node_traits
158
160
 
159
161
  typedef std::size_t balance;
160
162
 
161
- static node_ptr get_parent(const const_node_ptr & n)
163
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const const_node_ptr & n)
162
164
  { return n->node_ptr_1; }
163
165
 
164
- static void set_parent(const node_ptr & n, const node_ptr & p)
166
+ BOOST_INTRUSIVE_FORCEINLINE static void set_parent(const node_ptr & n, const node_ptr & p)
165
167
  { n->node_ptr_1 = p; }
166
168
 
167
- static node_ptr get_left(const const_node_ptr & n)
169
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const const_node_ptr & n)
168
170
  { return n->node_ptr_2; }
169
171
 
170
- static void set_left(const node_ptr & n, const node_ptr & l)
172
+ BOOST_INTRUSIVE_FORCEINLINE static void set_left(const node_ptr & n, const node_ptr & l)
171
173
  { n->node_ptr_2 = l; }
172
174
 
173
- static node_ptr get_right(const const_node_ptr & n)
175
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const const_node_ptr & n)
174
176
  { return n->node_ptr_3; }
175
177
 
176
- static void set_right(const node_ptr & n, const node_ptr & r)
178
+ BOOST_INTRUSIVE_FORCEINLINE static void set_right(const node_ptr & n, const node_ptr & r)
177
179
  { n->node_ptr_3 = r; }
178
180
 
179
- static balance get_balance(const const_node_ptr & n)
181
+ BOOST_INTRUSIVE_FORCEINLINE static balance get_balance(const const_node_ptr & n)
180
182
  { return n->size_t_1; }
181
183
 
182
- static void set_balance(const node_ptr & n, balance b)
184
+ BOOST_INTRUSIVE_FORCEINLINE static void set_balance(const node_ptr & n, balance b)
183
185
  { n->size_t_1 = b; }
184
186
 
185
- static balance negative()
187
+ BOOST_INTRUSIVE_FORCEINLINE static balance negative()
186
188
  { return 0u; }
187
189
 
188
- static balance zero()
190
+ BOOST_INTRUSIVE_FORCEINLINE static balance zero()
189
191
  { return 1u; }
190
192
 
191
- static balance positive()
193
+ BOOST_INTRUSIVE_FORCEINLINE static balance positive()
192
194
  { return 2u; }
193
195
  };
194
196
 
@@ -200,22 +202,22 @@ struct any_tree_node_traits
200
202
  typedef typename node::node_ptr node_ptr;
201
203
  typedef typename node::const_node_ptr const_node_ptr;
202
204
 
203
- static node_ptr get_parent(const const_node_ptr & n)
205
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_parent(const const_node_ptr & n)
204
206
  { return n->node_ptr_1; }
205
207
 
206
- static void set_parent(const node_ptr & n, const node_ptr & p)
208
+ BOOST_INTRUSIVE_FORCEINLINE static void set_parent(const node_ptr & n, const node_ptr & p)
207
209
  { n->node_ptr_1 = p; }
208
210
 
209
- static node_ptr get_left(const const_node_ptr & n)
211
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_left(const const_node_ptr & n)
210
212
  { return n->node_ptr_2; }
211
213
 
212
- static void set_left(const node_ptr & n, const node_ptr & l)
214
+ BOOST_INTRUSIVE_FORCEINLINE static void set_left(const node_ptr & n, const node_ptr & l)
213
215
  { n->node_ptr_2 = l; }
214
216
 
215
- static node_ptr get_right(const const_node_ptr & n)
217
+ BOOST_INTRUSIVE_FORCEINLINE static node_ptr get_right(const const_node_ptr & n)
216
218
  { return n->node_ptr_3; }
217
219
 
218
- static void set_right(const node_ptr & n, const node_ptr & r)
220
+ BOOST_INTRUSIVE_FORCEINLINE static void set_right(const node_ptr & n, const node_ptr & r)
219
221
  { n->node_ptr_3 = r; }
220
222
  };
221
223
 
@@ -250,19 +252,19 @@ class any_algorithms
250
252
  //! <b>Throws</b>: Nothing.
251
253
  //!
252
254
  //! <b>Nodes</b>: If node is inserted in a tree, this function corrupts the tree.
253
- static void init(const node_ptr & node)
254
- { node->node_ptr_1 = 0; };
255
+ BOOST_INTRUSIVE_FORCEINLINE static void init(const node_ptr & node)
256
+ { node->node_ptr_1 = node_ptr(); };
255
257
 
256
258
  //! <b>Effects</b>: Returns true if node is in the same state as if called init(node)
257
259
  //!
258
260
  //! <b>Complexity</b>: Constant.
259
261
  //!
260
262
  //! <b>Throws</b>: Nothing.
261
- static bool inited(const const_node_ptr & node)
263
+ BOOST_INTRUSIVE_FORCEINLINE static bool inited(const const_node_ptr & node)
262
264
  { return !node->node_ptr_1; };
263
265
 
264
- static bool unique(const const_node_ptr & node)
265
- { return 0 == node->node_ptr_1; }
266
+ BOOST_INTRUSIVE_FORCEINLINE static bool unique(const const_node_ptr & node)
267
+ { return !node->node_ptr_1; }
266
268
 
267
269
  static void unlink(const node_ptr &)
268
270
  {
@@ -278,6 +280,17 @@ class any_algorithms
278
280
  }
279
281
  };
280
282
 
283
+ ///@cond
284
+
285
+ template<class NodeTraits>
286
+ struct get_algo<AnyAlgorithm, NodeTraits>
287
+ {
288
+ typedef typename pointer_rebind<typename NodeTraits::node_ptr, void>::type void_pointer;
289
+ typedef any_algorithms<void_pointer> type;
290
+ };
291
+
292
+ ///@endcond
293
+
281
294
  } //namespace intrusive
282
295
  } //namespace boost
283
296