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,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
-