passenger 6.0.27 → 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 (482) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +42 -2
  3. data/CONTRIBUTORS +2 -0
  4. data/Rakefile +6 -13
  5. data/bin/passenger-install-apache2-module +21 -22
  6. data/bin/passenger-install-nginx-module +50 -47
  7. data/bin/passenger-status +9 -10
  8. data/build/common_library.rb +4 -4
  9. data/build/support/cxx_dependency_map.rb +3 -621
  10. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  11. data/build/test_basics.rb +4 -3
  12. data/dev/copy_boost_headers +54 -40
  13. data/dev/index_cxx_dependencies.rb +4 -0
  14. data/dev/ruby_server.rb +1 -1
  15. data/package.json +1 -1
  16. data/src/agent/Core/ApplicationPool/Implementation.cpp +1 -1
  17. data/src/agent/Core/ApplicationPool/Socket.h +3 -3
  18. data/src/agent/Core/ApplicationPool/TestSession.h +3 -4
  19. data/src/agent/Core/Config.h +1 -6
  20. data/src/agent/Core/Controller/Config.h +1 -1
  21. data/src/agent/Core/CoreMain.cpp +1 -0
  22. data/src/agent/Core/SecurityUpdateChecker.h +10 -1
  23. data/src/agent/Core/SpawningKit/Exceptions.h +0 -1
  24. data/src/agent/Core/SpawningKit/Handshake/Perform.h +13 -2
  25. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +23 -5
  26. data/src/agent/Shared/Fundamentals/AbortHandler.h +10 -22
  27. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -0
  28. data/src/agent/Watchdog/Config.h +1 -1
  29. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
  30. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +5 -0
  31. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +14 -0
  32. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +3 -0
  33. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
  34. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +11 -0
  35. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
  36. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +17 -0
  37. data/src/apache2_module/Hooks.cpp +0 -6
  38. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +2 -12
  39. data/src/cxx_supportlib/ConfigKit/Store.h +1 -6
  40. data/src/cxx_supportlib/Constants.h +1 -1
  41. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -7
  42. data/src/cxx_supportlib/Exceptions.cpp +178 -0
  43. data/src/cxx_supportlib/Exceptions.h +62 -177
  44. data/src/cxx_supportlib/IOTools/IOUtils.cpp +255 -228
  45. data/src/cxx_supportlib/IOTools/IOUtils.h +84 -121
  46. data/src/cxx_supportlib/ServerKit/Config.h +1 -6
  47. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +1 -1
  48. data/src/cxx_supportlib/StaticString.h +1 -6
  49. data/src/cxx_supportlib/Utils/Curl.h +1 -6
  50. data/src/cxx_supportlib/Utils/ScopeGuard.h +0 -32
  51. data/src/cxx_supportlib/oxt/implementation.cpp +2 -2
  52. data/src/cxx_supportlib/oxt/spin_lock.hpp +94 -23
  53. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  54. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  112. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  115. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  116. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  117. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  118. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  119. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  120. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  122. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  123. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  124. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  125. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  127. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  128. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  129. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  130. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  131. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  132. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  133. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  134. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  135. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  136. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  137. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  138. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  139. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  140. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  141. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  142. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  143. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  144. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  145. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  148. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  150. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  152. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  153. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  156. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  157. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  158. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  160. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  162. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  164. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  166. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  167. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  168. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  171. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  172. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  173. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  174. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  176. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  177. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  179. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  181. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  182. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  185. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  186. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  191. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  193. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  194. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  196. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  197. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  198. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  199. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  207. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  208. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  209. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  211. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  216. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  217. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  218. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  219. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  220. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  221. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  222. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  223. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  224. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  226. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  227. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  228. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  231. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  232. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  233. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  235. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  238. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  239. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  240. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  241. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  243. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  244. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  248. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  249. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  250. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  253. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  255. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  256. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  257. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  258. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  261. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  262. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  266. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  267. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  269. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  272. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  273. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  274. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  275. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  276. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  297. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  298. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  301. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  302. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  304. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  305. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  307. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  308. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  309. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  310. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  311. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  312. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  313. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  314. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  315. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  316. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  317. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  318. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  319. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  320. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  321. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  322. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  323. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  324. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  329. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  330. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  333. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  335. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  351. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  352. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  353. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  354. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  355. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  356. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  357. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  358. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  359. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  362. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  363. data/src/nginx_module/ContentHandler.c +2 -0
  364. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  365. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  366. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  367. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  368. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  369. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  370. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  371. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  372. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +12 -23
  373. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +31 -32
  374. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +2 -2
  375. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  376. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  377. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  378. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  379. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  380. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  381. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  382. metadata +27 -104
  383. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +0 -75
  384. data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +0 -85
  385. data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +0 -38
  386. data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +0 -111
  387. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  388. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  389. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  390. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  391. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  392. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  393. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  394. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  395. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  396. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  397. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  398. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  399. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  400. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  401. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  402. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  403. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  404. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  405. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  406. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  407. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  415. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  416. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  417. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  418. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  419. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  420. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  421. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  422. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  423. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  424. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  425. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  426. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  427. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  428. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  429. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  430. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  431. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  432. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  433. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  434. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  435. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  436. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  437. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  438. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  439. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  440. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  441. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  442. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  443. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  444. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  445. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  446. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  447. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  448. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  449. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  450. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  451. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  452. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  453. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  454. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  455. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  456. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  457. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  458. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  459. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  460. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  461. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  462. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  463. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  464. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  465. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  466. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  467. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  468. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  469. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  470. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  471. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  472. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  473. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  474. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  475. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  476. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  477. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  478. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  479. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  480. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  481. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  482. 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
-