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,871 +0,0 @@
1
- /*
2
- *
3
- * Copyright (c) 2004
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 unicode_iterator.hpp
15
- * VERSION see <boost/version.hpp>
16
- * DESCRIPTION: Iterator adapters for converting between different Unicode encodings.
17
- */
18
-
19
- /****************************************************************************
20
-
21
- Contents:
22
- ~~~~~~~~~
23
-
24
- 1) Read Only, Input Adapters:
25
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26
-
27
- template <class BaseIterator, class U8Type = ::boost::uint8_t>
28
- class u32_to_u8_iterator;
29
-
30
- Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-8.
31
-
32
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
33
- class u8_to_u32_iterator;
34
-
35
- Adapts sequence of UTF-8 code points to "look like" a sequence of UTF-32.
36
-
37
- template <class BaseIterator, class U16Type = ::boost::uint16_t>
38
- class u32_to_u16_iterator;
39
-
40
- Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-16.
41
-
42
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
43
- class u16_to_u32_iterator;
44
-
45
- Adapts sequence of UTF-16 code points to "look like" a sequence of UTF-32.
46
-
47
- 2) Single pass output iterator adapters:
48
-
49
- template <class BaseIterator>
50
- class utf8_output_iterator;
51
-
52
- Accepts UTF-32 code points and forwards them on as UTF-8 code points.
53
-
54
- template <class BaseIterator>
55
- class utf16_output_iterator;
56
-
57
- Accepts UTF-32 code points and forwards them on as UTF-16 code points.
58
-
59
- ****************************************************************************/
60
-
61
- #ifndef BOOST_REGEX_V4_UNICODE_ITERATOR_HPP
62
- #define BOOST_REGEX_V4_UNICODE_ITERATOR_HPP
63
- #include <boost/cstdint.hpp>
64
- #include <boost/regex/config.hpp>
65
- #include <boost/static_assert.hpp>
66
- #include <boost/throw_exception.hpp>
67
- #include <stdexcept>
68
- #ifndef BOOST_NO_STD_LOCALE
69
- #include <sstream>
70
- #include <ios>
71
- #endif
72
- #include <limits.h> // CHAR_BIT
73
-
74
- #ifdef BOOST_REGEX_CXX03
75
-
76
- #else
77
- #endif
78
-
79
- namespace boost{
80
-
81
- namespace detail{
82
-
83
- static const ::boost::uint16_t high_surrogate_base = 0xD7C0u;
84
- static const ::boost::uint16_t low_surrogate_base = 0xDC00u;
85
- static const ::boost::uint32_t ten_bit_mask = 0x3FFu;
86
-
87
- inline bool is_high_surrogate(::boost::uint16_t v)
88
- {
89
- return (v & 0xFFFFFC00u) == 0xd800u;
90
- }
91
- inline bool is_low_surrogate(::boost::uint16_t v)
92
- {
93
- return (v & 0xFFFFFC00u) == 0xdc00u;
94
- }
95
- template <class T>
96
- inline bool is_surrogate(T v)
97
- {
98
- return (v & 0xFFFFF800u) == 0xd800;
99
- }
100
-
101
- inline unsigned utf8_byte_count(boost::uint8_t c)
102
- {
103
- // if the most significant bit with a zero in it is in position
104
- // 8-N then there are N bytes in this UTF-8 sequence:
105
- boost::uint8_t mask = 0x80u;
106
- unsigned result = 0;
107
- while(c & mask)
108
- {
109
- ++result;
110
- mask >>= 1;
111
- }
112
- return (result == 0) ? 1 : ((result > 4) ? 4 : result);
113
- }
114
-
115
- inline unsigned utf8_trailing_byte_count(boost::uint8_t c)
116
- {
117
- return utf8_byte_count(c) - 1;
118
- }
119
-
120
- #ifdef BOOST_MSVC
121
- #pragma warning(push)
122
- #pragma warning(disable:4100)
123
- #endif
124
- #ifndef BOOST_NO_EXCEPTIONS
125
- BOOST_NORETURN
126
- #endif
127
- inline void invalid_utf32_code_point(::boost::uint32_t val)
128
- {
129
- #ifndef BOOST_NO_STD_LOCALE
130
- std::stringstream ss;
131
- ss << "Invalid UTF-32 code point U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-16 sequence";
132
- std::out_of_range e(ss.str());
133
- #else
134
- std::out_of_range e("Invalid UTF-32 code point encountered while trying to encode UTF-16 sequence");
135
- #endif
136
- boost::throw_exception(e);
137
- }
138
- #ifdef BOOST_MSVC
139
- #pragma warning(pop)
140
- #endif
141
-
142
-
143
- } // namespace detail
144
-
145
- template <class BaseIterator, class U16Type = ::boost::uint16_t>
146
- class u32_to_u16_iterator
147
- {
148
- #if !defined(BOOST_NO_STD_ITERATOR_TRAITS)
149
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
150
-
151
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
152
- BOOST_STATIC_ASSERT(sizeof(U16Type)*CHAR_BIT == 16);
153
- #endif
154
-
155
- public:
156
- typedef std::ptrdiff_t difference_type;
157
- typedef U16Type value_type;
158
- typedef value_type const* pointer;
159
- typedef value_type const reference;
160
- typedef std::bidirectional_iterator_tag iterator_category;
161
-
162
- reference operator*()const
163
- {
164
- if(m_current == 2)
165
- extract_current();
166
- return m_values[m_current];
167
- }
168
- bool operator==(const u32_to_u16_iterator& that)const
169
- {
170
- if(m_position == that.m_position)
171
- {
172
- // Both m_currents must be equal, or both even
173
- // this is the same as saying their sum must be even:
174
- return (m_current + that.m_current) & 1u ? false : true;
175
- }
176
- return false;
177
- }
178
- bool operator!=(const u32_to_u16_iterator& that)const
179
- {
180
- return !(*this == that);
181
- }
182
- u32_to_u16_iterator& operator++()
183
- {
184
- // if we have a pending read then read now, so that we know whether
185
- // to skip a position, or move to a low-surrogate:
186
- if(m_current == 2)
187
- {
188
- // pending read:
189
- extract_current();
190
- }
191
- // move to the next surrogate position:
192
- ++m_current;
193
- // if we've reached the end skip a position:
194
- if(m_values[m_current] == 0)
195
- {
196
- m_current = 2;
197
- ++m_position;
198
- }
199
- return *this;
200
- }
201
- u32_to_u16_iterator operator++(int)
202
- {
203
- u32_to_u16_iterator r(*this);
204
- ++(*this);
205
- return r;
206
- }
207
- u32_to_u16_iterator& operator--()
208
- {
209
- if(m_current != 1)
210
- {
211
- // decrementing an iterator always leads to a valid position:
212
- --m_position;
213
- extract_current();
214
- m_current = m_values[1] ? 1 : 0;
215
- }
216
- else
217
- {
218
- m_current = 0;
219
- }
220
- return *this;
221
- }
222
- u32_to_u16_iterator operator--(int)
223
- {
224
- u32_to_u16_iterator r(*this);
225
- --(*this);
226
- return r;
227
- }
228
- BaseIterator base()const
229
- {
230
- return m_position;
231
- }
232
- // construct:
233
- u32_to_u16_iterator() : m_position(), m_current(0)
234
- {
235
- m_values[0] = 0;
236
- m_values[1] = 0;
237
- m_values[2] = 0;
238
- }
239
- u32_to_u16_iterator(BaseIterator b) : m_position(b), m_current(2)
240
- {
241
- m_values[0] = 0;
242
- m_values[1] = 0;
243
- m_values[2] = 0;
244
- }
245
- private:
246
-
247
- void extract_current()const
248
- {
249
- // begin by checking for a code point out of range:
250
- ::boost::uint32_t v = *m_position;
251
- if(v >= 0x10000u)
252
- {
253
- if(v > 0x10FFFFu)
254
- detail::invalid_utf32_code_point(*m_position);
255
- // split into two surrogates:
256
- m_values[0] = static_cast<U16Type>(v >> 10) + detail::high_surrogate_base;
257
- m_values[1] = static_cast<U16Type>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
258
- m_current = 0;
259
- BOOST_REGEX_ASSERT(detail::is_high_surrogate(m_values[0]));
260
- BOOST_REGEX_ASSERT(detail::is_low_surrogate(m_values[1]));
261
- }
262
- else
263
- {
264
- // 16-bit code point:
265
- m_values[0] = static_cast<U16Type>(*m_position);
266
- m_values[1] = 0;
267
- m_current = 0;
268
- // value must not be a surrogate:
269
- if(detail::is_surrogate(m_values[0]))
270
- detail::invalid_utf32_code_point(*m_position);
271
- }
272
- }
273
- BaseIterator m_position;
274
- mutable U16Type m_values[3];
275
- mutable unsigned m_current;
276
- };
277
-
278
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
279
- class u16_to_u32_iterator
280
- {
281
- // special values for pending iterator reads:
282
- BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
283
-
284
- #if !defined(BOOST_NO_STD_ITERATOR_TRAITS)
285
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
286
-
287
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 16);
288
- BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
289
- #endif
290
-
291
- public:
292
- typedef std::ptrdiff_t difference_type;
293
- typedef U32Type value_type;
294
- typedef value_type const* pointer;
295
- typedef value_type const reference;
296
- typedef std::bidirectional_iterator_tag iterator_category;
297
-
298
- reference operator*()const
299
- {
300
- if(m_value == pending_read)
301
- extract_current();
302
- return m_value;
303
- }
304
- bool operator==(const u16_to_u32_iterator& that)const
305
- {
306
- return m_position == that.m_position;
307
- }
308
- bool operator!=(const u16_to_u32_iterator& that)const
309
- {
310
- return !(*this == that);
311
- }
312
- u16_to_u32_iterator& operator++()
313
- {
314
- // skip high surrogate first if there is one:
315
- if(detail::is_high_surrogate(*m_position)) ++m_position;
316
- ++m_position;
317
- m_value = pending_read;
318
- return *this;
319
- }
320
- u16_to_u32_iterator operator++(int)
321
- {
322
- u16_to_u32_iterator r(*this);
323
- ++(*this);
324
- return r;
325
- }
326
- u16_to_u32_iterator& operator--()
327
- {
328
- --m_position;
329
- // if we have a low surrogate then go back one more:
330
- if(detail::is_low_surrogate(*m_position))
331
- --m_position;
332
- m_value = pending_read;
333
- return *this;
334
- }
335
- u16_to_u32_iterator operator--(int)
336
- {
337
- u16_to_u32_iterator r(*this);
338
- --(*this);
339
- return r;
340
- }
341
- BaseIterator base()const
342
- {
343
- return m_position;
344
- }
345
- // construct:
346
- u16_to_u32_iterator() : m_position()
347
- {
348
- m_value = pending_read;
349
- }
350
- u16_to_u32_iterator(BaseIterator b) : m_position(b)
351
- {
352
- m_value = pending_read;
353
- }
354
- //
355
- // Range checked version:
356
- //
357
- u16_to_u32_iterator(BaseIterator b, BaseIterator start, BaseIterator end) : m_position(b)
358
- {
359
- m_value = pending_read;
360
- //
361
- // The range must not start with a low surrogate, or end in a high surrogate,
362
- // otherwise we run the risk of running outside the underlying input range.
363
- // Likewise b must not be located at a low surrogate.
364
- //
365
- boost::uint16_t val;
366
- if(start != end)
367
- {
368
- if((b != start) && (b != end))
369
- {
370
- val = *b;
371
- if(detail::is_surrogate(val) && ((val & 0xFC00u) == 0xDC00u))
372
- invalid_code_point(val);
373
- }
374
- val = *start;
375
- if(detail::is_surrogate(val) && ((val & 0xFC00u) == 0xDC00u))
376
- invalid_code_point(val);
377
- val = *--end;
378
- if(detail::is_high_surrogate(val))
379
- invalid_code_point(val);
380
- }
381
- }
382
- private:
383
- static void invalid_code_point(::boost::uint16_t val)
384
- {
385
- #ifndef BOOST_NO_STD_LOCALE
386
- std::stringstream ss;
387
- ss << "Misplaced UTF-16 surrogate U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-32 sequence";
388
- std::out_of_range e(ss.str());
389
- #else
390
- std::out_of_range e("Misplaced UTF-16 surrogate encountered while trying to encode UTF-32 sequence");
391
- #endif
392
- boost::throw_exception(e);
393
- }
394
- void extract_current()const
395
- {
396
- m_value = static_cast<U32Type>(static_cast< ::boost::uint16_t>(*m_position));
397
- // if the last value is a high surrogate then adjust m_position and m_value as needed:
398
- if(detail::is_high_surrogate(*m_position))
399
- {
400
- // precondition; next value must have be a low-surrogate:
401
- BaseIterator next(m_position);
402
- ::boost::uint16_t t = *++next;
403
- if((t & 0xFC00u) != 0xDC00u)
404
- invalid_code_point(t);
405
- m_value = (m_value - detail::high_surrogate_base) << 10;
406
- m_value |= (static_cast<U32Type>(static_cast< ::boost::uint16_t>(t)) & detail::ten_bit_mask);
407
- }
408
- // postcondition; result must not be a surrogate:
409
- if(detail::is_surrogate(m_value))
410
- invalid_code_point(static_cast< ::boost::uint16_t>(m_value));
411
- }
412
- BaseIterator m_position;
413
- mutable U32Type m_value;
414
- };
415
-
416
- template <class BaseIterator, class U8Type = ::boost::uint8_t>
417
- class u32_to_u8_iterator
418
- {
419
- #if !defined(BOOST_NO_STD_ITERATOR_TRAITS)
420
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
421
-
422
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
423
- BOOST_STATIC_ASSERT(sizeof(U8Type)*CHAR_BIT == 8);
424
- #endif
425
-
426
- public:
427
- typedef std::ptrdiff_t difference_type;
428
- typedef U8Type value_type;
429
- typedef value_type const* pointer;
430
- typedef value_type const reference;
431
- typedef std::bidirectional_iterator_tag iterator_category;
432
-
433
- reference operator*()const
434
- {
435
- if(m_current == 4)
436
- extract_current();
437
- return m_values[m_current];
438
- }
439
- bool operator==(const u32_to_u8_iterator& that)const
440
- {
441
- if(m_position == that.m_position)
442
- {
443
- // either the m_current's must be equal, or one must be 0 and
444
- // the other 4: which means neither must have bits 1 or 2 set:
445
- return (m_current == that.m_current)
446
- || (((m_current | that.m_current) & 3) == 0);
447
- }
448
- return false;
449
- }
450
- bool operator!=(const u32_to_u8_iterator& that)const
451
- {
452
- return !(*this == that);
453
- }
454
- u32_to_u8_iterator& operator++()
455
- {
456
- // if we have a pending read then read now, so that we know whether
457
- // to skip a position, or move to a low-surrogate:
458
- if(m_current == 4)
459
- {
460
- // pending read:
461
- extract_current();
462
- }
463
- // move to the next surrogate position:
464
- ++m_current;
465
- // if we've reached the end skip a position:
466
- if(m_values[m_current] == 0)
467
- {
468
- m_current = 4;
469
- ++m_position;
470
- }
471
- return *this;
472
- }
473
- u32_to_u8_iterator operator++(int)
474
- {
475
- u32_to_u8_iterator r(*this);
476
- ++(*this);
477
- return r;
478
- }
479
- u32_to_u8_iterator& operator--()
480
- {
481
- if((m_current & 3) == 0)
482
- {
483
- --m_position;
484
- extract_current();
485
- m_current = 3;
486
- while(m_current && (m_values[m_current] == 0))
487
- --m_current;
488
- }
489
- else
490
- --m_current;
491
- return *this;
492
- }
493
- u32_to_u8_iterator operator--(int)
494
- {
495
- u32_to_u8_iterator r(*this);
496
- --(*this);
497
- return r;
498
- }
499
- BaseIterator base()const
500
- {
501
- return m_position;
502
- }
503
- // construct:
504
- u32_to_u8_iterator() : m_position(), m_current(0)
505
- {
506
- m_values[0] = 0;
507
- m_values[1] = 0;
508
- m_values[2] = 0;
509
- m_values[3] = 0;
510
- m_values[4] = 0;
511
- }
512
- u32_to_u8_iterator(BaseIterator b) : m_position(b), m_current(4)
513
- {
514
- m_values[0] = 0;
515
- m_values[1] = 0;
516
- m_values[2] = 0;
517
- m_values[3] = 0;
518
- m_values[4] = 0;
519
- }
520
- private:
521
-
522
- void extract_current()const
523
- {
524
- boost::uint32_t c = *m_position;
525
- if(c > 0x10FFFFu)
526
- detail::invalid_utf32_code_point(c);
527
- if(c < 0x80u)
528
- {
529
- m_values[0] = static_cast<unsigned char>(c);
530
- m_values[1] = static_cast<unsigned char>(0u);
531
- m_values[2] = static_cast<unsigned char>(0u);
532
- m_values[3] = static_cast<unsigned char>(0u);
533
- }
534
- else if(c < 0x800u)
535
- {
536
- m_values[0] = static_cast<unsigned char>(0xC0u + (c >> 6));
537
- m_values[1] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
538
- m_values[2] = static_cast<unsigned char>(0u);
539
- m_values[3] = static_cast<unsigned char>(0u);
540
- }
541
- else if(c < 0x10000u)
542
- {
543
- m_values[0] = static_cast<unsigned char>(0xE0u + (c >> 12));
544
- m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
545
- m_values[2] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
546
- m_values[3] = static_cast<unsigned char>(0u);
547
- }
548
- else
549
- {
550
- m_values[0] = static_cast<unsigned char>(0xF0u + (c >> 18));
551
- m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
552
- m_values[2] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
553
- m_values[3] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
554
- }
555
- m_current= 0;
556
- }
557
- BaseIterator m_position;
558
- mutable U8Type m_values[5];
559
- mutable unsigned m_current;
560
- };
561
-
562
- template <class BaseIterator, class U32Type = ::boost::uint32_t>
563
- class u8_to_u32_iterator
564
- {
565
- // special values for pending iterator reads:
566
- BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
567
-
568
- #if !defined(BOOST_NO_STD_ITERATOR_TRAITS)
569
- typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
570
-
571
- BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 8);
572
- BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
573
- #endif
574
-
575
- public:
576
- typedef std::ptrdiff_t difference_type;
577
- typedef U32Type value_type;
578
- typedef value_type const* pointer;
579
- typedef value_type const reference;
580
- typedef std::bidirectional_iterator_tag iterator_category;
581
-
582
- reference operator*()const
583
- {
584
- if(m_value == pending_read)
585
- extract_current();
586
- return m_value;
587
- }
588
- bool operator==(const u8_to_u32_iterator& that)const
589
- {
590
- return m_position == that.m_position;
591
- }
592
- bool operator!=(const u8_to_u32_iterator& that)const
593
- {
594
- return !(*this == that);
595
- }
596
- u8_to_u32_iterator& operator++()
597
- {
598
- // We must not start with a continuation character:
599
- if((static_cast<boost::uint8_t>(*m_position) & 0xC0) == 0x80)
600
- invalid_sequence();
601
- // skip high surrogate first if there is one:
602
- unsigned c = detail::utf8_byte_count(*m_position);
603
- if(m_value == pending_read)
604
- {
605
- // Since we haven't read in a value, we need to validate the code points:
606
- for(unsigned i = 0; i < c; ++i)
607
- {
608
- ++m_position;
609
- // We must have a continuation byte:
610
- if((i != c - 1) && ((static_cast<boost::uint8_t>(*m_position) & 0xC0) != 0x80))
611
- invalid_sequence();
612
- }
613
- }
614
- else
615
- {
616
- std::advance(m_position, c);
617
- }
618
- m_value = pending_read;
619
- return *this;
620
- }
621
- u8_to_u32_iterator operator++(int)
622
- {
623
- u8_to_u32_iterator r(*this);
624
- ++(*this);
625
- return r;
626
- }
627
- u8_to_u32_iterator& operator--()
628
- {
629
- // Keep backtracking until we don't have a trailing character:
630
- unsigned count = 0;
631
- while((*--m_position & 0xC0u) == 0x80u) ++count;
632
- // now check that the sequence was valid:
633
- if(count != detail::utf8_trailing_byte_count(*m_position))
634
- invalid_sequence();
635
- m_value = pending_read;
636
- return *this;
637
- }
638
- u8_to_u32_iterator operator--(int)
639
- {
640
- u8_to_u32_iterator r(*this);
641
- --(*this);
642
- return r;
643
- }
644
- BaseIterator base()const
645
- {
646
- return m_position;
647
- }
648
- // construct:
649
- u8_to_u32_iterator() : m_position()
650
- {
651
- m_value = pending_read;
652
- }
653
- u8_to_u32_iterator(BaseIterator b) : m_position(b)
654
- {
655
- m_value = pending_read;
656
- }
657
- //
658
- // Checked constructor:
659
- //
660
- u8_to_u32_iterator(BaseIterator b, BaseIterator start, BaseIterator end) : m_position(b)
661
- {
662
- m_value = pending_read;
663
- //
664
- // We must not start with a continuation character, or end with a
665
- // truncated UTF-8 sequence otherwise we run the risk of going past
666
- // the start/end of the underlying sequence:
667
- //
668
- if(start != end)
669
- {
670
- unsigned char v = *start;
671
- if((v & 0xC0u) == 0x80u)
672
- invalid_sequence();
673
- if((b != start) && (b != end) && ((*b & 0xC0u) == 0x80u))
674
- invalid_sequence();
675
- BaseIterator pos = end;
676
- do
677
- {
678
- v = *--pos;
679
- }
680
- while((start != pos) && ((v & 0xC0u) == 0x80u));
681
- std::ptrdiff_t extra = detail::utf8_byte_count(v);
682
- if(std::distance(pos, end) < extra)
683
- invalid_sequence();
684
- }
685
- }
686
- private:
687
- static void invalid_sequence()
688
- {
689
- std::out_of_range e("Invalid UTF-8 sequence encountered while trying to encode UTF-32 character");
690
- boost::throw_exception(e);
691
- }
692
- void extract_current()const
693
- {
694
- m_value = static_cast<U32Type>(static_cast< ::boost::uint8_t>(*m_position));
695
- // we must not have a continuation character:
696
- if((m_value & 0xC0u) == 0x80u)
697
- invalid_sequence();
698
- // see how many extra bytes we have:
699
- unsigned extra = detail::utf8_trailing_byte_count(*m_position);
700
- // extract the extra bits, 6 from each extra byte:
701
- BaseIterator next(m_position);
702
- for(unsigned c = 0; c < extra; ++c)
703
- {
704
- ++next;
705
- m_value <<= 6;
706
- // We must have a continuation byte:
707
- if((static_cast<boost::uint8_t>(*next) & 0xC0) != 0x80)
708
- invalid_sequence();
709
- m_value += static_cast<boost::uint8_t>(*next) & 0x3Fu;
710
- }
711
- // we now need to remove a few of the leftmost bits, but how many depends
712
- // upon how many extra bytes we've extracted:
713
- static const boost::uint32_t masks[4] =
714
- {
715
- 0x7Fu,
716
- 0x7FFu,
717
- 0xFFFFu,
718
- 0x1FFFFFu,
719
- };
720
- m_value &= masks[extra];
721
- // check the result is in range:
722
- if(m_value > static_cast<U32Type>(0x10FFFFu))
723
- invalid_sequence();
724
- // The result must not be a surrogate:
725
- if((m_value >= static_cast<U32Type>(0xD800)) && (m_value <= static_cast<U32Type>(0xDFFF)))
726
- invalid_sequence();
727
- // We should not have had an invalidly encoded UTF8 sequence:
728
- if((extra > 0) && (m_value <= static_cast<U32Type>(masks[extra - 1])))
729
- invalid_sequence();
730
- }
731
- BaseIterator m_position;
732
- mutable U32Type m_value;
733
- };
734
-
735
- template <class BaseIterator>
736
- class utf16_output_iterator
737
- {
738
- public:
739
- typedef void difference_type;
740
- typedef void value_type;
741
- typedef boost::uint32_t* pointer;
742
- typedef boost::uint32_t& reference;
743
- typedef std::output_iterator_tag iterator_category;
744
-
745
- utf16_output_iterator(const BaseIterator& b)
746
- : m_position(b){}
747
- utf16_output_iterator(const utf16_output_iterator& that)
748
- : m_position(that.m_position){}
749
- utf16_output_iterator& operator=(const utf16_output_iterator& that)
750
- {
751
- m_position = that.m_position;
752
- return *this;
753
- }
754
- const utf16_output_iterator& operator*()const
755
- {
756
- return *this;
757
- }
758
- void operator=(boost::uint32_t val)const
759
- {
760
- push(val);
761
- }
762
- utf16_output_iterator& operator++()
763
- {
764
- return *this;
765
- }
766
- utf16_output_iterator& operator++(int)
767
- {
768
- return *this;
769
- }
770
- BaseIterator base()const
771
- {
772
- return m_position;
773
- }
774
- private:
775
- void push(boost::uint32_t v)const
776
- {
777
- if(v >= 0x10000u)
778
- {
779
- // begin by checking for a code point out of range:
780
- if(v > 0x10FFFFu)
781
- detail::invalid_utf32_code_point(v);
782
- // split into two surrogates:
783
- *m_position++ = static_cast<boost::uint16_t>(v >> 10) + detail::high_surrogate_base;
784
- *m_position++ = static_cast<boost::uint16_t>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
785
- }
786
- else
787
- {
788
- // 16-bit code point:
789
- // value must not be a surrogate:
790
- if(detail::is_surrogate(v))
791
- detail::invalid_utf32_code_point(v);
792
- *m_position++ = static_cast<boost::uint16_t>(v);
793
- }
794
- }
795
- mutable BaseIterator m_position;
796
- };
797
-
798
- template <class BaseIterator>
799
- class utf8_output_iterator
800
- {
801
- public:
802
- typedef void difference_type;
803
- typedef void value_type;
804
- typedef boost::uint32_t* pointer;
805
- typedef boost::uint32_t& reference;
806
- typedef std::output_iterator_tag iterator_category;
807
-
808
- utf8_output_iterator(const BaseIterator& b)
809
- : m_position(b){}
810
- utf8_output_iterator(const utf8_output_iterator& that)
811
- : m_position(that.m_position){}
812
- utf8_output_iterator& operator=(const utf8_output_iterator& that)
813
- {
814
- m_position = that.m_position;
815
- return *this;
816
- }
817
- const utf8_output_iterator& operator*()const
818
- {
819
- return *this;
820
- }
821
- void operator=(boost::uint32_t val)const
822
- {
823
- push(val);
824
- }
825
- utf8_output_iterator& operator++()
826
- {
827
- return *this;
828
- }
829
- utf8_output_iterator& operator++(int)
830
- {
831
- return *this;
832
- }
833
- BaseIterator base()const
834
- {
835
- return m_position;
836
- }
837
- private:
838
- void push(boost::uint32_t c)const
839
- {
840
- if(c > 0x10FFFFu)
841
- detail::invalid_utf32_code_point(c);
842
- if(c < 0x80u)
843
- {
844
- *m_position++ = static_cast<unsigned char>(c);
845
- }
846
- else if(c < 0x800u)
847
- {
848
- *m_position++ = static_cast<unsigned char>(0xC0u + (c >> 6));
849
- *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
850
- }
851
- else if(c < 0x10000u)
852
- {
853
- *m_position++ = static_cast<unsigned char>(0xE0u + (c >> 12));
854
- *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
855
- *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
856
- }
857
- else
858
- {
859
- *m_position++ = static_cast<unsigned char>(0xF0u + (c >> 18));
860
- *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
861
- *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
862
- *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
863
- }
864
- }
865
- mutable BaseIterator m_position;
866
- };
867
-
868
- } // namespace boost
869
-
870
- #endif // BOOST_REGEX_UNICODE_ITERATOR_HPP
871
-