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,1131 +0,0 @@
1
- /*
2
- *
3
- * Copyright (c) 2002
4
- * John Maddock
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 perl_matcher_common.cpp
15
- * VERSION see <boost/version.hpp>
16
- * DESCRIPTION: Definitions of perl_matcher member functions that are
17
- * specific to the recursive implementation.
18
- */
19
-
20
- #ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
21
- #define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
22
-
23
- #ifdef BOOST_MSVC
24
- #pragma warning(push)
25
- #pragma warning(disable: 4103)
26
- #endif
27
- #ifdef BOOST_HAS_ABI_HEADERS
28
- # include BOOST_ABI_PREFIX
29
- #endif
30
- #ifdef BOOST_MSVC
31
- #pragma warning(pop)
32
- #endif
33
-
34
- #ifdef BOOST_MSVC
35
- #pragma warning(push)
36
- #pragma warning(disable: 4800)
37
- #endif
38
-
39
- namespace boost{
40
- namespace BOOST_REGEX_DETAIL_NS{
41
-
42
- template <class BidiIterator>
43
- class backup_subex
44
- {
45
- int index;
46
- sub_match<BidiIterator> sub;
47
- public:
48
- template <class A>
49
- backup_subex(const match_results<BidiIterator, A>& w, int i)
50
- : index(i), sub(w[i], false) {}
51
- template <class A>
52
- void restore(match_results<BidiIterator, A>& w)
53
- {
54
- w.set_first(sub.first, index, index == 0);
55
- w.set_second(sub.second, index, sub.matched, index == 0);
56
- }
57
- const sub_match<BidiIterator>& get() { return sub; }
58
- };
59
-
60
- template <class BidiIterator, class Allocator, class traits>
61
- bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
62
- {
63
- static matcher_proc_type const s_match_vtable[34] =
64
- {
65
- (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
66
- &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
67
- &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
68
- &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
69
- &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
70
- &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
71
- &perl_matcher<BidiIterator, Allocator, traits>::match_match,
72
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
73
- &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
74
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
75
- &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
76
- &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
77
- &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
78
- &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
79
- &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
80
- &perl_matcher<BidiIterator, Allocator, traits>::match_set,
81
- &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
82
- &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
83
- &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
84
- &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
85
- &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
86
- &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
87
- // Although this next line *should* be evaluated at compile time, in practice
88
- // some compilers (VC++) emit run-time initialisation which breaks thread
89
- // safety, so use a dispatch function instead:
90
- //(::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
91
- &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_dispatch,
92
- &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
93
- &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
94
- &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
95
- &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
96
- &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
97
- &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
98
- &perl_matcher<BidiIterator, Allocator, traits>::match_recursion,
99
- &perl_matcher<BidiIterator, Allocator, traits>::match_fail,
100
- &perl_matcher<BidiIterator, Allocator, traits>::match_accept,
101
- &perl_matcher<BidiIterator, Allocator, traits>::match_commit,
102
- &perl_matcher<BidiIterator, Allocator, traits>::match_then,
103
- };
104
-
105
- if(state_count > max_state_count)
106
- raise_error(traits_inst, regex_constants::error_complexity);
107
- while(pstate)
108
- {
109
- matcher_proc_type proc = s_match_vtable[pstate->type];
110
- ++state_count;
111
- if(!(this->*proc)())
112
- {
113
- if((m_match_flags & match_partial) && (position == last) && (position != search_base))
114
- m_has_partial_match = true;
115
- return 0;
116
- }
117
- }
118
- return true;
119
- }
120
-
121
- template <class BidiIterator, class Allocator, class traits>
122
- bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
123
- {
124
- int index = static_cast<const re_brace*>(pstate)->index;
125
- icase = static_cast<const re_brace*>(pstate)->icase;
126
- bool r = true;
127
- switch(index)
128
- {
129
- case 0:
130
- pstate = pstate->next.p;
131
- break;
132
- case -1:
133
- case -2:
134
- {
135
- // forward lookahead assert:
136
- BidiIterator old_position(position);
137
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
138
- pstate = pstate->next.p->next.p;
139
- r = match_all_states();
140
- pstate = next_pstate;
141
- position = old_position;
142
- if((r && (index != -1)) || (!r && (index != -2)))
143
- r = false;
144
- else
145
- r = true;
146
- if(r && m_have_accept)
147
- r = skip_until_paren(INT_MAX);
148
- break;
149
- }
150
- case -3:
151
- {
152
- // independent sub-expression:
153
- bool old_independent = m_independent;
154
- m_independent = true;
155
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
156
- pstate = pstate->next.p->next.p;
157
- bool can_backtrack = m_can_backtrack;
158
- r = match_all_states();
159
- if(r)
160
- m_can_backtrack = can_backtrack;
161
- pstate = next_pstate;
162
- m_independent = old_independent;
163
- #ifdef BOOST_REGEX_MATCH_EXTRA
164
- if(r && (m_match_flags & match_extra))
165
- {
166
- //
167
- // our captures have been stored in *m_presult
168
- // we need to unpack them, and insert them
169
- // back in the right order when we unwind the stack:
170
- //
171
- unsigned i;
172
- match_results<BidiIterator, Allocator> tm(*m_presult);
173
- for(i = 0; i < tm.size(); ++i)
174
- (*m_presult)[i].get_captures().clear();
175
- // match everything else:
176
- r = match_all_states();
177
- // now place the stored captures back:
178
- for(i = 0; i < tm.size(); ++i)
179
- {
180
- typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
181
- seq& s1 = (*m_presult)[i].get_captures();
182
- const seq& s2 = tm[i].captures();
183
- s1.insert(
184
- s1.end(),
185
- s2.begin(),
186
- s2.end());
187
- }
188
- }
189
- #endif
190
- if(r && m_have_accept)
191
- r = skip_until_paren(INT_MAX);
192
- break;
193
- }
194
- case -4:
195
- {
196
- // conditional expression:
197
- const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
198
- BOOST_REGEX_ASSERT(alt->type == syntax_element_alt);
199
- pstate = alt->next.p;
200
- if(pstate->type == syntax_element_assert_backref)
201
- {
202
- if(!match_assert_backref())
203
- pstate = alt->alt.p;
204
- break;
205
- }
206
- else
207
- {
208
- // zero width assertion, have to match this recursively:
209
- BOOST_REGEX_ASSERT(pstate->type == syntax_element_startmark);
210
- bool negated = static_cast<const re_brace*>(pstate)->index == -2;
211
- BidiIterator saved_position = position;
212
- const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
213
- pstate = pstate->next.p->next.p;
214
- bool res = match_all_states();
215
- position = saved_position;
216
- if(negated)
217
- res = !res;
218
- if(res)
219
- pstate = next_pstate;
220
- else
221
- pstate = alt->alt.p;
222
- break;
223
- }
224
- }
225
- case -5:
226
- {
227
- // Reset start of $0, since we have a \K escape
228
- backup_subex<BidiIterator> sub(*m_presult, 0);
229
- m_presult->set_first(position, 0, true);
230
- pstate = pstate->next.p;
231
- r = match_all_states();
232
- if(r == false)
233
- sub.restore(*m_presult);
234
- break;
235
- }
236
- default:
237
- {
238
- BOOST_REGEX_ASSERT(index > 0);
239
- if((m_match_flags & match_nosubs) == 0)
240
- {
241
- backup_subex<BidiIterator> sub(*m_presult, index);
242
- m_presult->set_first(position, index);
243
- pstate = pstate->next.p;
244
- r = match_all_states();
245
- if(r == false)
246
- sub.restore(*m_presult);
247
- #ifdef BOOST_REGEX_MATCH_EXTRA
248
- //
249
- // we have a match, push the capture information onto the stack:
250
- //
251
- else if(sub.get().matched && (match_extra & m_match_flags))
252
- ((*m_presult)[index]).get_captures().push_back(sub.get());
253
- #endif
254
- }
255
- else
256
- {
257
- pstate = pstate->next.p;
258
- }
259
- break;
260
- }
261
- }
262
- return r;
263
- }
264
-
265
- template <class BidiIterator, class Allocator, class traits>
266
- bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
267
- {
268
- bool take_first, take_second;
269
- const re_alt* jmp = static_cast<const re_alt*>(pstate);
270
-
271
- // find out which of these two alternatives we need to take:
272
- if(position == last)
273
- {
274
- take_first = jmp->can_be_null & mask_take;
275
- take_second = jmp->can_be_null & mask_skip;
276
- }
277
- else
278
- {
279
- take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
280
- take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
281
- }
282
-
283
- if(take_first)
284
- {
285
- // we can take the first alternative,
286
- // see if we need to push next alternative:
287
- if(take_second)
288
- {
289
- BidiIterator oldposition(position);
290
- const re_syntax_base* old_pstate = jmp->alt.p;
291
- pstate = pstate->next.p;
292
- bool oldcase = icase;
293
- m_have_then = false;
294
- if(!match_all_states())
295
- {
296
- pstate = old_pstate;
297
- position = oldposition;
298
- icase = oldcase;
299
- if(m_have_then)
300
- {
301
- m_can_backtrack = true;
302
- m_have_then = false;
303
- return false;
304
- }
305
- }
306
- m_have_then = false;
307
- return m_can_backtrack;
308
- }
309
- pstate = pstate->next.p;
310
- return true;
311
- }
312
- if(take_second)
313
- {
314
- pstate = jmp->alt.p;
315
- return true;
316
- }
317
- return false; // neither option is possible
318
- }
319
-
320
- template <class BidiIterator, class Allocator, class traits>
321
- bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
322
- {
323
- #ifdef BOOST_MSVC
324
- #pragma warning(push)
325
- #pragma warning(disable:4127 4244)
326
- #endif
327
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
328
- //
329
- // Always copy the repeat count, so that the state is restored
330
- // when we exit this scope:
331
- //
332
- repeater_count<BidiIterator> r(rep->state_id, &next_count, position, this->recursion_stack.size() ? this->recursion_stack.back().idx : INT_MIN + 3);
333
- //
334
- // If we've had at least one repeat already, and the last one
335
- // matched the NULL string then set the repeat count to
336
- // maximum:
337
- //
338
- next_count->check_null_repeat(position, rep->max);
339
-
340
- // find out which of these two alternatives we need to take:
341
- bool take_first, take_second;
342
- if(position == last)
343
- {
344
- take_first = rep->can_be_null & mask_take;
345
- take_second = rep->can_be_null & mask_skip;
346
- }
347
- else
348
- {
349
- take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
350
- take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
351
- }
352
-
353
- if(next_count->get_count() < rep->min)
354
- {
355
- // we must take the repeat:
356
- if(take_first)
357
- {
358
- // increase the counter:
359
- ++(*next_count);
360
- pstate = rep->next.p;
361
- return match_all_states();
362
- }
363
- return false;
364
- }
365
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
366
- if(greedy)
367
- {
368
- // try and take the repeat if we can:
369
- if((next_count->get_count() < rep->max) && take_first)
370
- {
371
- // store position in case we fail:
372
- BidiIterator pos = position;
373
- // increase the counter:
374
- ++(*next_count);
375
- pstate = rep->next.p;
376
- if(match_all_states())
377
- return true;
378
- if(!m_can_backtrack)
379
- return false;
380
- // failed repeat, reset posistion and fall through for alternative:
381
- position = pos;
382
- }
383
- if(take_second)
384
- {
385
- pstate = rep->alt.p;
386
- return true;
387
- }
388
- return false; // can't take anything, fail...
389
- }
390
- else // non-greedy
391
- {
392
- // try and skip the repeat if we can:
393
- if(take_second)
394
- {
395
- // store position in case we fail:
396
- BidiIterator pos = position;
397
- pstate = rep->alt.p;
398
- if(match_all_states())
399
- return true;
400
- if(!m_can_backtrack)
401
- return false;
402
- // failed alternative, reset posistion and fall through for repeat:
403
- position = pos;
404
- }
405
- if((next_count->get_count() < rep->max) && take_first)
406
- {
407
- // increase the counter:
408
- ++(*next_count);
409
- pstate = rep->next.p;
410
- return match_all_states();
411
- }
412
- }
413
- return false;
414
- #ifdef BOOST_MSVC
415
- #pragma warning(pop)
416
- #endif
417
- }
418
-
419
- template <class BidiIterator, class Allocator, class traits>
420
- bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
421
- {
422
- #ifdef BOOST_MSVC
423
- #pragma warning(push)
424
- #pragma warning(disable:4127)
425
- #endif
426
- std::size_t count = 0;
427
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
428
- re_syntax_base* psingle = rep->next.p;
429
- // match compulsary repeats first:
430
- while(count < rep->min)
431
- {
432
- pstate = psingle;
433
- if(!match_wild())
434
- return false;
435
- ++count;
436
- }
437
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
438
- if(greedy)
439
- {
440
- // normal repeat:
441
- while(count < rep->max)
442
- {
443
- pstate = psingle;
444
- if(!match_wild())
445
- break;
446
- ++count;
447
- }
448
- if((rep->leading) && (count < rep->max))
449
- restart = position;
450
- pstate = rep;
451
- return backtrack_till_match(count - rep->min);
452
- }
453
- else
454
- {
455
- // non-greedy, keep trying till we get a match:
456
- BidiIterator save_pos;
457
- do
458
- {
459
- if((rep->leading) && (rep->max == UINT_MAX))
460
- restart = position;
461
- pstate = rep->alt.p;
462
- save_pos = position;
463
- ++state_count;
464
- if(match_all_states())
465
- return true;
466
- if((count >= rep->max) || !m_can_backtrack)
467
- return false;
468
- ++count;
469
- pstate = psingle;
470
- position = save_pos;
471
- if(!match_wild())
472
- return false;
473
- }while(true);
474
- }
475
- #ifdef BOOST_MSVC
476
- #pragma warning(pop)
477
- #endif
478
- }
479
-
480
- template <class BidiIterator, class Allocator, class traits>
481
- bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
482
- {
483
- #ifdef BOOST_MSVC
484
- #pragma warning(push)
485
- #pragma warning(disable:4127)
486
- #endif
487
- if(m_match_flags & match_not_dot_null)
488
- return match_dot_repeat_slow();
489
- if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
490
- return match_dot_repeat_slow();
491
- //
492
- // start by working out how much we can skip:
493
- //
494
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
495
- #ifdef BOOST_MSVC
496
- #pragma warning(push)
497
- #pragma warning(disable:4267)
498
- #endif
499
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
500
- std::size_t count = (std::min)(static_cast<std::size_t>(::boost::BOOST_REGEX_DETAIL_NS::distance(position, last)), greedy ? rep->max : rep->min);
501
- if(rep->min > count)
502
- {
503
- position = last;
504
- return false; // not enough text left to match
505
- }
506
- std::advance(position, count);
507
- #ifdef BOOST_MSVC
508
- #pragma warning(pop)
509
- #endif
510
- if((rep->leading) && (count < rep->max) && greedy)
511
- restart = position;
512
- if(greedy)
513
- return backtrack_till_match(count - rep->min);
514
-
515
- // non-greedy, keep trying till we get a match:
516
- BidiIterator save_pos;
517
- do
518
- {
519
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
520
- {
521
- ++position;
522
- ++count;
523
- }
524
- if((rep->leading) && (rep->max == UINT_MAX))
525
- restart = position;
526
- pstate = rep->alt.p;
527
- save_pos = position;
528
- ++state_count;
529
- if(match_all_states())
530
- return true;
531
- if((count >= rep->max) || !m_can_backtrack)
532
- return false;
533
- if(save_pos == last)
534
- return false;
535
- position = ++save_pos;
536
- ++count;
537
- }while(true);
538
- #ifdef BOOST_MSVC
539
- #pragma warning(pop)
540
- #endif
541
- }
542
-
543
- template <class BidiIterator, class Allocator, class traits>
544
- bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
545
- {
546
- #ifdef BOOST_MSVC
547
- #pragma warning(push)
548
- #pragma warning(disable:4127)
549
- #pragma warning(disable:4267)
550
- #endif
551
- #ifdef BOOST_BORLANDC
552
- #pragma option push -w-8008 -w-8066 -w-8004
553
- #endif
554
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
555
- BOOST_REGEX_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
556
- const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
557
- //
558
- // start by working out how much we can skip:
559
- //
560
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
561
- std::size_t count, desired;
562
- if(::boost::is_random_access_iterator<BidiIterator>::value)
563
- {
564
- desired =
565
- (std::min)(
566
- (std::size_t)(greedy ? rep->max : rep->min),
567
- (std::size_t)::boost::BOOST_REGEX_DETAIL_NS::distance(position, last));
568
- count = desired;
569
- ++desired;
570
- if(icase)
571
- {
572
- while(--desired && (traits_inst.translate_nocase(*position) == what))
573
- {
574
- ++position;
575
- }
576
- }
577
- else
578
- {
579
- while(--desired && (traits_inst.translate(*position) == what))
580
- {
581
- ++position;
582
- }
583
- }
584
- count = count - desired;
585
- }
586
- else
587
- {
588
- count = 0;
589
- desired = greedy ? rep->max : rep->min;
590
- while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
591
- {
592
- ++position;
593
- ++count;
594
- }
595
- }
596
- if((rep->leading) && (count < rep->max) && greedy)
597
- restart = position;
598
- if(count < rep->min)
599
- return false;
600
-
601
- if(greedy)
602
- return backtrack_till_match(count - rep->min);
603
-
604
- // non-greedy, keep trying till we get a match:
605
- BidiIterator save_pos;
606
- do
607
- {
608
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
609
- {
610
- if((traits_inst.translate(*position, icase) == what))
611
- {
612
- ++position;
613
- ++count;
614
- }
615
- else
616
- return false; // counldn't repeat even though it was the only option
617
- }
618
- if((rep->leading) && (rep->max == UINT_MAX))
619
- restart = position;
620
- pstate = rep->alt.p;
621
- save_pos = position;
622
- ++state_count;
623
- if(match_all_states())
624
- return true;
625
- if((count >= rep->max) || !m_can_backtrack)
626
- return false;
627
- position = save_pos;
628
- if(position == last)
629
- return false;
630
- if(traits_inst.translate(*position, icase) == what)
631
- {
632
- ++position;
633
- ++count;
634
- }
635
- else
636
- {
637
- return false;
638
- }
639
- }while(true);
640
- #ifdef BOOST_BORLANDC
641
- #pragma option pop
642
- #endif
643
- #ifdef BOOST_MSVC
644
- #pragma warning(pop)
645
- #endif
646
- }
647
-
648
- template <class BidiIterator, class Allocator, class traits>
649
- bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
650
- {
651
- #ifdef BOOST_MSVC
652
- #pragma warning(push)
653
- #pragma warning(disable:4127)
654
- #endif
655
- #ifdef BOOST_BORLANDC
656
- #pragma option push -w-8008 -w-8066 -w-8004
657
- #endif
658
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
659
- const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
660
- std::size_t count = 0;
661
- //
662
- // start by working out how much we can skip:
663
- //
664
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
665
- std::size_t desired = greedy ? rep->max : rep->min;
666
- if(::boost::is_random_access_iterator<BidiIterator>::value)
667
- {
668
- BidiIterator end = position;
669
- // Move end forward by "desired", preferably without using distance or advance if we can
670
- // as these can be slow for some iterator types.
671
- std::size_t len = (desired == (std::numeric_limits<std::size_t>::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last);
672
- if(desired >= len)
673
- end = last;
674
- else
675
- std::advance(end, desired);
676
- BidiIterator origin(position);
677
- while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
678
- {
679
- ++position;
680
- }
681
- count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position);
682
- }
683
- else
684
- {
685
- while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
686
- {
687
- ++position;
688
- ++count;
689
- }
690
- }
691
- if((rep->leading) && (count < rep->max) && greedy)
692
- restart = position;
693
- if(count < rep->min)
694
- return false;
695
-
696
- if(greedy)
697
- return backtrack_till_match(count - rep->min);
698
-
699
- // non-greedy, keep trying till we get a match:
700
- BidiIterator save_pos;
701
- do
702
- {
703
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
704
- {
705
- if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
706
- {
707
- ++position;
708
- ++count;
709
- }
710
- else
711
- return false; // counldn't repeat even though it was the only option
712
- }
713
- if((rep->leading) && (rep->max == UINT_MAX))
714
- restart = position;
715
- pstate = rep->alt.p;
716
- save_pos = position;
717
- ++state_count;
718
- if(match_all_states())
719
- return true;
720
- if((count >= rep->max) || !m_can_backtrack)
721
- return false;
722
- position = save_pos;
723
- if(position == last)
724
- return false;
725
- if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
726
- {
727
- ++position;
728
- ++count;
729
- }
730
- else
731
- {
732
- return false;
733
- }
734
- }while(true);
735
- #ifdef BOOST_BORLANDC
736
- #pragma option pop
737
- #endif
738
- #ifdef BOOST_MSVC
739
- #pragma warning(pop)
740
- #endif
741
- }
742
-
743
- template <class BidiIterator, class Allocator, class traits>
744
- bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
745
- {
746
- #ifdef BOOST_MSVC
747
- #pragma warning(push)
748
- #pragma warning(disable:4127)
749
- #endif
750
- #ifdef BOOST_BORLANDC
751
- #pragma option push -w-8008 -w-8066 -w-8004
752
- #endif
753
- typedef typename traits::char_class_type char_class_type;
754
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
755
- const re_set_long<char_class_type>* set = static_cast<const re_set_long<char_class_type>*>(pstate->next.p);
756
- std::size_t count = 0;
757
- //
758
- // start by working out how much we can skip:
759
- //
760
- bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
761
- std::size_t desired = greedy ? rep->max : rep->min;
762
- if(::boost::is_random_access_iterator<BidiIterator>::value)
763
- {
764
- BidiIterator end = position;
765
- // Move end forward by "desired", preferably without using distance or advance if we can
766
- // as these can be slow for some iterator types.
767
- std::size_t len = (desired == (std::numeric_limits<std::size_t>::max)()) ? 0u : ::boost::BOOST_REGEX_DETAIL_NS::distance(position, last);
768
- if(desired >= len)
769
- end = last;
770
- else
771
- std::advance(end, desired);
772
- BidiIterator origin(position);
773
- while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
774
- {
775
- ++position;
776
- }
777
- count = (unsigned)::boost::BOOST_REGEX_DETAIL_NS::distance(origin, position);
778
- }
779
- else
780
- {
781
- while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
782
- {
783
- ++position;
784
- ++count;
785
- }
786
- }
787
- if((rep->leading) && (count < rep->max) && greedy)
788
- restart = position;
789
- if(count < rep->min)
790
- return false;
791
-
792
- if(greedy)
793
- return backtrack_till_match(count - rep->min);
794
-
795
- // non-greedy, keep trying till we get a match:
796
- BidiIterator save_pos;
797
- do
798
- {
799
- while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
800
- {
801
- if(position != re_is_set_member(position, last, set, re.get_data(), icase))
802
- {
803
- ++position;
804
- ++count;
805
- }
806
- else
807
- return false; // counldn't repeat even though it was the only option
808
- }
809
- if((rep->leading) && (rep->max == UINT_MAX))
810
- restart = position;
811
- pstate = rep->alt.p;
812
- save_pos = position;
813
- ++state_count;
814
- if(match_all_states())
815
- return true;
816
- if((count >= rep->max) || !m_can_backtrack)
817
- return false;
818
- position = save_pos;
819
- if(position == last)
820
- return false;
821
- if(position != re_is_set_member(position, last, set, re.get_data(), icase))
822
- {
823
- ++position;
824
- ++count;
825
- }
826
- else
827
- {
828
- return false;
829
- }
830
- }while(true);
831
- #ifdef BOOST_BORLANDC
832
- #pragma option pop
833
- #endif
834
- #ifdef BOOST_MSVC
835
- #pragma warning(pop)
836
- #endif
837
- }
838
-
839
- template <class BidiIterator, class Allocator, class traits>
840
- bool perl_matcher<BidiIterator, Allocator, traits>::backtrack_till_match(std::size_t count)
841
- {
842
- #ifdef BOOST_MSVC
843
- #pragma warning(push)
844
- #pragma warning(disable:4127)
845
- #endif
846
- if(!m_can_backtrack)
847
- return false;
848
- if((m_match_flags & match_partial) && (position == last))
849
- m_has_partial_match = true;
850
-
851
- const re_repeat* rep = static_cast<const re_repeat*>(pstate);
852
- BidiIterator backtrack = position;
853
- if(position == last)
854
- {
855
- if(rep->can_be_null & mask_skip)
856
- {
857
- pstate = rep->alt.p;
858
- if(match_all_states())
859
- return true;
860
- }
861
- if(count)
862
- {
863
- position = --backtrack;
864
- --count;
865
- }
866
- else
867
- return false;
868
- }
869
- do
870
- {
871
- while(count && !can_start(*position, rep->_map, mask_skip))
872
- {
873
- --position;
874
- --count;
875
- ++state_count;
876
- }
877
- pstate = rep->alt.p;
878
- backtrack = position;
879
- if(match_all_states())
880
- return true;
881
- if(count == 0)
882
- return false;
883
- position = --backtrack;
884
- ++state_count;
885
- --count;
886
- }while(true);
887
- #ifdef BOOST_MSVC
888
- #pragma warning(pop)
889
- #endif
890
- }
891
-
892
- template <class BidiIterator, class Allocator, class traits>
893
- bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion()
894
- {
895
- BOOST_REGEX_ASSERT(pstate->type == syntax_element_recurse);
896
- //
897
- // Set new call stack:
898
- //
899
- if(recursion_stack.capacity() == 0)
900
- {
901
- recursion_stack.reserve(50);
902
- }
903
- //
904
- // See if we've seen this recursion before at this location, if we have then
905
- // we need to prevent infinite recursion:
906
- //
907
- for(typename std::vector<recursion_info<results_type> >::reverse_iterator i = recursion_stack.rbegin(); i != recursion_stack.rend(); ++i)
908
- {
909
- if(i->idx == static_cast<const re_brace*>(static_cast<const re_jump*>(pstate)->alt.p)->index)
910
- {
911
- if(i->location_of_start == position)
912
- return false;
913
- break;
914
- }
915
- }
916
- //
917
- // Now get on with it:
918
- //
919
- recursion_stack.push_back(recursion_info<results_type>());
920
- recursion_stack.back().preturn_address = pstate->next.p;
921
- recursion_stack.back().results = *m_presult;
922
- recursion_stack.back().repeater_stack = next_count;
923
- recursion_stack.back().location_of_start = position;
924
- pstate = static_cast<const re_jump*>(pstate)->alt.p;
925
- recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index;
926
-
927
- repeater_count<BidiIterator>* saved = next_count;
928
- repeater_count<BidiIterator> r(&next_count); // resets all repeat counts since we're recursing and starting fresh on those
929
- next_count = &r;
930
- bool can_backtrack = m_can_backtrack;
931
- bool result = match_all_states();
932
- m_can_backtrack = can_backtrack;
933
- next_count = saved;
934
-
935
- if(!result)
936
- {
937
- next_count = recursion_stack.back().repeater_stack;
938
- *m_presult = recursion_stack.back().results;
939
- recursion_stack.pop_back();
940
- return false;
941
- }
942
- return true;
943
- }
944
-
945
- template <class BidiIterator, class Allocator, class traits>
946
- bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
947
- {
948
- int index = static_cast<const re_brace*>(pstate)->index;
949
- icase = static_cast<const re_brace*>(pstate)->icase;
950
- if(index > 0)
951
- {
952
- if((m_match_flags & match_nosubs) == 0)
953
- {
954
- m_presult->set_second(position, index);
955
- }
956
- if(!recursion_stack.empty())
957
- {
958
- if(index == recursion_stack.back().idx)
959
- {
960
- recursion_info<results_type> saved = recursion_stack.back();
961
- recursion_stack.pop_back();
962
- pstate = saved.preturn_address;
963
- repeater_count<BidiIterator>* saved_count = next_count;
964
- next_count = saved.repeater_stack;
965
- *m_presult = saved.results;
966
- if(!match_all_states())
967
- {
968
- recursion_stack.push_back(saved);
969
- next_count = saved_count;
970
- return false;
971
- }
972
- }
973
- }
974
- }
975
- else if((index < 0) && (index != -4))
976
- {
977
- // matched forward lookahead:
978
- pstate = 0;
979
- return true;
980
- }
981
- pstate = pstate ? pstate->next.p : 0;
982
- return true;
983
- }
984
-
985
- template <class BidiIterator, class Allocator, class traits>
986
- bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
987
- {
988
- if(!recursion_stack.empty())
989
- {
990
- BOOST_REGEX_ASSERT(0 == recursion_stack.back().idx);
991
- const re_syntax_base* saved_state = pstate = recursion_stack.back().preturn_address;
992
- *m_presult = recursion_stack.back().results;
993
- recursion_stack.pop_back();
994
- if(!match_all_states())
995
- {
996
- recursion_stack.push_back(recursion_info<results_type>());
997
- recursion_stack.back().preturn_address = saved_state;
998
- recursion_stack.back().results = *m_presult;
999
- recursion_stack.back().location_of_start = position;
1000
- return false;
1001
- }
1002
- return true;
1003
- }
1004
- if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first))
1005
- return false;
1006
- if((m_match_flags & match_all) && (position != last))
1007
- return false;
1008
- if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base))
1009
- return false;
1010
- m_presult->set_second(position);
1011
- pstate = 0;
1012
- m_has_found_match = true;
1013
- if((m_match_flags & match_posix) == match_posix)
1014
- {
1015
- m_result.maybe_assign(*m_presult);
1016
- if((m_match_flags & match_any) == 0)
1017
- return false;
1018
- }
1019
- #ifdef BOOST_REGEX_MATCH_EXTRA
1020
- if(match_extra & m_match_flags)
1021
- {
1022
- for(unsigned i = 0; i < m_presult->size(); ++i)
1023
- if((*m_presult)[i].matched)
1024
- ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]);
1025
- }
1026
- #endif
1027
- return true;
1028
- }
1029
-
1030
- template <class BidiIterator, class Allocator, class traits>
1031
- bool perl_matcher<BidiIterator, Allocator, traits>::match_commit()
1032
- {
1033
- m_can_backtrack = false;
1034
- int action = static_cast<const re_commit*>(pstate)->action;
1035
- switch(action)
1036
- {
1037
- case commit_commit:
1038
- restart = last;
1039
- break;
1040
- case commit_skip:
1041
- restart = position;
1042
- break;
1043
- }
1044
- pstate = pstate->next.p;
1045
- return true;
1046
- }
1047
-
1048
- template <class BidiIterator, class Allocator, class traits>
1049
- bool perl_matcher<BidiIterator, Allocator, traits>::match_then()
1050
- {
1051
- pstate = pstate->next.p;
1052
- if(match_all_states())
1053
- return true;
1054
- m_can_backtrack = false;
1055
- m_have_then = true;
1056
- return false;
1057
- }
1058
-
1059
- template <class BidiIterator, class Allocator, class traits>
1060
- bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case()
1061
- {
1062
- // change our case sensitivity:
1063
- bool oldcase = this->icase;
1064
- this->icase = static_cast<const re_case*>(pstate)->icase;
1065
- pstate = pstate->next.p;
1066
- bool result = match_all_states();
1067
- this->icase = oldcase;
1068
- return result;
1069
- }
1070
-
1071
-
1072
-
1073
- template <class BidiIterator, class Allocator, class traits>
1074
- bool perl_matcher<BidiIterator, Allocator, traits>::skip_until_paren(int index, bool have_match)
1075
- {
1076
- while(pstate)
1077
- {
1078
- if(pstate->type == syntax_element_endmark)
1079
- {
1080
- if(static_cast<const re_brace*>(pstate)->index == index)
1081
- {
1082
- if(have_match)
1083
- return this->match_endmark();
1084
- pstate = pstate->next.p;
1085
- return true;
1086
- }
1087
- else
1088
- {
1089
- // Unenclosed closing ), occurs when (*ACCEPT) is inside some other
1090
- // parenthesis which may or may not have other side effects associated with it.
1091
- bool r = match_endmark();
1092
- m_have_accept = true;
1093
- if(!pstate)
1094
- return r;
1095
- }
1096
- continue;
1097
- }
1098
- else if(pstate->type == syntax_element_match)
1099
- return true;
1100
- else if(pstate->type == syntax_element_startmark)
1101
- {
1102
- int idx = static_cast<const re_brace*>(pstate)->index;
1103
- pstate = pstate->next.p;
1104
- skip_until_paren(idx, false);
1105
- continue;
1106
- }
1107
- pstate = pstate->next.p;
1108
- }
1109
- return true;
1110
- }
1111
-
1112
-
1113
- } // namespace BOOST_REGEX_DETAIL_NS
1114
- } // namespace boost
1115
- #ifdef BOOST_MSVC
1116
- #pragma warning(pop)
1117
- #endif
1118
-
1119
- #ifdef BOOST_MSVC
1120
- #pragma warning(push)
1121
- #pragma warning(disable: 4103)
1122
- #endif
1123
- #ifdef BOOST_HAS_ABI_HEADERS
1124
- # include BOOST_ABI_SUFFIX
1125
- #endif
1126
- #ifdef BOOST_MSVC
1127
- #pragma warning(pop)
1128
- #endif
1129
-
1130
- #endif
1131
-