passenger 6.1.0 → 6.1.1

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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -1,1158 +0,0 @@
1
- /*
2
- *
3
- * Copyright (c) 1998-2009 John Maddock
4
- * Copyright 2008 Eric Niebler.
5
- *
6
- * Use, modification and distribution are subject to the
7
- * Boost Software License, Version 1.0. (See accompanying file
8
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
- *
10
- */
11
-
12
- /*
13
- * LOCATION: see http://www.boost.org for most recent version.
14
- * FILE regex_format.hpp
15
- * VERSION see <boost/version.hpp>
16
- * DESCRIPTION: Provides formatting output routines for search and replace
17
- * operations. Note this is an internal header file included
18
- * by regex.hpp, do not include on its own.
19
- */
20
-
21
- #ifndef BOOST_REGEX_FORMAT_HPP
22
- #define BOOST_REGEX_FORMAT_HPP
23
-
24
- #include <boost/type_traits/is_pointer.hpp>
25
- #include <boost/type_traits/is_function.hpp>
26
- #include <boost/type_traits/is_class.hpp>
27
- #include <boost/type_traits/is_same.hpp>
28
- #include <boost/type_traits/is_convertible.hpp>
29
- #include <boost/type_traits/remove_pointer.hpp>
30
- #include <boost/type_traits/remove_cv.hpp>
31
- #include <boost/mpl/if.hpp>
32
- #include <boost/mpl/and.hpp>
33
- #include <boost/mpl/not.hpp>
34
- #ifndef BOOST_NO_SFINAE
35
- #include <boost/mpl/has_xxx.hpp>
36
- #endif
37
- #include <boost/ref.hpp>
38
-
39
- namespace boost{
40
-
41
- #ifdef BOOST_MSVC
42
- #pragma warning(push)
43
- #pragma warning(disable: 4103)
44
- #endif
45
- #ifdef BOOST_HAS_ABI_HEADERS
46
- # include BOOST_ABI_PREFIX
47
- #endif
48
- #ifdef BOOST_MSVC
49
- #pragma warning(pop)
50
- #endif
51
-
52
- //
53
- // Forward declaration:
54
- //
55
- template <class BidiIterator, class Allocator = BOOST_DEDUCED_TYPENAME std::vector<sub_match<BidiIterator> >::allocator_type >
56
- class match_results;
57
-
58
- namespace BOOST_REGEX_DETAIL_NS{
59
-
60
- //
61
- // struct trivial_format_traits:
62
- // defines minimum localisation support for formatting
63
- // in the case that the actual regex traits is unavailable.
64
- //
65
- template <class charT>
66
- struct trivial_format_traits
67
- {
68
- typedef charT char_type;
69
-
70
- static std::ptrdiff_t length(const charT* p)
71
- {
72
- return global_length(p);
73
- }
74
- static charT tolower(charT c)
75
- {
76
- return ::boost::BOOST_REGEX_DETAIL_NS::global_lower(c);
77
- }
78
- static charT toupper(charT c)
79
- {
80
- return ::boost::BOOST_REGEX_DETAIL_NS::global_upper(c);
81
- }
82
- static int value(const charT c, int radix)
83
- {
84
- int result = global_value(c);
85
- return result >= radix ? -1 : result;
86
- }
87
- int toi(const charT*& p1, const charT* p2, int radix)const
88
- {
89
- return (int)global_toi(p1, p2, radix, *this);
90
- }
91
- };
92
-
93
- #ifdef BOOST_MSVC
94
- # pragma warning(push)
95
- #pragma warning(disable:26812)
96
- #endif
97
- template <class OutputIterator, class Results, class traits, class ForwardIter>
98
- class basic_regex_formatter
99
- {
100
- public:
101
- typedef typename traits::char_type char_type;
102
- basic_regex_formatter(OutputIterator o, const Results& r, const traits& t)
103
- : m_traits(t), m_results(r), m_out(o), m_position(), m_end(), m_flags(), m_state(output_copy), m_restore_state(output_copy), m_have_conditional(false) {}
104
- OutputIterator format(ForwardIter p1, ForwardIter p2, match_flag_type f);
105
- OutputIterator format(ForwardIter p1, match_flag_type f)
106
- {
107
- return format(p1, p1 + m_traits.length(p1), f);
108
- }
109
- private:
110
- typedef typename Results::value_type sub_match_type;
111
- enum output_state
112
- {
113
- output_copy,
114
- output_next_lower,
115
- output_next_upper,
116
- output_lower,
117
- output_upper,
118
- output_none
119
- };
120
-
121
- void put(char_type c);
122
- void put(const sub_match_type& sub);
123
- void format_all();
124
- void format_perl();
125
- void format_escape();
126
- void format_conditional();
127
- void format_until_scope_end();
128
- bool handle_perl_verb(bool have_brace);
129
-
130
- inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j, const mpl::false_&)
131
- {
132
- std::vector<char_type> v(i, j);
133
- return (i != j) ? this->m_results.named_subexpression(&v[0], &v[0] + v.size())
134
- : this->m_results.named_subexpression(static_cast<const char_type*>(0), static_cast<const char_type*>(0));
135
- }
136
- inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j, const mpl::true_&)
137
- {
138
- return this->m_results.named_subexpression(i, j);
139
- }
140
- inline typename Results::value_type const& get_named_sub(ForwardIter i, ForwardIter j)
141
- {
142
- typedef typename boost::is_convertible<ForwardIter, const char_type*>::type tag_type;
143
- return get_named_sub(i, j, tag_type());
144
- }
145
- inline int get_named_sub_index(ForwardIter i, ForwardIter j, const mpl::false_&)
146
- {
147
- std::vector<char_type> v(i, j);
148
- return (i != j) ? this->m_results.named_subexpression_index(&v[0], &v[0] + v.size())
149
- : this->m_results.named_subexpression_index(static_cast<const char_type*>(0), static_cast<const char_type*>(0));
150
- }
151
- inline int get_named_sub_index(ForwardIter i, ForwardIter j, const mpl::true_&)
152
- {
153
- return this->m_results.named_subexpression_index(i, j);
154
- }
155
- inline int get_named_sub_index(ForwardIter i, ForwardIter j)
156
- {
157
- typedef typename boost::is_convertible<ForwardIter, const char_type*>::type tag_type;
158
- return get_named_sub_index(i, j, tag_type());
159
- }
160
- #ifdef BOOST_MSVC
161
- // msvc-8.0 issues a spurious warning on the call to std::advance here:
162
- #pragma warning(push)
163
- #pragma warning(disable:4244)
164
- #endif
165
- inline int toi(ForwardIter& i, ForwardIter j, int base, const boost::mpl::false_&)
166
- {
167
- if(i != j)
168
- {
169
- std::vector<char_type> v(i, j);
170
- const char_type* start = &v[0];
171
- const char_type* pos = start;
172
- int r = (int)m_traits.toi(pos, &v[0] + v.size(), base);
173
- std::advance(i, pos - start);
174
- return r;
175
- }
176
- return -1;
177
- }
178
- #ifdef BOOST_MSVC
179
- #pragma warning(pop)
180
- #endif
181
- inline int toi(ForwardIter& i, ForwardIter j, int base, const boost::mpl::true_&)
182
- {
183
- return m_traits.toi(i, j, base);
184
- }
185
- inline int toi(ForwardIter& i, ForwardIter j, int base)
186
- {
187
- #if defined(_MSC_VER) && defined(__INTEL_COMPILER) && ((__INTEL_COMPILER == 9999) || (__INTEL_COMPILER == 1210))
188
- // Workaround for Intel support issue #656654.
189
- // See also https://svn.boost.org/trac/boost/ticket/6359
190
- return toi(i, j, base, mpl::false_());
191
- #else
192
- typedef typename boost::is_convertible<ForwardIter, const char_type*&>::type tag_type;
193
- return toi(i, j, base, tag_type());
194
- #endif
195
- }
196
-
197
- const traits& m_traits; // the traits class for localised formatting operations
198
- const Results& m_results; // the match_results being used.
199
- OutputIterator m_out; // where to send output.
200
- ForwardIter m_position; // format string, current position
201
- ForwardIter m_end; // format string end
202
- match_flag_type m_flags; // format flags to use
203
- output_state m_state; // what to do with the next character
204
- output_state m_restore_state; // what state to restore to.
205
- bool m_have_conditional; // we are parsing a conditional
206
- private:
207
- basic_regex_formatter(const basic_regex_formatter&);
208
- basic_regex_formatter& operator=(const basic_regex_formatter&);
209
- };
210
- #ifdef BOOST_MSVC
211
- # pragma warning(pop)
212
- #endif
213
-
214
- template <class OutputIterator, class Results, class traits, class ForwardIter>
215
- OutputIterator basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format(ForwardIter p1, ForwardIter p2, match_flag_type f)
216
- {
217
- m_position = p1;
218
- m_end = p2;
219
- m_flags = f;
220
- format_all();
221
- return m_out;
222
- }
223
-
224
- template <class OutputIterator, class Results, class traits, class ForwardIter>
225
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_all()
226
- {
227
- // over and over:
228
- while(m_position != m_end)
229
- {
230
- switch(*m_position)
231
- {
232
- case '&':
233
- if(m_flags & ::boost::regex_constants::format_sed)
234
- {
235
- ++m_position;
236
- put(m_results[0]);
237
- break;
238
- }
239
- put(*m_position++);
240
- break;
241
- case '\\':
242
- format_escape();
243
- break;
244
- case '(':
245
- if(m_flags & boost::regex_constants::format_all)
246
- {
247
- ++m_position;
248
- bool have_conditional = m_have_conditional;
249
- m_have_conditional = false;
250
- format_until_scope_end();
251
- m_have_conditional = have_conditional;
252
- if(m_position == m_end)
253
- return;
254
- BOOST_REGEX_ASSERT(*m_position == static_cast<char_type>(')'));
255
- ++m_position; // skip the closing ')'
256
- break;
257
- }
258
- put(*m_position);
259
- ++m_position;
260
- break;
261
- case ')':
262
- if(m_flags & boost::regex_constants::format_all)
263
- {
264
- return;
265
- }
266
- put(*m_position);
267
- ++m_position;
268
- break;
269
- case ':':
270
- if((m_flags & boost::regex_constants::format_all) && m_have_conditional)
271
- {
272
- return;
273
- }
274
- put(*m_position);
275
- ++m_position;
276
- break;
277
- case '?':
278
- if(m_flags & boost::regex_constants::format_all)
279
- {
280
- ++m_position;
281
- format_conditional();
282
- break;
283
- }
284
- put(*m_position);
285
- ++m_position;
286
- break;
287
- case '$':
288
- if((m_flags & format_sed) == 0)
289
- {
290
- format_perl();
291
- break;
292
- }
293
- // not a special character:
294
- BOOST_FALLTHROUGH;
295
- default:
296
- put(*m_position);
297
- ++m_position;
298
- break;
299
- }
300
- }
301
- }
302
-
303
- template <class OutputIterator, class Results, class traits, class ForwardIter>
304
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_perl()
305
- {
306
- //
307
- // On entry *m_position points to a '$' character
308
- // output the information that goes with it:
309
- //
310
- BOOST_REGEX_ASSERT(*m_position == '$');
311
- //
312
- // see if this is a trailing '$':
313
- //
314
- if(++m_position == m_end)
315
- {
316
- --m_position;
317
- put(*m_position);
318
- ++m_position;
319
- return;
320
- }
321
- //
322
- // OK find out what kind it is:
323
- //
324
- bool have_brace = false;
325
- ForwardIter save_position = m_position;
326
- switch(*m_position)
327
- {
328
- case '&':
329
- ++m_position;
330
- put(this->m_results[0]);
331
- break;
332
- case '`':
333
- ++m_position;
334
- put(this->m_results.prefix());
335
- break;
336
- case '\'':
337
- ++m_position;
338
- put(this->m_results.suffix());
339
- break;
340
- case '$':
341
- put(*m_position++);
342
- break;
343
- case '+':
344
- if((++m_position != m_end) && (*m_position == '{'))
345
- {
346
- ForwardIter base = ++m_position;
347
- while((m_position != m_end) && (*m_position != '}')) ++m_position;
348
- if(m_position != m_end)
349
- {
350
- // Named sub-expression:
351
- put(get_named_sub(base, m_position));
352
- ++m_position;
353
- break;
354
- }
355
- else
356
- {
357
- m_position = --base;
358
- }
359
- }
360
- put((this->m_results)[this->m_results.size() > 1 ? static_cast<int>(this->m_results.size() - 1) : 1]);
361
- break;
362
- case '{':
363
- have_brace = true;
364
- ++m_position;
365
- BOOST_FALLTHROUGH;
366
- default:
367
- // see if we have a number:
368
- {
369
- std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end);
370
- //len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
371
- int v = this->toi(m_position, m_position + len, 10);
372
- if((v < 0) || (have_brace && ((m_position == m_end) || (*m_position != '}'))))
373
- {
374
- // Look for a Perl-5.10 verb:
375
- if(!handle_perl_verb(have_brace))
376
- {
377
- // leave the $ as is, and carry on:
378
- m_position = --save_position;
379
- put(*m_position);
380
- ++m_position;
381
- }
382
- break;
383
- }
384
- // otherwise output sub v:
385
- put(this->m_results[v]);
386
- if(have_brace)
387
- ++m_position;
388
- }
389
- }
390
- }
391
-
392
- template <class OutputIterator, class Results, class traits, class ForwardIter>
393
- bool basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::handle_perl_verb(bool have_brace)
394
- {
395
- //
396
- // We may have a capitalised string containing a Perl action:
397
- //
398
- static const char_type MATCH[] = { 'M', 'A', 'T', 'C', 'H' };
399
- static const char_type PREMATCH[] = { 'P', 'R', 'E', 'M', 'A', 'T', 'C', 'H' };
400
- static const char_type POSTMATCH[] = { 'P', 'O', 'S', 'T', 'M', 'A', 'T', 'C', 'H' };
401
- static const char_type LAST_PAREN_MATCH[] = { 'L', 'A', 'S', 'T', '_', 'P', 'A', 'R', 'E', 'N', '_', 'M', 'A', 'T', 'C', 'H' };
402
- static const char_type LAST_SUBMATCH_RESULT[] = { 'L', 'A', 'S', 'T', '_', 'S', 'U', 'B', 'M', 'A', 'T', 'C', 'H', '_', 'R', 'E', 'S', 'U', 'L', 'T' };
403
- static const char_type LAST_SUBMATCH_RESULT_ALT[] = { '^', 'N' };
404
-
405
- if(m_position == m_end)
406
- return false;
407
- if(have_brace && (*m_position == '^'))
408
- ++m_position;
409
-
410
- std::ptrdiff_t max_len = m_end - m_position;
411
-
412
- if((max_len >= 5) && std::equal(m_position, m_position + 5, MATCH))
413
- {
414
- m_position += 5;
415
- if(have_brace)
416
- {
417
- if((m_position != m_end) && (*m_position == '}'))
418
- ++m_position;
419
- else
420
- {
421
- m_position -= 5;
422
- return false;
423
- }
424
- }
425
- put(this->m_results[0]);
426
- return true;
427
- }
428
- if((max_len >= 8) && std::equal(m_position, m_position + 8, PREMATCH))
429
- {
430
- m_position += 8;
431
- if(have_brace)
432
- {
433
- if((m_position != m_end) && (*m_position == '}'))
434
- ++m_position;
435
- else
436
- {
437
- m_position -= 8;
438
- return false;
439
- }
440
- }
441
- put(this->m_results.prefix());
442
- return true;
443
- }
444
- if((max_len >= 9) && std::equal(m_position, m_position + 9, POSTMATCH))
445
- {
446
- m_position += 9;
447
- if(have_brace)
448
- {
449
- if((m_position != m_end) && (*m_position == '}'))
450
- ++m_position;
451
- else
452
- {
453
- m_position -= 9;
454
- return false;
455
- }
456
- }
457
- put(this->m_results.suffix());
458
- return true;
459
- }
460
- if((max_len >= 16) && std::equal(m_position, m_position + 16, LAST_PAREN_MATCH))
461
- {
462
- m_position += 16;
463
- if(have_brace)
464
- {
465
- if((m_position != m_end) && (*m_position == '}'))
466
- ++m_position;
467
- else
468
- {
469
- m_position -= 16;
470
- return false;
471
- }
472
- }
473
- put((this->m_results)[this->m_results.size() > 1 ? static_cast<int>(this->m_results.size() - 1) : 1]);
474
- return true;
475
- }
476
- if((max_len >= 20) && std::equal(m_position, m_position + 20, LAST_SUBMATCH_RESULT))
477
- {
478
- m_position += 20;
479
- if(have_brace)
480
- {
481
- if((m_position != m_end) && (*m_position == '}'))
482
- ++m_position;
483
- else
484
- {
485
- m_position -= 20;
486
- return false;
487
- }
488
- }
489
- put(this->m_results.get_last_closed_paren());
490
- return true;
491
- }
492
- if((max_len >= 2) && std::equal(m_position, m_position + 2, LAST_SUBMATCH_RESULT_ALT))
493
- {
494
- m_position += 2;
495
- if(have_brace)
496
- {
497
- if((m_position != m_end) && (*m_position == '}'))
498
- ++m_position;
499
- else
500
- {
501
- m_position -= 2;
502
- return false;
503
- }
504
- }
505
- put(this->m_results.get_last_closed_paren());
506
- return true;
507
- }
508
- return false;
509
- }
510
-
511
- template <class OutputIterator, class Results, class traits, class ForwardIter>
512
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_escape()
513
- {
514
- // skip the escape and check for trailing escape:
515
- if(++m_position == m_end)
516
- {
517
- put(static_cast<char_type>('\\'));
518
- return;
519
- }
520
- // now switch on the escape type:
521
- switch(*m_position)
522
- {
523
- case 'a':
524
- put(static_cast<char_type>('\a'));
525
- ++m_position;
526
- break;
527
- case 'f':
528
- put(static_cast<char_type>('\f'));
529
- ++m_position;
530
- break;
531
- case 'n':
532
- put(static_cast<char_type>('\n'));
533
- ++m_position;
534
- break;
535
- case 'r':
536
- put(static_cast<char_type>('\r'));
537
- ++m_position;
538
- break;
539
- case 't':
540
- put(static_cast<char_type>('\t'));
541
- ++m_position;
542
- break;
543
- case 'v':
544
- put(static_cast<char_type>('\v'));
545
- ++m_position;
546
- break;
547
- case 'x':
548
- if(++m_position == m_end)
549
- {
550
- put(static_cast<char_type>('x'));
551
- return;
552
- }
553
- // maybe have \x{ddd}
554
- if(*m_position == static_cast<char_type>('{'))
555
- {
556
- ++m_position;
557
- int val = this->toi(m_position, m_end, 16);
558
- if(val < 0)
559
- {
560
- // invalid value treat everything as literals:
561
- put(static_cast<char_type>('x'));
562
- put(static_cast<char_type>('{'));
563
- return;
564
- }
565
- if((m_position == m_end) || (*m_position != static_cast<char_type>('}')))
566
- {
567
- --m_position;
568
- while(*m_position != static_cast<char_type>('\\'))
569
- --m_position;
570
- ++m_position;
571
- put(*m_position++);
572
- return;
573
- }
574
- ++m_position;
575
- put(static_cast<char_type>(val));
576
- return;
577
- }
578
- else
579
- {
580
- std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end);
581
- len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
582
- int val = this->toi(m_position, m_position + len, 16);
583
- if(val < 0)
584
- {
585
- --m_position;
586
- put(*m_position++);
587
- return;
588
- }
589
- put(static_cast<char_type>(val));
590
- }
591
- break;
592
- case 'c':
593
- if(++m_position == m_end)
594
- {
595
- --m_position;
596
- put(*m_position++);
597
- return;
598
- }
599
- put(static_cast<char_type>(*m_position++ % 32));
600
- break;
601
- case 'e':
602
- put(static_cast<char_type>(27));
603
- ++m_position;
604
- break;
605
- default:
606
- // see if we have a perl specific escape:
607
- if((m_flags & boost::regex_constants::format_sed) == 0)
608
- {
609
- bool breakout = false;
610
- switch(*m_position)
611
- {
612
- case 'l':
613
- ++m_position;
614
- m_restore_state = m_state;
615
- m_state = output_next_lower;
616
- breakout = true;
617
- break;
618
- case 'L':
619
- ++m_position;
620
- m_state = output_lower;
621
- breakout = true;
622
- break;
623
- case 'u':
624
- ++m_position;
625
- m_restore_state = m_state;
626
- m_state = output_next_upper;
627
- breakout = true;
628
- break;
629
- case 'U':
630
- ++m_position;
631
- m_state = output_upper;
632
- breakout = true;
633
- break;
634
- case 'E':
635
- ++m_position;
636
- m_state = output_copy;
637
- breakout = true;
638
- break;
639
- }
640
- if(breakout)
641
- break;
642
- }
643
- // see if we have a \n sed style backreference:
644
- std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end);
645
- len = (std::min)(static_cast<std::ptrdiff_t>(1), len);
646
- int v = this->toi(m_position, m_position+len, 10);
647
- if((v > 0) || ((v == 0) && (m_flags & ::boost::regex_constants::format_sed)))
648
- {
649
- put(m_results[v]);
650
- break;
651
- }
652
- else if(v == 0)
653
- {
654
- // octal ecape sequence:
655
- --m_position;
656
- len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end);
657
- len = (std::min)(static_cast<std::ptrdiff_t>(4), len);
658
- v = this->toi(m_position, m_position + len, 8);
659
- BOOST_REGEX_ASSERT(v >= 0);
660
- put(static_cast<char_type>(v));
661
- break;
662
- }
663
- // Otherwise output the character "as is":
664
- put(*m_position++);
665
- break;
666
- }
667
- }
668
-
669
- template <class OutputIterator, class Results, class traits, class ForwardIter>
670
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_conditional()
671
- {
672
- if(m_position == m_end)
673
- {
674
- // oops trailing '?':
675
- put(static_cast<char_type>('?'));
676
- return;
677
- }
678
- int v;
679
- if(*m_position == '{')
680
- {
681
- ForwardIter base = m_position;
682
- ++m_position;
683
- v = this->toi(m_position, m_end, 10);
684
- if(v < 0)
685
- {
686
- // Try a named subexpression:
687
- while((m_position != m_end) && (*m_position != '}'))
688
- ++m_position;
689
- v = this->get_named_sub_index(base + 1, m_position);
690
- }
691
- if((v < 0) || (*m_position != '}'))
692
- {
693
- m_position = base;
694
- // oops trailing '?':
695
- put(static_cast<char_type>('?'));
696
- return;
697
- }
698
- // Skip trailing '}':
699
- ++m_position;
700
- }
701
- else
702
- {
703
- std::ptrdiff_t len = ::boost::BOOST_REGEX_DETAIL_NS::distance(m_position, m_end);
704
- len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
705
- v = this->toi(m_position, m_position + len, 10);
706
- }
707
- if(v < 0)
708
- {
709
- // oops not a number:
710
- put(static_cast<char_type>('?'));
711
- return;
712
- }
713
-
714
- // output varies depending upon whether sub-expression v matched or not:
715
- if(m_results[v].matched)
716
- {
717
- m_have_conditional = true;
718
- format_all();
719
- m_have_conditional = false;
720
- if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
721
- {
722
- // skip the ':':
723
- ++m_position;
724
- // save output state, then turn it off:
725
- output_state saved_state = m_state;
726
- m_state = output_none;
727
- // format the rest of this scope:
728
- format_until_scope_end();
729
- // restore output state:
730
- m_state = saved_state;
731
- }
732
- }
733
- else
734
- {
735
- // save output state, then turn it off:
736
- output_state saved_state = m_state;
737
- m_state = output_none;
738
- // format until ':' or ')':
739
- m_have_conditional = true;
740
- format_all();
741
- m_have_conditional = false;
742
- // restore state:
743
- m_state = saved_state;
744
- if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
745
- {
746
- // skip the ':':
747
- ++m_position;
748
- // format the rest of this scope:
749
- format_until_scope_end();
750
- }
751
- }
752
- }
753
-
754
- template <class OutputIterator, class Results, class traits, class ForwardIter>
755
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::format_until_scope_end()
756
- {
757
- do
758
- {
759
- format_all();
760
- if((m_position == m_end) || (*m_position == static_cast<char_type>(')')))
761
- return;
762
- put(*m_position++);
763
- }while(m_position != m_end);
764
- }
765
-
766
- template <class OutputIterator, class Results, class traits, class ForwardIter>
767
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::put(char_type c)
768
- {
769
- // write a single character to output
770
- // according to which case translation mode we are in:
771
- switch(this->m_state)
772
- {
773
- case output_none:
774
- return;
775
- case output_next_lower:
776
- c = m_traits.tolower(c);
777
- this->m_state = m_restore_state;
778
- break;
779
- case output_next_upper:
780
- c = m_traits.toupper(c);
781
- this->m_state = m_restore_state;
782
- break;
783
- case output_lower:
784
- c = m_traits.tolower(c);
785
- break;
786
- case output_upper:
787
- c = m_traits.toupper(c);
788
- break;
789
- default:
790
- break;
791
- }
792
- *m_out = c;
793
- ++m_out;
794
- }
795
-
796
- template <class OutputIterator, class Results, class traits, class ForwardIter>
797
- void basic_regex_formatter<OutputIterator, Results, traits, ForwardIter>::put(const sub_match_type& sub)
798
- {
799
- typedef typename sub_match_type::iterator iterator_type;
800
- iterator_type i = sub.first;
801
- while(i != sub.second)
802
- {
803
- put(*i);
804
- ++i;
805
- }
806
- }
807
-
808
- template <class S>
809
- class string_out_iterator
810
- {
811
- S* out;
812
- public:
813
- string_out_iterator(S& s) : out(&s) {}
814
- string_out_iterator& operator++() { return *this; }
815
- string_out_iterator& operator++(int) { return *this; }
816
- string_out_iterator& operator*() { return *this; }
817
- string_out_iterator& operator=(typename S::value_type v)
818
- {
819
- out->append(1, v);
820
- return *this;
821
- }
822
-
823
- typedef std::ptrdiff_t difference_type;
824
- typedef typename S::value_type value_type;
825
- typedef value_type* pointer;
826
- typedef value_type& reference;
827
- typedef std::output_iterator_tag iterator_category;
828
- };
829
-
830
- template <class OutputIterator, class Iterator, class Alloc, class ForwardIter, class traits>
831
- OutputIterator regex_format_imp(OutputIterator out,
832
- const match_results<Iterator, Alloc>& m,
833
- ForwardIter p1, ForwardIter p2,
834
- match_flag_type flags,
835
- const traits& t
836
- )
837
- {
838
- if(flags & regex_constants::format_literal)
839
- {
840
- return BOOST_REGEX_DETAIL_NS::copy(p1, p2, out);
841
- }
842
-
843
- BOOST_REGEX_DETAIL_NS::basic_regex_formatter<
844
- OutputIterator,
845
- match_results<Iterator, Alloc>,
846
- traits, ForwardIter> f(out, m, t);
847
- return f.format(p1, p2, flags);
848
- }
849
-
850
- #ifndef BOOST_NO_SFINAE
851
-
852
- BOOST_MPL_HAS_XXX_TRAIT_DEF(const_iterator)
853
-
854
- struct any_type
855
- {
856
- template <class T>
857
- any_type(const T&);
858
- template <class T, class U>
859
- any_type(const T&, const U&);
860
- template <class T, class U, class V>
861
- any_type(const T&, const U&, const V&);
862
- };
863
- typedef char no_type;
864
- typedef char (&unary_type)[2];
865
- typedef char (&binary_type)[3];
866
- typedef char (&ternary_type)[4];
867
-
868
- no_type check_is_formatter(unary_type, binary_type, ternary_type);
869
- template<typename T>
870
- unary_type check_is_formatter(T const &, binary_type, ternary_type);
871
- template<typename T>
872
- binary_type check_is_formatter(unary_type, T const &, ternary_type);
873
- template<typename T, typename U>
874
- binary_type check_is_formatter(T const &, U const &, ternary_type);
875
- template<typename T>
876
- ternary_type check_is_formatter(unary_type, binary_type, T const &);
877
- template<typename T, typename U>
878
- ternary_type check_is_formatter(T const &, binary_type, U const &);
879
- template<typename T, typename U>
880
- ternary_type check_is_formatter(unary_type, T const &, U const &);
881
- template<typename T, typename U, typename V>
882
- ternary_type check_is_formatter(T const &, U const &, V const &);
883
-
884
- struct unary_binary_ternary
885
- {
886
- typedef unary_type (*unary_fun)(any_type);
887
- typedef binary_type (*binary_fun)(any_type, any_type);
888
- typedef ternary_type (*ternary_fun)(any_type, any_type, any_type);
889
- operator unary_fun();
890
- operator binary_fun();
891
- operator ternary_fun();
892
- };
893
-
894
- template<typename Formatter, bool IsFunction = boost::is_function<Formatter>::value>
895
- struct formatter_wrapper
896
- : Formatter
897
- , unary_binary_ternary
898
- {
899
- formatter_wrapper(){}
900
- };
901
-
902
- template<typename Formatter>
903
- struct formatter_wrapper<Formatter, true>
904
- : unary_binary_ternary
905
- {
906
- operator Formatter *();
907
- };
908
-
909
- template<typename Formatter>
910
- struct formatter_wrapper<Formatter *, false>
911
- : unary_binary_ternary
912
- {
913
- operator Formatter *();
914
- };
915
-
916
- template <class F, class M, class O>
917
- struct format_traits_imp
918
- {
919
- private:
920
- //
921
- // F must be a pointer, a function, or a class with a function call operator:
922
- //
923
- BOOST_STATIC_ASSERT((::boost::is_pointer<F>::value || ::boost::is_function<F>::value || ::boost::is_class<F>::value));
924
- static formatter_wrapper<typename unwrap_reference<F>::type> f;
925
- static M m;
926
- static O out;
927
- static boost::regex_constants::match_flag_type flags;
928
- public:
929
- BOOST_STATIC_CONSTANT(int, value = sizeof(check_is_formatter(f(m), f(m, out), f(m, out, flags))));
930
- };
931
-
932
- template <class F, class M, class O>
933
- struct format_traits
934
- {
935
- public:
936
- //
937
- // Type is mpl::int_<N> where N is one of:
938
- //
939
- // 0 : F is a pointer to a presumably null-terminated string.
940
- // 1 : F is a character-container such as a std::string.
941
- // 2 : F is a Unary Functor.
942
- // 3 : F is a Binary Functor.
943
- // 4 : F is a Ternary Functor.
944
- //
945
- typedef typename boost::mpl::if_<
946
- boost::mpl::and_<boost::is_pointer<F>, boost::mpl::not_<boost::is_function<typename boost::remove_pointer<F>::type> > >,
947
- boost::mpl::int_<0>,
948
- typename boost::mpl::if_<
949
- has_const_iterator<F>,
950
- boost::mpl::int_<1>,
951
- boost::mpl::int_<format_traits_imp<F, M, O>::value>
952
- >::type
953
- >::type type;
954
- //
955
- // This static assertion will fail if the functor passed does not accept
956
- // the same type of arguments passed.
957
- //
958
- BOOST_STATIC_ASSERT( boost::is_class<F>::value && !has_const_iterator<F>::value ? (type::value > 1) : true);
959
- };
960
-
961
- #else // BOOST_NO_SFINAE
962
-
963
- template <class F, class M, class O>
964
- struct format_traits
965
- {
966
- public:
967
- //
968
- // Type is mpl::int_<N> where N is one of:
969
- //
970
- // 0 : F is a pointer to a presumably null-terminated string.
971
- // 1 : F is a character-container such as a std::string.
972
- //
973
- // Other options such as F being a Functor are not supported without
974
- // SFINAE support.
975
- //
976
- typedef typename boost::mpl::if_<
977
- boost::is_pointer<F>,
978
- boost::mpl::int_<0>,
979
- boost::mpl::int_<1>
980
- >::type type;
981
- };
982
-
983
- #endif // BOOST_NO_SFINAE
984
-
985
- template <class Base, class Match>
986
- struct format_functor3
987
- {
988
- format_functor3(Base b) : func(b) {}
989
- template <class OutputIter>
990
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f)
991
- {
992
- return boost::unwrap_ref(func)(m, i, f);
993
- }
994
- template <class OutputIter, class Traits>
995
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&)
996
- {
997
- return (*this)(m, i, f);
998
- }
999
- private:
1000
- Base func;
1001
- format_functor3(const format_functor3&);
1002
- format_functor3& operator=(const format_functor3&);
1003
- };
1004
-
1005
- template <class Base, class Match>
1006
- struct format_functor2
1007
- {
1008
- format_functor2(Base b) : func(b) {}
1009
- template <class OutputIter>
1010
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/)
1011
- {
1012
- return boost::unwrap_ref(func)(m, i);
1013
- }
1014
- template <class OutputIter, class Traits>
1015
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&)
1016
- {
1017
- return (*this)(m, i, f);
1018
- }
1019
- private:
1020
- Base func;
1021
- format_functor2(const format_functor2&);
1022
- format_functor2& operator=(const format_functor2&);
1023
- };
1024
-
1025
- template <class Base, class Match>
1026
- struct format_functor1
1027
- {
1028
- format_functor1(Base b) : func(b) {}
1029
-
1030
- template <class S, class OutputIter>
1031
- OutputIter do_format_string(const S& s, OutputIter i)
1032
- {
1033
- return BOOST_REGEX_DETAIL_NS::copy(s.begin(), s.end(), i);
1034
- }
1035
- template <class S, class OutputIter>
1036
- inline OutputIter do_format_string(const S* s, OutputIter i)
1037
- {
1038
- while(s && *s)
1039
- {
1040
- *i = *s;
1041
- ++i;
1042
- ++s;
1043
- }
1044
- return i;
1045
- }
1046
- template <class OutputIter>
1047
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type /*f*/)
1048
- {
1049
- return do_format_string(boost::unwrap_ref(func)(m), i);
1050
- }
1051
- template <class OutputIter, class Traits>
1052
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits&)
1053
- {
1054
- return (*this)(m, i, f);
1055
- }
1056
- private:
1057
- Base func;
1058
- format_functor1(const format_functor1&);
1059
- format_functor1& operator=(const format_functor1&);
1060
- };
1061
-
1062
- template <class charT, class Match, class Traits>
1063
- struct format_functor_c_string
1064
- {
1065
- format_functor_c_string(const charT* ps) : func(ps) {}
1066
-
1067
- template <class OutputIter>
1068
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits& t = Traits())
1069
- {
1070
- //typedef typename Match::char_type char_type;
1071
- const charT* end = func;
1072
- while(*end) ++end;
1073
- return regex_format_imp(i, m, func, end, f, t);
1074
- }
1075
- private:
1076
- const charT* func;
1077
- format_functor_c_string(const format_functor_c_string&);
1078
- format_functor_c_string& operator=(const format_functor_c_string&);
1079
- };
1080
-
1081
- template <class Container, class Match, class Traits>
1082
- struct format_functor_container
1083
- {
1084
- format_functor_container(const Container& c) : func(c) {}
1085
-
1086
- template <class OutputIter>
1087
- OutputIter operator()(const Match& m, OutputIter i, boost::regex_constants::match_flag_type f, const Traits& t = Traits())
1088
- {
1089
- //typedef typename Match::char_type char_type;
1090
- return BOOST_REGEX_DETAIL_NS::regex_format_imp(i, m, func.begin(), func.end(), f, t);
1091
- }
1092
- private:
1093
- const Container& func;
1094
- format_functor_container(const format_functor_container&);
1095
- format_functor_container& operator=(const format_functor_container&);
1096
- };
1097
-
1098
- template <class Func, class Match, class OutputIterator, class Traits = BOOST_REGEX_DETAIL_NS::trivial_format_traits<typename Match::char_type> >
1099
- struct compute_functor_type
1100
- {
1101
- typedef typename format_traits<Func, Match, OutputIterator>::type tag;
1102
- typedef typename boost::remove_cv< typename boost::remove_pointer<Func>::type>::type maybe_char_type;
1103
-
1104
- typedef typename mpl::if_<
1105
- ::boost::is_same<tag, mpl::int_<0> >, format_functor_c_string<maybe_char_type, Match, Traits>,
1106
- typename mpl::if_<
1107
- ::boost::is_same<tag, mpl::int_<1> >, format_functor_container<Func, Match, Traits>,
1108
- typename mpl::if_<
1109
- ::boost::is_same<tag, mpl::int_<2> >, format_functor1<Func, Match>,
1110
- typename mpl::if_<
1111
- ::boost::is_same<tag, mpl::int_<3> >, format_functor2<Func, Match>,
1112
- format_functor3<Func, Match>
1113
- >::type
1114
- >::type
1115
- >::type
1116
- >::type type;
1117
- };
1118
-
1119
- } // namespace BOOST_REGEX_DETAIL_NS
1120
-
1121
- template <class OutputIterator, class Iterator, class Allocator, class Functor>
1122
- inline OutputIterator regex_format(OutputIterator out,
1123
- const match_results<Iterator, Allocator>& m,
1124
- Functor fmt,
1125
- match_flag_type flags = format_all
1126
- )
1127
- {
1128
- return m.format(out, fmt, flags);
1129
- }
1130
-
1131
- template <class Iterator, class Allocator, class Functor>
1132
- inline std::basic_string<typename match_results<Iterator, Allocator>::char_type> regex_format(const match_results<Iterator, Allocator>& m,
1133
- Functor fmt,
1134
- match_flag_type flags = format_all)
1135
- {
1136
- return m.format(fmt, flags);
1137
- }
1138
-
1139
- #ifdef BOOST_MSVC
1140
- #pragma warning(push)
1141
- #pragma warning(disable: 4103)
1142
- #endif
1143
- #ifdef BOOST_HAS_ABI_HEADERS
1144
- # include BOOST_ABI_SUFFIX
1145
- #endif
1146
- #ifdef BOOST_MSVC
1147
- #pragma warning(pop)
1148
- #endif
1149
-
1150
- } // namespace boost
1151
-
1152
- #endif // BOOST_REGEX_FORMAT_HPP
1153
-
1154
-
1155
-
1156
-
1157
-
1158
-