passenger 6.0.1 → 6.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +145 -18
  3. data/CONTRIBUTORS +6 -0
  4. data/bin/passenger-install-nginx-module +1 -1
  5. data/bin/passenger-status +15 -0
  6. data/build/misc.rb +3 -1
  7. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
  8. data/dev/copy_boost_headers +1 -0
  9. data/package.json +1 -1
  10. data/passenger.gemspec +9 -1
  11. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
  12. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
  13. data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
  14. data/resources/templates/standalone/http.erb +2 -0
  15. data/resources/templates/standalone/server.erb +1 -0
  16. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  17. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -0
  18. data/src/agent/Core/ApplicationPool/Options.h +10 -0
  19. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  20. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  21. data/src/agent/Core/Config.h +14 -1
  22. data/src/agent/Core/Controller.h +1 -0
  23. data/src/agent/Core/Controller/Config.h +5 -1
  24. data/src/agent/Core/Controller/ForwardResponse.cpp +13 -0
  25. data/src/agent/Core/Controller/InitRequest.cpp +3 -0
  26. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
  27. data/src/agent/Core/CoreMain.cpp +2 -1
  28. data/src/agent/Core/OptionParser.h +3 -0
  29. data/src/agent/Core/SpawningKit/Context.h +1 -0
  30. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  31. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  32. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -0
  33. data/src/agent/Watchdog/Config.h +15 -1
  34. data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
  35. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +10 -0
  36. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +10 -0
  37. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +30 -0
  38. data/src/apache2_module/Hooks.cpp +6 -0
  39. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +20 -0
  40. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +24 -0
  41. data/src/cxx_supportlib/Constants.h +2 -1
  42. data/src/cxx_supportlib/LoggingKit/Config.h +2 -0
  43. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +15 -9
  44. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  45. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +20 -19
  46. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
  47. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -10
  48. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
  75. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
  76. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
  77. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
  78. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
  79. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
  80. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
  81. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
  82. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
  84. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
  86. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
  87. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
  88. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
  90. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
  93. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
  95. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
  97. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  98. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
  100. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
  101. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
  102. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  107. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
  108. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
  110. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
  114. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  115. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
  119. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
  120. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
  122. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
  123. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
  130. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
  131. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
  132. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
  133. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
  134. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
  137. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
  141. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
  142. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
  145. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
  147. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
  148. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
  151. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
  152. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
  153. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
  154. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
  155. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
  157. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
  158. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
  162. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
  163. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
  167. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
  168. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
  170. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
  173. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
  174. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
  175. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
  176. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
  178. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
  179. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
  180. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
  181. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
  182. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
  183. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
  184. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
  186. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
  187. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  188. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
  190. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
  191. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
  192. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
  197. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
  198. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
  199. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
  206. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
  207. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
  208. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
  213. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
  214. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
  215. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  216. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
  217. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
  219. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
  220. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
  221. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
  222. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
  223. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
  225. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
  226. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
  227. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
  230. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
  235. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
  236. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
  237. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
  240. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
  241. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  242. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
  243. data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
  244. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
  245. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
  249. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
  256. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
  257. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
  259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
  270. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
  272. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
  273. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
  274. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
  275. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
  276. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
  277. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
  297. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
  298. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
  299. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
  320. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
  321. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
  322. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
  323. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
  324. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
  325. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
  328. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  329. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
  331. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
  332. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
  335. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
  336. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
  337. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
  339. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
  341. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
  342. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
  343. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
  344. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
  345. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
  346. data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
  347. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
  348. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
  350. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
  351. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
  359. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
  363. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
  376. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
  377. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
  379. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
  380. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
  385. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
  386. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
  388. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
  389. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
  390. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
  391. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
  395. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
  396. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
  397. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
  398. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
  399. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
  400. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
  401. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
  402. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
  403. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
  405. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
  406. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
  407. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
  408. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
  409. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
  410. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
  411. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
  412. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
  413. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
  416. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  417. data/src/helper-scripts/prespawn +1 -0
  418. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +40 -0
  419. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +26 -0
  420. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +48 -0
  421. data/src/nginx_module/Configuration.c +6 -2
  422. data/src/nginx_module/ContentHandler.c +5 -1
  423. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +15 -0
  424. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
  425. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +28 -0
  426. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +6 -0
  427. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +11 -0
  428. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +11 -0
  429. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +23 -0
  430. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +8 -0
  431. data/src/nginx_module/ngx_http_passenger_module.c +2 -0
  432. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +0 -0
  433. data/src/ruby_native_extension/extconf.rb +7 -0
  434. data/src/ruby_supportlib/phusion_passenger.rb +7 -7
  435. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +8 -0
  436. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +23 -0
  437. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -0
  438. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -3
  439. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +37 -0
  440. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +1 -1
  441. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +10 -0
  442. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  443. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
  444. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +11 -0
  445. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +3 -0
  446. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +1 -1
  447. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +6 -0
  448. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +15 -11
  449. metadata +42 -8
  450. data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
  451. data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
  452. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
  453. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -124,6 +124,9 @@
124
124
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
125
125
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
126
126
  #endif
127
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
128
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
129
+ #endif
127
130
 
128
131
  #if (__DMC__ <= 0x840)
129
132
  #error "Compiler not supported or configured - please reconfigure"
@@ -132,6 +135,6 @@
132
135
  // last known and checked version is ...:
133
136
  #if (__DMC__ > 0x848)
134
137
  # if defined(BOOST_ASSERT_CONFIG)
135
- # error "Unknown compiler version - please run the configure tests and report the results"
138
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
136
139
  # endif
137
140
  #endif
@@ -299,6 +299,9 @@
299
299
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
300
300
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
301
301
  #endif
302
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
303
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
304
+ #endif
302
305
 
303
306
  #if __GNUC__ >= 7
304
307
  # define BOOST_FALLTHROUGH __attribute__((fallthrough))
@@ -343,14 +346,14 @@
343
346
  # error "Compiler not configured - please reconfigure"
344
347
  #endif
345
348
  //
346
- // last known and checked version is 7.1:
347
- #if (BOOST_GCC_VERSION > 70100)
349
+ // last known and checked version is 8.1:
350
+ #if (BOOST_GCC_VERSION > 80100)
348
351
  # if defined(BOOST_ASSERT_CONFIG)
349
352
  # error "Boost.Config is older than your compiler - please check for an updated Boost release."
350
353
  # else
351
354
  // we don't emit warnings here anymore since there are no defect macros defined for
352
355
  // gcc post 3.4, so any failures are gcc regressions...
353
- //# warning "Unknown compiler version - please run the configure tests and report the results"
356
+ //# warning "boost: Unknown compiler version - please run the configure tests and report the results"
354
357
  # endif
355
358
  #endif
356
359
 
@@ -102,6 +102,9 @@
102
102
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
103
103
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
104
104
  #endif
105
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
106
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
107
+ #endif
105
108
 
106
109
  #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
107
110
 
@@ -21,7 +21,7 @@
21
21
  // last known and checked version is 0:
22
22
  #if (__ghs > 0)
23
23
  # if defined(BOOST_ASSERT_CONFIG)
24
- # error "Unknown compiler version - please run the configure tests and report the results"
24
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
25
25
  # endif
26
26
  #endif
27
27
 
@@ -142,6 +142,6 @@
142
142
  // last known and checked version for PA-RISC is 38000
143
143
  #if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
144
144
  # if defined(BOOST_ASSERT_CONFIG)
145
- # error "Unknown compiler version - please run the configure tests and report the results"
145
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
146
146
  # endif
147
147
  #endif
@@ -46,12 +46,17 @@
46
46
  #undef BOOST_GCC_VERSION
47
47
  #undef BOOST_GCC_CXX11
48
48
  #undef BOOST_GCC
49
+ #undef BOOST_FALLTHROUGH
49
50
 
50
51
  // Broken in all versions up to 17 (newer versions not tested)
51
52
  #if (__INTEL_COMPILER <= 1700) && !defined(BOOST_NO_CXX14_CONSTEXPR)
52
53
  # define BOOST_NO_CXX14_CONSTEXPR
53
54
  #endif
54
55
 
56
+ #if (__INTEL_COMPILER >= 1800) && (__cplusplus >= 201703)
57
+ # define BOOST_FALLTHROUGH [[fallthrough]]
58
+ #endif
59
+
55
60
  #endif // defined(_MSC_VER)
56
61
 
57
62
  #undef BOOST_COMPILER
@@ -558,7 +563,7 @@ template<> struct assert_intrinsic_wchar_t {};
558
563
  // We don't emit this warning any more, since we have so few
559
564
  // defect macros set anyway (just the one).
560
565
  //
561
- //# pragma message("Unknown compiler version - please run the configure tests and report the results")
566
+ //# pragma message("boost: Unknown compiler version - please run the configure tests and report the results")
562
567
  # endif
563
568
  #endif
564
569
 
@@ -25,7 +25,7 @@
25
25
  // last known and checked version is 4001:
26
26
  #if (__KCC_VERSION > 4001)
27
27
  # if defined(BOOST_ASSERT_CONFIG)
28
- # error "Unknown compiler version - please run the configure tests and report the results"
28
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
29
29
  # endif
30
30
  #endif
31
31
 
@@ -167,6 +167,9 @@
167
167
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
168
168
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
169
169
  #endif
170
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
171
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
172
+ #endif
170
173
 
171
174
  #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
172
175
 
@@ -180,7 +183,7 @@
180
183
  // last known and checked version:
181
184
  #if (__MWERKS__ > 0x3205)
182
185
  # if defined(BOOST_ASSERT_CONFIG)
183
- # error "Unknown compiler version - please run the configure tests and report the results"
186
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
184
187
  # endif
185
188
  #endif
186
189
 
@@ -116,6 +116,9 @@
116
116
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
117
117
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
118
118
  #endif
119
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
120
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
121
+ #endif
119
122
 
120
123
  //
121
124
  // versions check:
@@ -127,7 +130,7 @@
127
130
  // last known and checked version is 0x890:
128
131
  #if (MPW_CPLUS > 0x890)
129
132
  # if defined(BOOST_ASSERT_CONFIG)
130
- # error "Unknown compiler version - please run the configure tests and report the results"
133
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
131
134
  # endif
132
135
  #endif
133
136
 
@@ -12,7 +12,7 @@
12
12
  #endif
13
13
 
14
14
  #if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
15
- # define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__
15
+ # define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__)
16
16
  #else
17
17
  // We don't really know what the CUDA version is, but it's definitely before 7.5:
18
18
  # define BOOST_CUDA_VERSION 7000000
@@ -33,8 +33,8 @@
33
33
  #if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000)
34
34
  # define BOOST_NO_CXX11_VARIADIC_TEMPLATES
35
35
  #endif
36
- // Most recent CUDA (8.0) has no constexpr support in msvc mode:
37
- #if defined(_MSC_VER)
36
+ // CUDA (8.0) has no constexpr support in msvc mode:
37
+ #if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000)
38
38
  # define BOOST_NO_CXX11_CONSTEXPR
39
39
  #endif
40
40
 
@@ -129,4 +129,7 @@
129
129
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
130
130
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
131
131
  #endif
132
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
133
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
134
+ #endif
132
135
  #endif
@@ -182,6 +182,9 @@
182
182
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
183
183
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
184
184
  #endif
185
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
186
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
187
+ #endif
185
188
 
186
189
  // Turn on threading support for Solaris 12.
187
190
  // Ticket #11972
@@ -56,7 +56,7 @@
56
56
  // last known and checked version is 1210:
57
57
  #if (__IBMCPP__ > 1210)
58
58
  # if defined(BOOST_ASSERT_CONFIG)
59
- # error "Unknown compiler version - please run the configure tests and report the results"
59
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
60
60
  # endif
61
61
  #endif
62
62
 
@@ -178,3 +178,6 @@
178
178
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
179
179
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
180
180
  #endif
181
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
182
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
183
+ #endif
@@ -201,6 +201,9 @@
201
201
  //
202
202
  #if (_MSC_VER < 1911) || (_MSVC_LANG < 201703)
203
203
  # define BOOST_NO_CXX17_STRUCTURED_BINDINGS
204
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
205
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
206
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
204
207
  #endif
205
208
 
206
209
  // MSVC including version 14 has not yet completely
@@ -233,9 +236,11 @@
233
236
  // Supported from msvc-15.5 onwards:
234
237
  #define BOOST_NO_CXX11_SFINAE_EXPR
235
238
  #endif
239
+ #if (_MSC_VER < 1915) || (_MSVC_LANG < 201402)
236
240
  // C++ 14:
237
241
  // Still gives internal compiler error for msvc-15.5:
238
242
  # define BOOST_NO_CXX14_CONSTEXPR
243
+ #endif
239
244
  // C++ 17:
240
245
  #if (_MSC_VER < 1912) || (_MSVC_LANG < 201703)
241
246
  #define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -283,9 +288,9 @@
283
288
  # if _MSC_VER < 1400
284
289
  // Note: I'm not aware of any CE compiler with version 13xx
285
290
  # if defined(BOOST_ASSERT_CONFIG)
286
- # error "Unknown EVC++ compiler version - please run the configure tests and report the results"
291
+ # error "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
287
292
  # else
288
- # pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
293
+ # pragma message("boost: Unknown EVC++ compiler version - please run the configure tests and report the results")
289
294
  # endif
290
295
  # elif _MSC_VER < 1500
291
296
  # define BOOST_COMPILER_VERSION evc8
@@ -301,9 +306,9 @@
301
306
  # define BOOST_COMPILER_VERSION evc14
302
307
  # else
303
308
  # if defined(BOOST_ASSERT_CONFIG)
304
- # error "Unknown EVC++ compiler version - please run the configure tests and report the results"
309
+ # error "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
305
310
  # else
306
- # pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
311
+ # pragma message("boost: Unknown EVC++ compiler version - please run the configure tests and report the results")
307
312
  # endif
308
313
  # endif
309
314
  # else
@@ -246,6 +246,10 @@
246
246
  # define BOOST_NO_CXX17_STRUCTURED_BINDINGS
247
247
  #endif
248
248
 
249
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
250
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
251
+ #endif
252
+
249
253
  // Clang 3.9+ in c++1z
250
254
  #if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L
251
255
  # define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -153,6 +153,7 @@
153
153
  #define BOOST_NO_CXX17_STRUCTURED_BINDINGS
154
154
  #define BOOST_NO_CXX17_INLINE_VARIABLES
155
155
  #define BOOST_NO_CXX17_FOLD_EXPRESSIONS
156
+ #define BOOST_NO_CXX17_IF_CONSTEXPR
156
157
 
157
158
  // -------------------------------------
158
159
 
@@ -39,8 +39,7 @@
39
39
  // Intel
40
40
  # define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
41
41
 
42
- #elif defined __clang__ && !defined(__CUDACC__) && !defined(__ibmxl__)
43
- // when using clang and cuda at same time, you want to appear as gcc
42
+ #elif defined __clang__ && !defined(__ibmxl__)
44
43
  // Clang C++ emulates GCC, so it has to appear early.
45
44
  # define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
46
45
 
@@ -1023,6 +1023,19 @@ namespace std{ using ::type_info; }
1023
1023
  # define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
1024
1024
  #endif
1025
1025
 
1026
+ // This is a catch all case for obsolete compilers / std libs:
1027
+ #if !defined(__has_include)
1028
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
1029
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
1030
+ #else
1031
+ #if !__has_include(<optional>)
1032
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
1033
+ #endif
1034
+ #if !__has_include(<string_view>)
1035
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
1036
+ #endif
1037
+ #endif
1038
+
1026
1039
  //
1027
1040
  // Finish off with checks for macros that are depricated / no longer supported,
1028
1041
  // if any of these are set then it's very likely that much of Boost will no
@@ -96,7 +96,7 @@
96
96
  #include <exception>
97
97
  #endif
98
98
  #include <typeinfo>
99
- #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \
99
+ #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (defined(__ghs__) && !_HAS_NAMESPACE) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \
100
100
  && !defined(__VXWORKS__)
101
101
  # define BOOST_NO_STD_TYPEINFO
102
102
  #endif
@@ -175,7 +175,7 @@
175
175
  # define BOOST_NO_CXX17_STD_APPLY
176
176
  # define BOOST_NO_CXX17_ITERATOR_TRAITS
177
177
  #endif
178
- #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
178
+ #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709)
179
179
  # define BOOST_NO_CXX17_STD_INVOKE
180
180
  #endif
181
181
 
@@ -87,11 +87,10 @@
87
87
  #endif
88
88
 
89
89
  // C++17 features
90
- #if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
91
- # define BOOST_NO_CXX17_STD_INVOKE
92
- #endif
93
90
  #if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
94
91
  # define BOOST_NO_CXX17_STD_APPLY
92
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
93
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
95
94
  #endif
96
95
  #if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
97
96
  # define BOOST_NO_AUTO_PTR
@@ -104,6 +103,7 @@
104
103
  #endif
105
104
 
106
105
  #define BOOST_NO_CXX17_ITERATOR_TRAITS
106
+ #define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result)
107
107
 
108
108
  #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
109
109
  // This is a bit of a sledgehammer, because really it's just libc++abi that has no
@@ -113,10 +113,16 @@
113
113
  # define BOOST_NO_CXX11_THREAD_LOCAL
114
114
  #endif
115
115
 
116
- #if defined(__linux__) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
116
+ #if defined(__linux__) && (_LIBCPP_VERSION < 6000) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
117
117
  // After libc++-dev is installed on Trusty, clang++-libc++ almost works,
118
118
  // except uses of `thread_local` fail with undefined reference to
119
119
  // `__cxa_thread_atexit`.
120
+ //
121
+ // clang's libc++abi provides an implementation by deferring to the glibc
122
+ // implementation, which may or may not be available (it is not on Trusty).
123
+ // clang 4's libc++abi will provide an implementation if one is not in glibc
124
+ // though, so thread local support should work with clang 4 and above as long
125
+ // as libc++abi is linked in.
120
126
  # define BOOST_NO_CXX11_THREAD_LOCAL
121
127
  #endif
122
128
 
@@ -130,4 +136,8 @@
130
136
  # define BOOST_NO_CXX14_HDR_SHARED_MUTEX
131
137
  #endif
132
138
 
139
+ #if !defined(BOOST_NO_CXX14_HDR_SHARED_MUTEX) && (_LIBCPP_VERSION < 5000)
140
+ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX
141
+ #endif
142
+
133
143
  // --- end ---
@@ -294,13 +294,13 @@ extern "C" char *gets (char *__s);
294
294
  #endif
295
295
 
296
296
  //
297
- // C++17 features in GCC 6.1 and later
297
+ // C++17 features in GCC 7.1 and later
298
298
  //
299
- #if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L)
300
- # define BOOST_NO_CXX17_STD_INVOKE
301
- #endif
302
299
  #if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
300
+ # define BOOST_NO_CXX17_STD_INVOKE
303
301
  # define BOOST_NO_CXX17_STD_APPLY
302
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
303
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
304
304
  #endif
305
305
 
306
306
  #if defined(__has_include)
@@ -117,9 +117,9 @@ class adaptive_pool
117
117
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
118
118
  private:
119
119
  //!Not assignable from related adaptive_pool
120
- template<class T2, unsigned Version2, std::size_t N2, std::size_t F2>
120
+ template<class T2, std::size_t N2, std::size_t F2, std::size_t O2, unsigned Version2>
121
121
  adaptive_pool& operator=
122
- (const adaptive_pool<T2, Version2, N2, F2>&);
122
+ (const adaptive_pool<T2, N2, F2, O2, Version2>&);
123
123
 
124
124
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
125
125
 
@@ -341,6 +341,266 @@ class adaptive_pool
341
341
  }
342
342
  };
343
343
 
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+ template < class T
364
+ , std::size_t NodesPerBlock = ADP_nodes_per_block
365
+ , std::size_t MaxFreeBlocks = ADP_max_free_blocks
366
+ , std::size_t OverheadPercent = ADP_overhead_percent
367
+ , unsigned Version = 2
368
+ >
369
+ class private_adaptive_pool
370
+ {
371
+ //!If Version is 1, the allocator is a STL conforming allocator. If Version is 2,
372
+ //!the allocator offers advanced expand in place and burst allocation capabilities.
373
+ public:
374
+ typedef unsigned int allocation_type;
375
+ typedef private_adaptive_pool
376
+ <T, NodesPerBlock, MaxFreeBlocks, OverheadPercent
377
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)
378
+ > self_t;
379
+
380
+ static const std::size_t nodes_per_block = NodesPerBlock;
381
+ static const std::size_t max_free_blocks = MaxFreeBlocks;
382
+ static const std::size_t overhead_percent = OverheadPercent;
383
+ static const std::size_t real_nodes_per_block = NodesPerBlock;
384
+
385
+ BOOST_CONTAINER_DOCIGN(BOOST_STATIC_ASSERT((Version <=2)));
386
+
387
+ typedef dtl::private_adaptive_node_pool
388
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> pool_t;
389
+ pool_t m_pool;
390
+
391
+ public:
392
+ //-------
393
+ typedef T value_type;
394
+ typedef T * pointer;
395
+ typedef const T * const_pointer;
396
+ typedef typename ::boost::container::
397
+ dtl::unvoid_ref<T>::type reference;
398
+ typedef typename ::boost::container::
399
+ dtl::unvoid_ref<const T>::type const_reference;
400
+ typedef std::size_t size_type;
401
+ typedef std::ptrdiff_t difference_type;
402
+
403
+ typedef boost::container::dtl::
404
+ version_type<self_t, Version> version;
405
+
406
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
407
+ typedef boost::container::dtl::
408
+ basic_multiallocation_chain<void*> multiallocation_chain_void;
409
+ typedef boost::container::dtl::
410
+ transform_multiallocation_chain
411
+ <multiallocation_chain_void, T> multiallocation_chain;
412
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
413
+
414
+ //!Obtains private_adaptive_pool from
415
+ //!private_adaptive_pool
416
+ template<class T2>
417
+ struct rebind
418
+ {
419
+ typedef private_adaptive_pool
420
+ < T2
421
+ , NodesPerBlock
422
+ , MaxFreeBlocks
423
+ , OverheadPercent
424
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)
425
+ > other;
426
+ };
427
+
428
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
429
+ private:
430
+ //!Not assignable from related private_adaptive_pool
431
+ template<class T2, std::size_t N2, std::size_t F2, std::size_t O2, unsigned Version2>
432
+ private_adaptive_pool& operator=
433
+ (const private_adaptive_pool<T2, N2, F2, O2, Version2>&);
434
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
435
+
436
+ public:
437
+ //!Default constructor
438
+ private_adaptive_pool() BOOST_NOEXCEPT_OR_NOTHROW
439
+ {}
440
+
441
+ //!Copy constructor from other private_adaptive_pool.
442
+ private_adaptive_pool(const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
443
+ {}
444
+
445
+ //!Copy constructor from related private_adaptive_pool.
446
+ template<class T2>
447
+ private_adaptive_pool
448
+ (const private_adaptive_pool<T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent
449
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)> &) BOOST_NOEXCEPT_OR_NOTHROW
450
+ {}
451
+
452
+ //!Destructor
453
+ ~private_adaptive_pool() BOOST_NOEXCEPT_OR_NOTHROW
454
+ {}
455
+
456
+ //!Returns the number of elements that could be allocated.
457
+ //!Never throws
458
+ size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
459
+ { return size_type(-1)/sizeof(T); }
460
+
461
+ //!Allocate memory for an array of count elements.
462
+ //!Throws std::bad_alloc if there is no enough memory
463
+ pointer allocate(size_type count, const void * = 0)
464
+ {
465
+ if(BOOST_UNLIKELY(count > this->max_size()))
466
+ boost::container::throw_bad_alloc();
467
+
468
+ if(Version == 1 && count == 1){
469
+ return pointer(static_cast<T*>(m_pool.allocate_node()));
470
+ }
471
+ else{
472
+ return static_cast<pointer>(dlmalloc_malloc(count*sizeof(T)));
473
+ }
474
+ }
475
+
476
+ //!Deallocate allocated memory.
477
+ //!Never throws
478
+ void deallocate(const pointer &ptr, size_type count) BOOST_NOEXCEPT_OR_NOTHROW
479
+ {
480
+ (void)count;
481
+ if(Version == 1 && count == 1){
482
+ m_pool.deallocate_node(ptr);
483
+ }
484
+ else{
485
+ dlmalloc_free(ptr);
486
+ }
487
+ }
488
+
489
+ pointer allocation_command(allocation_type command,
490
+ size_type limit_size,
491
+ size_type &prefer_in_recvd_out_size,
492
+ pointer &reuse)
493
+ {
494
+ pointer ret = this->priv_allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse);
495
+ if(BOOST_UNLIKELY(!ret && !(command & BOOST_CONTAINER_NOTHROW_ALLOCATION)))
496
+ boost::container::throw_bad_alloc();
497
+ return ret;
498
+ }
499
+
500
+ //!Returns maximum the number of objects the previously allocated memory
501
+ //!pointed by p can hold.
502
+ size_type size(pointer p) const BOOST_NOEXCEPT_OR_NOTHROW
503
+ { return dlmalloc_size(p); }
504
+
505
+ //!Allocates just one object. Memory allocated with this function
506
+ //!must be deallocated only with deallocate_one().
507
+ //!Throws bad_alloc if there is no enough memory
508
+ pointer allocate_one()
509
+ {
510
+ return (pointer)m_pool.allocate_node();
511
+ }
512
+
513
+ //!Allocates many elements of size == 1.
514
+ //!Elements must be individually deallocated with deallocate_one()
515
+ void allocate_individual(std::size_t num_elements, multiallocation_chain &chain)
516
+ {
517
+ m_pool.allocate_nodes(num_elements, static_cast<typename pool_t::multiallocation_chain&>(chain));
518
+ }
519
+
520
+ //!Deallocates memory previously allocated with allocate_one().
521
+ //!You should never use deallocate_one to deallocate memory allocated
522
+ //!with other functions different from allocate_one(). Never throws
523
+ void deallocate_one(pointer p) BOOST_NOEXCEPT_OR_NOTHROW
524
+ {
525
+ m_pool.deallocate_node(p);
526
+ }
527
+
528
+ void deallocate_individual(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
529
+ {
530
+ m_pool.deallocate_nodes(chain);
531
+ }
532
+
533
+ //!Allocates many elements of size elem_size.
534
+ //!Elements must be individually deallocated with deallocate()
535
+ void allocate_many(size_type elem_size, std::size_t n_elements, multiallocation_chain &chain)
536
+ {
537
+ BOOST_STATIC_ASSERT(( Version > 1 ));
538
+ if(BOOST_UNLIKELY(!dlmalloc_multialloc_nodes
539
+ (n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast<dlmalloc_memchain *>(&chain)))){
540
+ boost::container::throw_bad_alloc();
541
+ }
542
+ }
543
+
544
+ //!Allocates n_elements elements, each one of size elem_sizes[i]
545
+ //!Elements must be individually deallocated with deallocate()
546
+ void allocate_many(const size_type *elem_sizes, size_type n_elements, multiallocation_chain &chain)
547
+ {
548
+ BOOST_STATIC_ASSERT(( Version > 1 ));
549
+ if(BOOST_UNLIKELY(!dlmalloc_multialloc_arrays
550
+ (n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast<dlmalloc_memchain *>(&chain)))){
551
+ boost::container::throw_bad_alloc();
552
+ }
553
+ }
554
+
555
+ void deallocate_many(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
556
+ {
557
+ dlmalloc_multidealloc(reinterpret_cast<dlmalloc_memchain *>(&chain));
558
+ }
559
+
560
+ //!Deallocates all free blocks of the pool
561
+ void deallocate_free_blocks() BOOST_NOEXCEPT_OR_NOTHROW
562
+ {
563
+ m_pool.deallocate_free_blocks();
564
+ }
565
+
566
+ //!Swaps allocators. Does not throw. If each allocator is placed in a
567
+ //!different memory segment, the result is undefined.
568
+ friend void swap(private_adaptive_pool &, private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
569
+ {}
570
+
571
+ //!An allocator always compares to true, as memory allocated with one
572
+ //!instance can be deallocated by another instance
573
+ friend bool operator==(const private_adaptive_pool &, const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
574
+ { return true; }
575
+
576
+ //!An allocator always compares to false, as memory allocated with one
577
+ //!instance can be deallocated by another instance
578
+ friend bool operator!=(const private_adaptive_pool &, const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
579
+ { return false; }
580
+
581
+ private:
582
+ pointer priv_allocation_command
583
+ (allocation_type command, std::size_t limit_size
584
+ ,size_type &prefer_in_recvd_out_size, pointer &reuse_ptr)
585
+ {
586
+ std::size_t const preferred_size = prefer_in_recvd_out_size;
587
+ dlmalloc_command_ret_t ret = {0 , 0};
588
+ if(BOOST_UNLIKELY(limit_size > this->max_size() || preferred_size > this->max_size())){
589
+ return pointer();
590
+ }
591
+ std::size_t l_size = limit_size*sizeof(T);
592
+ std::size_t p_size = preferred_size*sizeof(T);
593
+ std::size_t r_size;
594
+ {
595
+ void* reuse_ptr_void = reuse_ptr;
596
+ ret = dlmalloc_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr_void);
597
+ reuse_ptr = ret.second ? static_cast<T*>(reuse_ptr_void) : 0;
598
+ }
599
+ prefer_in_recvd_out_size = r_size/sizeof(T);
600
+ return (pointer)ret.first;
601
+ }
602
+ };
603
+
344
604
  } //namespace container {
345
605
  } //namespace boost {
346
606