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,1516 +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 icu.hpp
15
- * VERSION see <boost/version.hpp>
16
- * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
17
- */
18
-
19
- #ifndef BOOST_REGEX_ICU_V4_HPP
20
- #define BOOST_REGEX_ICU_V4_HPP
21
-
22
- #include <boost/config.hpp>
23
- #include <unicode/utypes.h>
24
- #include <unicode/uchar.h>
25
- #include <unicode/coll.h>
26
- #include <boost/regex.hpp>
27
- #include <boost/regex/v4/unicode_iterator.hpp>
28
- #include <boost/mpl/int_fwd.hpp>
29
- #include <boost/static_assert.hpp>
30
- #include <bitset>
31
-
32
- #ifdef BOOST_MSVC
33
- #pragma warning (push)
34
- #pragma warning (disable: 4251)
35
- #endif
36
-
37
- namespace boost {
38
-
39
- namespace BOOST_REGEX_DETAIL_NS {
40
-
41
- //
42
- // Implementation details:
43
- //
44
- class icu_regex_traits_implementation
45
- {
46
- typedef UChar32 char_type;
47
- typedef std::size_t size_type;
48
- typedef std::vector<char_type> string_type;
49
- typedef U_NAMESPACE_QUALIFIER Locale locale_type;
50
- typedef boost::uint_least32_t char_class_type;
51
- public:
52
- icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l)
53
- : m_locale(l)
54
- {
55
- UErrorCode success = U_ZERO_ERROR;
56
- m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
57
- if (U_SUCCESS(success) == 0)
58
- init_error();
59
- m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL);
60
- success = U_ZERO_ERROR;
61
- m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
62
- if (U_SUCCESS(success) == 0)
63
- init_error();
64
- m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY);
65
- }
66
- U_NAMESPACE_QUALIFIER Locale getloc()const
67
- {
68
- return m_locale;
69
- }
70
- string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const
71
- {
72
- // TODO make thread safe!!!! :
73
- typedef u32_to_u16_iterator<const char_type*, ::UChar> itt;
74
- itt i(p1), j(p2);
75
- #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
76
- std::vector< ::UChar> t(i, j);
77
- #else
78
- std::vector< ::UChar> t;
79
- while (i != j)
80
- t.push_back(*i++);
81
- #endif
82
- ::uint8_t result[100];
83
- ::int32_t len;
84
- if (!t.empty())
85
- len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), result, sizeof(result));
86
- else
87
- len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), result, sizeof(result));
88
- if (std::size_t(len) > sizeof(result))
89
- {
90
- scoped_array< ::uint8_t> presult(new ::uint8_t[len + 1]);
91
- if (!t.empty())
92
- len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), presult.get(), len + 1);
93
- else
94
- len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), presult.get(), len + 1);
95
- if ((0 == presult[len - 1]) && (len > 1))
96
- --len;
97
- #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
98
- return string_type(presult.get(), presult.get() + len);
99
- #else
100
- string_type sresult;
101
- ::uint8_t const* ia = presult.get();
102
- ::uint8_t const* ib = presult.get() + len;
103
- while (ia != ib)
104
- sresult.push_back(*ia++);
105
- return sresult;
106
- #endif
107
- }
108
- if ((0 == result[len - 1]) && (len > 1))
109
- --len;
110
- #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
111
- return string_type(result, result + len);
112
- #else
113
- string_type sresult;
114
- ::uint8_t const* ia = result;
115
- ::uint8_t const* ib = result + len;
116
- while (ia != ib)
117
- sresult.push_back(*ia++);
118
- return sresult;
119
- #endif
120
- }
121
- string_type transform(const char_type* p1, const char_type* p2) const
122
- {
123
- return do_transform(p1, p2, m_collator.get());
124
- }
125
- string_type transform_primary(const char_type* p1, const char_type* p2) const
126
- {
127
- return do_transform(p1, p2, m_primary_collator.get());
128
- }
129
- private:
130
- void init_error()
131
- {
132
- std::runtime_error e("Could not initialize ICU resources");
133
- boost::throw_exception(e);
134
- }
135
- U_NAMESPACE_QUALIFIER Locale m_locale; // The ICU locale that we're using
136
- boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator; // The full collation object
137
- boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator; // The primary collation object
138
- };
139
-
140
- inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc)
141
- {
142
- return boost::shared_ptr<icu_regex_traits_implementation>(new icu_regex_traits_implementation(loc));
143
- }
144
-
145
- }
146
-
147
- class icu_regex_traits
148
- {
149
- public:
150
- typedef UChar32 char_type;
151
- typedef std::size_t size_type;
152
- typedef std::vector<char_type> string_type;
153
- typedef U_NAMESPACE_QUALIFIER Locale locale_type;
154
- #ifdef BOOST_NO_INT64_T
155
- typedef std::bitset<64> char_class_type;
156
- #else
157
- typedef boost::uint64_t char_class_type;
158
- #endif
159
-
160
- struct boost_extensions_tag {};
161
-
162
- icu_regex_traits()
163
- : m_pimpl(BOOST_REGEX_DETAIL_NS::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale()))
164
- {
165
- }
166
- static size_type length(const char_type* p)
167
- {
168
- size_type result = 0;
169
- while (*p)
170
- {
171
- ++p;
172
- ++result;
173
- }
174
- return result;
175
- }
176
- ::boost::regex_constants::syntax_type syntax_type(char_type c)const
177
- {
178
- return ((c < 0x7f) && (c > 0)) ? BOOST_REGEX_DETAIL_NS::get_default_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
179
- }
180
- ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const
181
- {
182
- return ((c < 0x7f) && (c > 0)) ? BOOST_REGEX_DETAIL_NS::get_default_escape_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
183
- }
184
- char_type translate(char_type c) const
185
- {
186
- return c;
187
- }
188
- char_type translate_nocase(char_type c) const
189
- {
190
- return ::u_foldCase(c, U_FOLD_CASE_DEFAULT);
191
- }
192
- char_type translate(char_type c, bool icase) const
193
- {
194
- return icase ? translate_nocase(c) : translate(c);
195
- }
196
- char_type tolower(char_type c) const
197
- {
198
- return ::u_tolower(c);
199
- }
200
- char_type toupper(char_type c) const
201
- {
202
- return ::u_toupper(c);
203
- }
204
- string_type transform(const char_type* p1, const char_type* p2) const
205
- {
206
- return m_pimpl->transform(p1, p2);
207
- }
208
- string_type transform_primary(const char_type* p1, const char_type* p2) const
209
- {
210
- return m_pimpl->transform_primary(p1, p2);
211
- }
212
- char_class_type lookup_classname(const char_type* p1, const char_type* p2) const
213
- {
214
- static const char_class_type mask_blank = char_class_type(1) << offset_blank;
215
- static const char_class_type mask_space = char_class_type(1) << offset_space;
216
- static const char_class_type mask_xdigit = char_class_type(1) << offset_xdigit;
217
- static const char_class_type mask_underscore = char_class_type(1) << offset_underscore;
218
- static const char_class_type mask_unicode = char_class_type(1) << offset_unicode;
219
- static const char_class_type mask_any = char_class_type(1) << offset_any;
220
- static const char_class_type mask_ascii = char_class_type(1) << offset_ascii;
221
- static const char_class_type mask_horizontal = char_class_type(1) << offset_horizontal;
222
- static const char_class_type mask_vertical = char_class_type(1) << offset_vertical;
223
-
224
- static const char_class_type masks[] =
225
- {
226
- 0,
227
- U_GC_L_MASK | U_GC_ND_MASK,
228
- U_GC_L_MASK,
229
- mask_blank,
230
- U_GC_CC_MASK | U_GC_CF_MASK | U_GC_ZL_MASK | U_GC_ZP_MASK,
231
- U_GC_ND_MASK,
232
- U_GC_ND_MASK,
233
- (0x3FFFFFFFu) & ~(U_GC_CC_MASK | U_GC_CF_MASK | U_GC_CS_MASK | U_GC_CN_MASK | U_GC_Z_MASK),
234
- mask_horizontal,
235
- U_GC_LL_MASK,
236
- U_GC_LL_MASK,
237
- ~(U_GC_C_MASK),
238
- U_GC_P_MASK,
239
- char_class_type(U_GC_Z_MASK) | mask_space,
240
- char_class_type(U_GC_Z_MASK) | mask_space,
241
- U_GC_LU_MASK,
242
- mask_unicode,
243
- U_GC_LU_MASK,
244
- mask_vertical,
245
- char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
246
- char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
247
- char_class_type(U_GC_ND_MASK) | mask_xdigit,
248
- };
249
-
250
- int idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(p1, p2);
251
- if (idx >= 0)
252
- return masks[idx + 1];
253
- char_class_type result = lookup_icu_mask(p1, p2);
254
- if (result != 0)
255
- return result;
256
-
257
- if (idx < 0)
258
- {
259
- string_type s(p1, p2);
260
- string_type::size_type i = 0;
261
- while (i < s.size())
262
- {
263
- s[i] = static_cast<char>((::u_tolower)(s[i]));
264
- if (::u_isspace(s[i]) || (s[i] == '-') || (s[i] == '_'))
265
- s.erase(s.begin() + i, s.begin() + i + 1);
266
- else
267
- {
268
- s[i] = static_cast<char>((::u_tolower)(s[i]));
269
- ++i;
270
- }
271
- }
272
- if (!s.empty())
273
- idx = ::boost::BOOST_REGEX_DETAIL_NS::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
274
- if (idx >= 0)
275
- return masks[idx + 1];
276
- if (!s.empty())
277
- result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size());
278
- if (result != 0)
279
- return result;
280
- }
281
- BOOST_ASSERT(std::size_t(idx + 1) < sizeof(masks) / sizeof(masks[0]));
282
- return masks[idx + 1];
283
- }
284
- string_type lookup_collatename(const char_type* p1, const char_type* p2) const
285
- {
286
- string_type result;
287
- #ifdef BOOST_NO_CXX98_BINDERS
288
- if (std::find_if(p1, p2, std::bind(std::greater< ::UChar32>(), std::placeholders::_1, 0x7f)) == p2)
289
- #else
290
- if (std::find_if(p1, p2, std::bind2nd(std::greater< ::UChar32>(), 0x7f)) == p2)
291
- #endif
292
- {
293
- #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
294
- std::string s(p1, p2);
295
- #else
296
- std::string s;
297
- const char_type* p3 = p1;
298
- while (p3 != p2)
299
- s.append(1, *p3++);
300
- #endif
301
- // Try Unicode name:
302
- UErrorCode err = U_ZERO_ERROR;
303
- UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, s.c_str(), &err);
304
- if (U_SUCCESS(err))
305
- {
306
- result.push_back(c);
307
- return result;
308
- }
309
- // Try Unicode-extended name:
310
- err = U_ZERO_ERROR;
311
- c = ::u_charFromName(U_EXTENDED_CHAR_NAME, s.c_str(), &err);
312
- if (U_SUCCESS(err))
313
- {
314
- result.push_back(c);
315
- return result;
316
- }
317
- // try POSIX name:
318
- s = ::boost::BOOST_REGEX_DETAIL_NS::lookup_default_collate_name(s);
319
- #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
320
- result.assign(s.begin(), s.end());
321
- #else
322
- result.clear();
323
- std::string::const_iterator si, sj;
324
- si = s.begin();
325
- sj = s.end();
326
- while (si != sj)
327
- result.push_back(*si++);
328
- #endif
329
- }
330
- if (result.empty() && (p2 - p1 == 1))
331
- result.push_back(*p1);
332
- return result;
333
- }
334
- bool isctype(char_type c, char_class_type f) const
335
- {
336
- static const char_class_type mask_blank = char_class_type(1) << offset_blank;
337
- static const char_class_type mask_space = char_class_type(1) << offset_space;
338
- static const char_class_type mask_xdigit = char_class_type(1) << offset_xdigit;
339
- static const char_class_type mask_underscore = char_class_type(1) << offset_underscore;
340
- static const char_class_type mask_unicode = char_class_type(1) << offset_unicode;
341
- static const char_class_type mask_any = char_class_type(1) << offset_any;
342
- static const char_class_type mask_ascii = char_class_type(1) << offset_ascii;
343
- static const char_class_type mask_horizontal = char_class_type(1) << offset_horizontal;
344
- static const char_class_type mask_vertical = char_class_type(1) << offset_vertical;
345
-
346
- // check for standard catagories first:
347
- char_class_type m = char_class_type(static_cast<char_class_type>(1) << u_charType(c));
348
- if ((m & f) != 0)
349
- return true;
350
- // now check for special cases:
351
- if (((f & mask_blank) != 0) && u_isblank(c))
352
- return true;
353
- if (((f & mask_space) != 0) && u_isspace(c))
354
- return true;
355
- if (((f & mask_xdigit) != 0) && (u_digit(c, 16) >= 0))
356
- return true;
357
- if (((f & mask_unicode) != 0) && (c >= 0x100))
358
- return true;
359
- if (((f & mask_underscore) != 0) && (c == '_'))
360
- return true;
361
- if (((f & mask_any) != 0) && (c <= 0x10FFFF))
362
- return true;
363
- if (((f & mask_ascii) != 0) && (c <= 0x7F))
364
- return true;
365
- if (((f & mask_vertical) != 0) && (::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) || (c == static_cast<char_type>('\v')) || (m == U_GC_ZL_MASK) || (m == U_GC_ZP_MASK)))
366
- return true;
367
- if (((f & mask_horizontal) != 0) && !::boost::BOOST_REGEX_DETAIL_NS::is_separator(c) && u_isspace(c) && (c != static_cast<char_type>('\v')))
368
- return true;
369
- return false;
370
- }
371
- boost::intmax_t toi(const char_type*& p1, const char_type* p2, int radix)const
372
- {
373
- return BOOST_REGEX_DETAIL_NS::global_toi(p1, p2, radix, *this);
374
- }
375
- int value(char_type c, int radix)const
376
- {
377
- return u_digit(c, static_cast< ::int8_t>(radix));
378
- }
379
- locale_type imbue(locale_type l)
380
- {
381
- locale_type result(m_pimpl->getloc());
382
- m_pimpl = BOOST_REGEX_DETAIL_NS::get_icu_regex_traits_implementation(l);
383
- return result;
384
- }
385
- locale_type getloc()const
386
- {
387
- return locale_type();
388
- }
389
- std::string error_string(::boost::regex_constants::error_type n) const
390
- {
391
- return BOOST_REGEX_DETAIL_NS::get_default_error_string(n);
392
- }
393
- private:
394
- icu_regex_traits(const icu_regex_traits&);
395
- icu_regex_traits& operator=(const icu_regex_traits&);
396
-
397
- //
398
- // define the bitmasks offsets we need for additional character properties:
399
- //
400
- enum {
401
- offset_blank = U_CHAR_CATEGORY_COUNT,
402
- offset_space = U_CHAR_CATEGORY_COUNT + 1,
403
- offset_xdigit = U_CHAR_CATEGORY_COUNT + 2,
404
- offset_underscore = U_CHAR_CATEGORY_COUNT + 3,
405
- offset_unicode = U_CHAR_CATEGORY_COUNT + 4,
406
- offset_any = U_CHAR_CATEGORY_COUNT + 5,
407
- offset_ascii = U_CHAR_CATEGORY_COUNT + 6,
408
- offset_horizontal = U_CHAR_CATEGORY_COUNT + 7,
409
- offset_vertical = U_CHAR_CATEGORY_COUNT + 8
410
- };
411
-
412
- static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2)
413
- {
414
- static const char_class_type mask_blank = char_class_type(1) << offset_blank;
415
- static const char_class_type mask_space = char_class_type(1) << offset_space;
416
- static const char_class_type mask_xdigit = char_class_type(1) << offset_xdigit;
417
- static const char_class_type mask_underscore = char_class_type(1) << offset_underscore;
418
- static const char_class_type mask_unicode = char_class_type(1) << offset_unicode;
419
- static const char_class_type mask_any = char_class_type(1) << offset_any;
420
- static const char_class_type mask_ascii = char_class_type(1) << offset_ascii;
421
- static const char_class_type mask_horizontal = char_class_type(1) << offset_horizontal;
422
- static const char_class_type mask_vertical = char_class_type(1) << offset_vertical;
423
-
424
- static const ::UChar32 prop_name_table[] = {
425
- /* any */ 'a', 'n', 'y',
426
- /* ascii */ 'a', 's', 'c', 'i', 'i',
427
- /* assigned */ 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
428
- /* c* */ 'c', '*',
429
- /* cc */ 'c', 'c',
430
- /* cf */ 'c', 'f',
431
- /* closepunctuation */ 'c', 'l', 'o', 's', 'e', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
432
- /* cn */ 'c', 'n',
433
- /* co */ 'c', 'o',
434
- /* connectorpunctuation */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
435
- /* control */ 'c', 'o', 'n', 't', 'r', 'o', 'l',
436
- /* cs */ 'c', 's',
437
- /* currencysymbol */ 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', 's', 'y', 'm', 'b', 'o', 'l',
438
- /* dashpunctuation */ 'd', 'a', 's', 'h', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
439
- /* decimaldigitnumber */ 'd', 'e', 'c', 'i', 'm', 'a', 'l', 'd', 'i', 'g', 'i', 't', 'n', 'u', 'm', 'b', 'e', 'r',
440
- /* enclosingmark */ 'e', 'n', 'c', 'l', 'o', 's', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
441
- /* finalpunctuation */ 'f', 'i', 'n', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
442
- /* format */ 'f', 'o', 'r', 'm', 'a', 't',
443
- /* initialpunctuation */ 'i', 'n', 'i', 't', 'i', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
444
- /* l* */ 'l', '*',
445
- /* letter */ 'l', 'e', 't', 't', 'e', 'r',
446
- /* letternumber */ 'l', 'e', 't', 't', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
447
- /* lineseparator */ 'l', 'i', 'n', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
448
- /* ll */ 'l', 'l',
449
- /* lm */ 'l', 'm',
450
- /* lo */ 'l', 'o',
451
- /* lowercaseletter */ 'l', 'o', 'w', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
452
- /* lt */ 'l', 't',
453
- /* lu */ 'l', 'u',
454
- /* m* */ 'm', '*',
455
- /* mark */ 'm', 'a', 'r', 'k',
456
- /* mathsymbol */ 'm', 'a', 't', 'h', 's', 'y', 'm', 'b', 'o', 'l',
457
- /* mc */ 'm', 'c',
458
- /* me */ 'm', 'e',
459
- /* mn */ 'm', 'n',
460
- /* modifierletter */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
461
- /* modifiersymbol */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
462
- /* n* */ 'n', '*',
463
- /* nd */ 'n', 'd',
464
- /* nl */ 'n', 'l',
465
- /* no */ 'n', 'o',
466
- /* nonspacingmark */ 'n', 'o', 'n', 's', 'p', 'a', 'c', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
467
- /* notassigned */ 'n', 'o', 't', 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
468
- /* number */ 'n', 'u', 'm', 'b', 'e', 'r',
469
- /* openpunctuation */ 'o', 'p', 'e', 'n', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
470
- /* other */ 'o', 't', 'h', 'e', 'r',
471
- /* otherletter */ 'o', 't', 'h', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
472
- /* othernumber */ 'o', 't', 'h', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
473
- /* otherpunctuation */ 'o', 't', 'h', 'e', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
474
- /* othersymbol */ 'o', 't', 'h', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
475
- /* p* */ 'p', '*',
476
- /* paragraphseparator */ 'p', 'a', 'r', 'a', 'g', 'r', 'a', 'p', 'h', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
477
- /* pc */ 'p', 'c',
478
- /* pd */ 'p', 'd',
479
- /* pe */ 'p', 'e',
480
- /* pf */ 'p', 'f',
481
- /* pi */ 'p', 'i',
482
- /* po */ 'p', 'o',
483
- /* privateuse */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'u', 's', 'e',
484
- /* ps */ 'p', 's',
485
- /* punctuation */ 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
486
- /* s* */ 's', '*',
487
- /* sc */ 's', 'c',
488
- /* separator */ 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
489
- /* sk */ 's', 'k',
490
- /* sm */ 's', 'm',
491
- /* so */ 's', 'o',
492
- /* spaceseparator */ 's', 'p', 'a', 'c', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
493
- /* spacingcombiningmark */ 's', 'p', 'a', 'c', 'i', 'n', 'g', 'c', 'o', 'm', 'b', 'i', 'n', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
494
- /* surrogate */ 's', 'u', 'r', 'r', 'o', 'g', 'a', 't', 'e',
495
- /* symbol */ 's', 'y', 'm', 'b', 'o', 'l',
496
- /* titlecase */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e',
497
- /* titlecaseletter */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
498
- /* uppercaseletter */ 'u', 'p', 'p', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
499
- /* z* */ 'z', '*',
500
- /* zl */ 'z', 'l',
501
- /* zp */ 'z', 'p',
502
- /* zs */ 'z', 's',
503
- };
504
-
505
- static const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32> range_data[] = {
506
- { prop_name_table + 0, prop_name_table + 3, }, // any
507
- { prop_name_table + 3, prop_name_table + 8, }, // ascii
508
- { prop_name_table + 8, prop_name_table + 16, }, // assigned
509
- { prop_name_table + 16, prop_name_table + 18, }, // c*
510
- { prop_name_table + 18, prop_name_table + 20, }, // cc
511
- { prop_name_table + 20, prop_name_table + 22, }, // cf
512
- { prop_name_table + 22, prop_name_table + 38, }, // closepunctuation
513
- { prop_name_table + 38, prop_name_table + 40, }, // cn
514
- { prop_name_table + 40, prop_name_table + 42, }, // co
515
- { prop_name_table + 42, prop_name_table + 62, }, // connectorpunctuation
516
- { prop_name_table + 62, prop_name_table + 69, }, // control
517
- { prop_name_table + 69, prop_name_table + 71, }, // cs
518
- { prop_name_table + 71, prop_name_table + 85, }, // currencysymbol
519
- { prop_name_table + 85, prop_name_table + 100, }, // dashpunctuation
520
- { prop_name_table + 100, prop_name_table + 118, }, // decimaldigitnumber
521
- { prop_name_table + 118, prop_name_table + 131, }, // enclosingmark
522
- { prop_name_table + 131, prop_name_table + 147, }, // finalpunctuation
523
- { prop_name_table + 147, prop_name_table + 153, }, // format
524
- { prop_name_table + 153, prop_name_table + 171, }, // initialpunctuation
525
- { prop_name_table + 171, prop_name_table + 173, }, // l*
526
- { prop_name_table + 173, prop_name_table + 179, }, // letter
527
- { prop_name_table + 179, prop_name_table + 191, }, // letternumber
528
- { prop_name_table + 191, prop_name_table + 204, }, // lineseparator
529
- { prop_name_table + 204, prop_name_table + 206, }, // ll
530
- { prop_name_table + 206, prop_name_table + 208, }, // lm
531
- { prop_name_table + 208, prop_name_table + 210, }, // lo
532
- { prop_name_table + 210, prop_name_table + 225, }, // lowercaseletter
533
- { prop_name_table + 225, prop_name_table + 227, }, // lt
534
- { prop_name_table + 227, prop_name_table + 229, }, // lu
535
- { prop_name_table + 229, prop_name_table + 231, }, // m*
536
- { prop_name_table + 231, prop_name_table + 235, }, // mark
537
- { prop_name_table + 235, prop_name_table + 245, }, // mathsymbol
538
- { prop_name_table + 245, prop_name_table + 247, }, // mc
539
- { prop_name_table + 247, prop_name_table + 249, }, // me
540
- { prop_name_table + 249, prop_name_table + 251, }, // mn
541
- { prop_name_table + 251, prop_name_table + 265, }, // modifierletter
542
- { prop_name_table + 265, prop_name_table + 279, }, // modifiersymbol
543
- { prop_name_table + 279, prop_name_table + 281, }, // n*
544
- { prop_name_table + 281, prop_name_table + 283, }, // nd
545
- { prop_name_table + 283, prop_name_table + 285, }, // nl
546
- { prop_name_table + 285, prop_name_table + 287, }, // no
547
- { prop_name_table + 287, prop_name_table + 301, }, // nonspacingmark
548
- { prop_name_table + 301, prop_name_table + 312, }, // notassigned
549
- { prop_name_table + 312, prop_name_table + 318, }, // number
550
- { prop_name_table + 318, prop_name_table + 333, }, // openpunctuation
551
- { prop_name_table + 333, prop_name_table + 338, }, // other
552
- { prop_name_table + 338, prop_name_table + 349, }, // otherletter
553
- { prop_name_table + 349, prop_name_table + 360, }, // othernumber
554
- { prop_name_table + 360, prop_name_table + 376, }, // otherpunctuation
555
- { prop_name_table + 376, prop_name_table + 387, }, // othersymbol
556
- { prop_name_table + 387, prop_name_table + 389, }, // p*
557
- { prop_name_table + 389, prop_name_table + 407, }, // paragraphseparator
558
- { prop_name_table + 407, prop_name_table + 409, }, // pc
559
- { prop_name_table + 409, prop_name_table + 411, }, // pd
560
- { prop_name_table + 411, prop_name_table + 413, }, // pe
561
- { prop_name_table + 413, prop_name_table + 415, }, // pf
562
- { prop_name_table + 415, prop_name_table + 417, }, // pi
563
- { prop_name_table + 417, prop_name_table + 419, }, // po
564
- { prop_name_table + 419, prop_name_table + 429, }, // privateuse
565
- { prop_name_table + 429, prop_name_table + 431, }, // ps
566
- { prop_name_table + 431, prop_name_table + 442, }, // punctuation
567
- { prop_name_table + 442, prop_name_table + 444, }, // s*
568
- { prop_name_table + 444, prop_name_table + 446, }, // sc
569
- { prop_name_table + 446, prop_name_table + 455, }, // separator
570
- { prop_name_table + 455, prop_name_table + 457, }, // sk
571
- { prop_name_table + 457, prop_name_table + 459, }, // sm
572
- { prop_name_table + 459, prop_name_table + 461, }, // so
573
- { prop_name_table + 461, prop_name_table + 475, }, // spaceseparator
574
- { prop_name_table + 475, prop_name_table + 495, }, // spacingcombiningmark
575
- { prop_name_table + 495, prop_name_table + 504, }, // surrogate
576
- { prop_name_table + 504, prop_name_table + 510, }, // symbol
577
- { prop_name_table + 510, prop_name_table + 519, }, // titlecase
578
- { prop_name_table + 519, prop_name_table + 534, }, // titlecaseletter
579
- { prop_name_table + 534, prop_name_table + 549, }, // uppercaseletter
580
- { prop_name_table + 549, prop_name_table + 551, }, // z*
581
- { prop_name_table + 551, prop_name_table + 553, }, // zl
582
- { prop_name_table + 553, prop_name_table + 555, }, // zp
583
- { prop_name_table + 555, prop_name_table + 557, }, // zs
584
- };
585
-
586
- static const icu_regex_traits::char_class_type icu_class_map[] = {
587
- mask_any, // any
588
- mask_ascii, // ascii
589
- (0x3FFFFFFFu) & ~(U_GC_CN_MASK), // assigned
590
- U_GC_C_MASK, // c*
591
- U_GC_CC_MASK, // cc
592
- U_GC_CF_MASK, // cf
593
- U_GC_PE_MASK, // closepunctuation
594
- U_GC_CN_MASK, // cn
595
- U_GC_CO_MASK, // co
596
- U_GC_PC_MASK, // connectorpunctuation
597
- U_GC_CC_MASK, // control
598
- U_GC_CS_MASK, // cs
599
- U_GC_SC_MASK, // currencysymbol
600
- U_GC_PD_MASK, // dashpunctuation
601
- U_GC_ND_MASK, // decimaldigitnumber
602
- U_GC_ME_MASK, // enclosingmark
603
- U_GC_PF_MASK, // finalpunctuation
604
- U_GC_CF_MASK, // format
605
- U_GC_PI_MASK, // initialpunctuation
606
- U_GC_L_MASK, // l*
607
- U_GC_L_MASK, // letter
608
- U_GC_NL_MASK, // letternumber
609
- U_GC_ZL_MASK, // lineseparator
610
- U_GC_LL_MASK, // ll
611
- U_GC_LM_MASK, // lm
612
- U_GC_LO_MASK, // lo
613
- U_GC_LL_MASK, // lowercaseletter
614
- U_GC_LT_MASK, // lt
615
- U_GC_LU_MASK, // lu
616
- U_GC_M_MASK, // m*
617
- U_GC_M_MASK, // mark
618
- U_GC_SM_MASK, // mathsymbol
619
- U_GC_MC_MASK, // mc
620
- U_GC_ME_MASK, // me
621
- U_GC_MN_MASK, // mn
622
- U_GC_LM_MASK, // modifierletter
623
- U_GC_SK_MASK, // modifiersymbol
624
- U_GC_N_MASK, // n*
625
- U_GC_ND_MASK, // nd
626
- U_GC_NL_MASK, // nl
627
- U_GC_NO_MASK, // no
628
- U_GC_MN_MASK, // nonspacingmark
629
- U_GC_CN_MASK, // notassigned
630
- U_GC_N_MASK, // number
631
- U_GC_PS_MASK, // openpunctuation
632
- U_GC_C_MASK, // other
633
- U_GC_LO_MASK, // otherletter
634
- U_GC_NO_MASK, // othernumber
635
- U_GC_PO_MASK, // otherpunctuation
636
- U_GC_SO_MASK, // othersymbol
637
- U_GC_P_MASK, // p*
638
- U_GC_ZP_MASK, // paragraphseparator
639
- U_GC_PC_MASK, // pc
640
- U_GC_PD_MASK, // pd
641
- U_GC_PE_MASK, // pe
642
- U_GC_PF_MASK, // pf
643
- U_GC_PI_MASK, // pi
644
- U_GC_PO_MASK, // po
645
- U_GC_CO_MASK, // privateuse
646
- U_GC_PS_MASK, // ps
647
- U_GC_P_MASK, // punctuation
648
- U_GC_S_MASK, // s*
649
- U_GC_SC_MASK, // sc
650
- U_GC_Z_MASK, // separator
651
- U_GC_SK_MASK, // sk
652
- U_GC_SM_MASK, // sm
653
- U_GC_SO_MASK, // so
654
- U_GC_ZS_MASK, // spaceseparator
655
- U_GC_MC_MASK, // spacingcombiningmark
656
- U_GC_CS_MASK, // surrogate
657
- U_GC_S_MASK, // symbol
658
- U_GC_LT_MASK, // titlecase
659
- U_GC_LT_MASK, // titlecaseletter
660
- U_GC_LU_MASK, // uppercaseletter
661
- U_GC_Z_MASK, // z*
662
- U_GC_ZL_MASK, // zl
663
- U_GC_ZP_MASK, // zp
664
- U_GC_ZS_MASK, // zs
665
- };
666
-
667
-
668
- const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* ranges_begin = range_data;
669
- const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* ranges_end = range_data + (sizeof(range_data) / sizeof(range_data[0]));
670
-
671
- BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32> t = { p1, p2, };
672
- const BOOST_REGEX_DETAIL_NS::character_pointer_range< ::UChar32>* p = std::lower_bound(ranges_begin, ranges_end, t);
673
- if ((p != ranges_end) && (t == *p))
674
- return icu_class_map[p - ranges_begin];
675
- return 0;
676
- }
677
-
678
- boost::shared_ptr< ::boost::BOOST_REGEX_DETAIL_NS::icu_regex_traits_implementation> m_pimpl;
679
- };
680
-
681
- } // namespace boost
682
-
683
- namespace boost {
684
-
685
- // types:
686
- typedef basic_regex< ::UChar32, icu_regex_traits> u32regex;
687
- typedef match_results<const ::UChar32*> u32match;
688
- typedef match_results<const ::UChar*> u16match;
689
-
690
- //
691
- // Construction of 32-bit regex types from UTF-8 and UTF-16 primitives:
692
- //
693
- namespace BOOST_REGEX_DETAIL_NS {
694
-
695
- #if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
696
- template <class InputIterator>
697
- inline u32regex do_make_u32regex(InputIterator i,
698
- InputIterator j,
699
- boost::regex_constants::syntax_option_type opt,
700
- const boost::mpl::int_<1>*)
701
- {
702
- typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
703
- return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
704
- }
705
-
706
- template <class InputIterator>
707
- inline u32regex do_make_u32regex(InputIterator i,
708
- InputIterator j,
709
- boost::regex_constants::syntax_option_type opt,
710
- const boost::mpl::int_<2>*)
711
- {
712
- typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
713
- return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
714
- }
715
-
716
- template <class InputIterator>
717
- inline u32regex do_make_u32regex(InputIterator i,
718
- InputIterator j,
719
- boost::regex_constants::syntax_option_type opt,
720
- const boost::mpl::int_<4>*)
721
- {
722
- return u32regex(i, j, opt);
723
- }
724
- #else
725
- template <class InputIterator>
726
- inline u32regex do_make_u32regex(InputIterator i,
727
- InputIterator j,
728
- boost::regex_constants::syntax_option_type opt,
729
- const boost::mpl::int_<1>*)
730
- {
731
- typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
732
- typedef std::vector<UChar32> vector_type;
733
- vector_type v;
734
- conv_type a(i, i, j), b(j, i, j);
735
- while (a != b)
736
- {
737
- v.push_back(*a);
738
- ++a;
739
- }
740
- if (v.size())
741
- return u32regex(&*v.begin(), v.size(), opt);
742
- return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
743
- }
744
-
745
- template <class InputIterator>
746
- inline u32regex do_make_u32regex(InputIterator i,
747
- InputIterator j,
748
- boost::regex_constants::syntax_option_type opt,
749
- const boost::mpl::int_<2>*)
750
- {
751
- typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
752
- typedef std::vector<UChar32> vector_type;
753
- vector_type v;
754
- conv_type a(i, i, j), b(j, i, j);
755
- while (a != b)
756
- {
757
- v.push_back(*a);
758
- ++a;
759
- }
760
- if (v.size())
761
- return u32regex(&*v.begin(), v.size(), opt);
762
- return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
763
- }
764
-
765
- template <class InputIterator>
766
- inline u32regex do_make_u32regex(InputIterator i,
767
- InputIterator j,
768
- boost::regex_constants::syntax_option_type opt,
769
- const boost::mpl::int_<4>*)
770
- {
771
- typedef std::vector<UChar32> vector_type;
772
- vector_type v;
773
- while (i != j)
774
- {
775
- v.push_back((UChar32)(*i));
776
- ++i;
777
- }
778
- if (v.size())
779
- return u32regex(&*v.begin(), v.size(), opt);
780
- return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
781
- }
782
- #endif
783
- }
784
-
785
- // BOOST_REGEX_UCHAR_IS_WCHAR_T
786
- //
787
- // Source inspection of unicode/umachine.h in ICU version 59 indicates that:
788
- //
789
- // On version 59, UChar is always char16_t in C++ mode (and uint16_t in C mode)
790
- //
791
- // On earlier versions, the logic is
792
- //
793
- // #if U_SIZEOF_WCHAR_T==2
794
- // typedef wchar_t OldUChar;
795
- // #elif defined(__CHAR16_TYPE__)
796
- // typedef __CHAR16_TYPE__ OldUChar;
797
- // #else
798
- // typedef uint16_t OldUChar;
799
- // #endif
800
- //
801
- // That is, UChar is wchar_t only on versions below 59, when U_SIZEOF_WCHAR_T==2
802
- //
803
- // Hence,
804
-
805
- #define BOOST_REGEX_UCHAR_IS_WCHAR_T (U_ICU_VERSION_MAJOR_NUM < 59 && U_SIZEOF_WCHAR_T == 2)
806
-
807
- #if BOOST_REGEX_UCHAR_IS_WCHAR_T
808
- BOOST_STATIC_ASSERT((boost::is_same<UChar, wchar_t>::value));
809
- #else
810
- BOOST_STATIC_ASSERT(!(boost::is_same<UChar, wchar_t>::value));
811
- #endif
812
-
813
- //
814
- // Construction from an iterator pair:
815
- //
816
- template <class InputIterator>
817
- inline u32regex make_u32regex(InputIterator i,
818
- InputIterator j,
819
- boost::regex_constants::syntax_option_type opt)
820
- {
821
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(i, j, opt, static_cast<boost::mpl::int_<sizeof(*i)> const*>(0));
822
- }
823
- //
824
- // construction from UTF-8 nul-terminated strings:
825
- //
826
- inline u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
827
- {
828
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::strlen(p), opt, static_cast<boost::mpl::int_<1> const*>(0));
829
- }
830
- inline u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
831
- {
832
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::strlen(reinterpret_cast<const char*>(p)), opt, static_cast<boost::mpl::int_<1> const*>(0));
833
- }
834
- //
835
- // construction from UTF-16 nul-terminated strings:
836
- //
837
- #ifndef BOOST_NO_WREGEX
838
- inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
839
- {
840
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<boost::mpl::int_<sizeof(wchar_t)> const*>(0));
841
- }
842
- #endif
843
- #if !BOOST_REGEX_UCHAR_IS_WCHAR_T
844
- inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
845
- {
846
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<boost::mpl::int_<2> const*>(0));
847
- }
848
- #endif
849
- //
850
- // construction from basic_string class-template:
851
- //
852
- template<class C, class T, class A>
853
- inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
854
- {
855
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(s.begin(), s.end(), opt, static_cast<boost::mpl::int_<sizeof(C)> const*>(0));
856
- }
857
- //
858
- // Construction from ICU string type:
859
- //
860
- inline u32regex make_u32regex(const U_NAMESPACE_QUALIFIER UnicodeString& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
861
- {
862
- return BOOST_REGEX_DETAIL_NS::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast<boost::mpl::int_<2> const*>(0));
863
- }
864
-
865
- //
866
- // regex_match overloads that widen the character type as appropriate:
867
- //
868
- namespace BOOST_REGEX_DETAIL_NS {
869
- template<class MR1, class MR2, class NSubs>
870
- void copy_results(MR1& out, MR2 const& in, NSubs named_subs)
871
- {
872
- // copy results from an adapted MR2 match_results:
873
- out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base());
874
- out.set_base(in.base().base());
875
- out.set_named_subs(named_subs);
876
- for (int i = 0; i < (int)in.size(); ++i)
877
- {
878
- if (in[i].matched || !i)
879
- {
880
- out.set_first(in[i].first.base(), i);
881
- out.set_second(in[i].second.base(), i, in[i].matched);
882
- }
883
- }
884
- #ifdef BOOST_REGEX_MATCH_EXTRA
885
- // Copy full capture info as well:
886
- for (int i = 0; i < (int)in.size(); ++i)
887
- {
888
- if (in[i].captures().size())
889
- {
890
- out[i].get_captures().assign(in[i].captures().size(), typename MR1::value_type());
891
- for (int j = 0; j < (int)out[i].captures().size(); ++j)
892
- {
893
- out[i].get_captures()[j].first = in[i].captures()[j].first.base();
894
- out[i].get_captures()[j].second = in[i].captures()[j].second.base();
895
- out[i].get_captures()[j].matched = in[i].captures()[j].matched;
896
- }
897
- }
898
- }
899
- #endif
900
- }
901
-
902
- template <class BidiIterator, class Allocator>
903
- inline bool do_regex_match(BidiIterator first, BidiIterator last,
904
- match_results<BidiIterator, Allocator>& m,
905
- const u32regex& e,
906
- match_flag_type flags,
907
- boost::mpl::int_<4> const*)
908
- {
909
- return ::boost::regex_match(first, last, m, e, flags);
910
- }
911
- template <class BidiIterator, class Allocator>
912
- bool do_regex_match(BidiIterator first, BidiIterator last,
913
- match_results<BidiIterator, Allocator>& m,
914
- const u32regex& e,
915
- match_flag_type flags,
916
- boost::mpl::int_<2> const*)
917
- {
918
- typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
919
- typedef match_results<conv_type> match_type;
920
- //typedef typename match_type::allocator_type alloc_type;
921
- match_type what;
922
- bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
923
- // copy results across to m:
924
- if (result) copy_results(m, what, e.get_named_subs());
925
- return result;
926
- }
927
- template <class BidiIterator, class Allocator>
928
- bool do_regex_match(BidiIterator first, BidiIterator last,
929
- match_results<BidiIterator, Allocator>& m,
930
- const u32regex& e,
931
- match_flag_type flags,
932
- boost::mpl::int_<1> const*)
933
- {
934
- typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
935
- typedef match_results<conv_type> match_type;
936
- //typedef typename match_type::allocator_type alloc_type;
937
- match_type what;
938
- bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
939
- // copy results across to m:
940
- if (result) copy_results(m, what, e.get_named_subs());
941
- return result;
942
- }
943
- } // namespace BOOST_REGEX_DETAIL_NS
944
-
945
- template <class BidiIterator, class Allocator>
946
- inline bool u32regex_match(BidiIterator first, BidiIterator last,
947
- match_results<BidiIterator, Allocator>& m,
948
- const u32regex& e,
949
- match_flag_type flags = match_default)
950
- {
951
- return BOOST_REGEX_DETAIL_NS::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
952
- }
953
- inline bool u32regex_match(const UChar* p,
954
- match_results<const UChar*>& m,
955
- const u32regex& e,
956
- match_flag_type flags = match_default)
957
- {
958
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
959
- }
960
- #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
961
- inline bool u32regex_match(const wchar_t* p,
962
- match_results<const wchar_t*>& m,
963
- const u32regex& e,
964
- match_flag_type flags = match_default)
965
- {
966
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
967
- }
968
- #endif
969
- inline bool u32regex_match(const char* p,
970
- match_results<const char*>& m,
971
- const u32regex& e,
972
- match_flag_type flags = match_default)
973
- {
974
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
975
- }
976
- inline bool u32regex_match(const unsigned char* p,
977
- match_results<const unsigned char*>& m,
978
- const u32regex& e,
979
- match_flag_type flags = match_default)
980
- {
981
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
982
- }
983
- inline bool u32regex_match(const std::string& s,
984
- match_results<std::string::const_iterator>& m,
985
- const u32regex& e,
986
- match_flag_type flags = match_default)
987
- {
988
- return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
989
- }
990
- #ifndef BOOST_NO_STD_WSTRING
991
- inline bool u32regex_match(const std::wstring& s,
992
- match_results<std::wstring::const_iterator>& m,
993
- const u32regex& e,
994
- match_flag_type flags = match_default)
995
- {
996
- return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
997
- }
998
- #endif
999
- inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1000
- match_results<const UChar*>& m,
1001
- const u32regex& e,
1002
- match_flag_type flags = match_default)
1003
- {
1004
- return BOOST_REGEX_DETAIL_NS::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<2> const*>(0));
1005
- }
1006
- //
1007
- // regex_match overloads that do not return what matched:
1008
- //
1009
- template <class BidiIterator>
1010
- inline bool u32regex_match(BidiIterator first, BidiIterator last,
1011
- const u32regex& e,
1012
- match_flag_type flags = match_default)
1013
- {
1014
- match_results<BidiIterator> m;
1015
- return BOOST_REGEX_DETAIL_NS::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
1016
- }
1017
- inline bool u32regex_match(const UChar* p,
1018
- const u32regex& e,
1019
- match_flag_type flags = match_default)
1020
- {
1021
- match_results<const UChar*> m;
1022
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
1023
- }
1024
- #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
1025
- inline bool u32regex_match(const wchar_t* p,
1026
- const u32regex& e,
1027
- match_flag_type flags = match_default)
1028
- {
1029
- match_results<const wchar_t*> m;
1030
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
1031
- }
1032
- #endif
1033
- inline bool u32regex_match(const char* p,
1034
- const u32regex& e,
1035
- match_flag_type flags = match_default)
1036
- {
1037
- match_results<const char*> m;
1038
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
1039
- }
1040
- inline bool u32regex_match(const unsigned char* p,
1041
- const u32regex& e,
1042
- match_flag_type flags = match_default)
1043
- {
1044
- match_results<const unsigned char*> m;
1045
- return BOOST_REGEX_DETAIL_NS::do_regex_match(p, p + std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
1046
- }
1047
- inline bool u32regex_match(const std::string& s,
1048
- const u32regex& e,
1049
- match_flag_type flags = match_default)
1050
- {
1051
- match_results<std::string::const_iterator> m;
1052
- return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
1053
- }
1054
- #ifndef BOOST_NO_STD_WSTRING
1055
- inline bool u32regex_match(const std::wstring& s,
1056
- const u32regex& e,
1057
- match_flag_type flags = match_default)
1058
- {
1059
- match_results<std::wstring::const_iterator> m;
1060
- return BOOST_REGEX_DETAIL_NS::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
1061
- }
1062
- #endif
1063
- inline bool u32regex_match(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1064
- const u32regex& e,
1065
- match_flag_type flags = match_default)
1066
- {
1067
- match_results<const UChar*> m;
1068
- return BOOST_REGEX_DETAIL_NS::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<2> const*>(0));
1069
- }
1070
-
1071
- //
1072
- // regex_search overloads that widen the character type as appropriate:
1073
- //
1074
- namespace BOOST_REGEX_DETAIL_NS {
1075
- template <class BidiIterator, class Allocator>
1076
- inline bool do_regex_search(BidiIterator first, BidiIterator last,
1077
- match_results<BidiIterator, Allocator>& m,
1078
- const u32regex& e,
1079
- match_flag_type flags,
1080
- BidiIterator base,
1081
- boost::mpl::int_<4> const*)
1082
- {
1083
- return ::boost::regex_search(first, last, m, e, flags, base);
1084
- }
1085
- template <class BidiIterator, class Allocator>
1086
- bool do_regex_search(BidiIterator first, BidiIterator last,
1087
- match_results<BidiIterator, Allocator>& m,
1088
- const u32regex& e,
1089
- match_flag_type flags,
1090
- BidiIterator base,
1091
- boost::mpl::int_<2> const*)
1092
- {
1093
- typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
1094
- typedef match_results<conv_type> match_type;
1095
- //typedef typename match_type::allocator_type alloc_type;
1096
- match_type what;
1097
- bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
1098
- // copy results across to m:
1099
- if (result) copy_results(m, what, e.get_named_subs());
1100
- return result;
1101
- }
1102
- template <class BidiIterator, class Allocator>
1103
- bool do_regex_search(BidiIterator first, BidiIterator last,
1104
- match_results<BidiIterator, Allocator>& m,
1105
- const u32regex& e,
1106
- match_flag_type flags,
1107
- BidiIterator base,
1108
- boost::mpl::int_<1> const*)
1109
- {
1110
- typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
1111
- typedef match_results<conv_type> match_type;
1112
- //typedef typename match_type::allocator_type alloc_type;
1113
- match_type what;
1114
- bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
1115
- // copy results across to m:
1116
- if (result) copy_results(m, what, e.get_named_subs());
1117
- return result;
1118
- }
1119
- }
1120
-
1121
- template <class BidiIterator, class Allocator>
1122
- inline bool u32regex_search(BidiIterator first, BidiIterator last,
1123
- match_results<BidiIterator, Allocator>& m,
1124
- const u32regex& e,
1125
- match_flag_type flags = match_default)
1126
- {
1127
- return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
1128
- }
1129
- template <class BidiIterator, class Allocator>
1130
- inline bool u32regex_search(BidiIterator first, BidiIterator last,
1131
- match_results<BidiIterator, Allocator>& m,
1132
- const u32regex& e,
1133
- match_flag_type flags,
1134
- BidiIterator base)
1135
- {
1136
- return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, base, static_cast<mpl::int_<sizeof(*first)> const*>(0));
1137
- }
1138
- inline bool u32regex_search(const UChar* p,
1139
- match_results<const UChar*>& m,
1140
- const u32regex& e,
1141
- match_flag_type flags = match_default)
1142
- {
1143
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
1144
- }
1145
- #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
1146
- inline bool u32regex_search(const wchar_t* p,
1147
- match_results<const wchar_t*>& m,
1148
- const u32regex& e,
1149
- match_flag_type flags = match_default)
1150
- {
1151
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
1152
- }
1153
- #endif
1154
- inline bool u32regex_search(const char* p,
1155
- match_results<const char*>& m,
1156
- const u32regex& e,
1157
- match_flag_type flags = match_default)
1158
- {
1159
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
1160
- }
1161
- inline bool u32regex_search(const unsigned char* p,
1162
- match_results<const unsigned char*>& m,
1163
- const u32regex& e,
1164
- match_flag_type flags = match_default)
1165
- {
1166
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
1167
- }
1168
- inline bool u32regex_search(const std::string& s,
1169
- match_results<std::string::const_iterator>& m,
1170
- const u32regex& e,
1171
- match_flag_type flags = match_default)
1172
- {
1173
- return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
1174
- }
1175
- #ifndef BOOST_NO_STD_WSTRING
1176
- inline bool u32regex_search(const std::wstring& s,
1177
- match_results<std::wstring::const_iterator>& m,
1178
- const u32regex& e,
1179
- match_flag_type flags = match_default)
1180
- {
1181
- return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
1182
- }
1183
- #endif
1184
- inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1185
- match_results<const UChar*>& m,
1186
- const u32regex& e,
1187
- match_flag_type flags = match_default)
1188
- {
1189
- return BOOST_REGEX_DETAIL_NS::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<2> const*>(0));
1190
- }
1191
- template <class BidiIterator>
1192
- inline bool u32regex_search(BidiIterator first, BidiIterator last,
1193
- const u32regex& e,
1194
- match_flag_type flags = match_default)
1195
- {
1196
- match_results<BidiIterator> m;
1197
- return BOOST_REGEX_DETAIL_NS::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
1198
- }
1199
- inline bool u32regex_search(const UChar* p,
1200
- const u32regex& e,
1201
- match_flag_type flags = match_default)
1202
- {
1203
- match_results<const UChar*> m;
1204
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
1205
- }
1206
- #if !BOOST_REGEX_UCHAR_IS_WCHAR_T && !defined(BOOST_NO_WREGEX)
1207
- inline bool u32regex_search(const wchar_t* p,
1208
- const u32regex& e,
1209
- match_flag_type flags = match_default)
1210
- {
1211
- match_results<const wchar_t*> m;
1212
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
1213
- }
1214
- #endif
1215
- inline bool u32regex_search(const char* p,
1216
- const u32regex& e,
1217
- match_flag_type flags = match_default)
1218
- {
1219
- match_results<const char*> m;
1220
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
1221
- }
1222
- inline bool u32regex_search(const unsigned char* p,
1223
- const u32regex& e,
1224
- match_flag_type flags = match_default)
1225
- {
1226
- match_results<const unsigned char*> m;
1227
- return BOOST_REGEX_DETAIL_NS::do_regex_search(p, p + std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
1228
- }
1229
- inline bool u32regex_search(const std::string& s,
1230
- const u32regex& e,
1231
- match_flag_type flags = match_default)
1232
- {
1233
- match_results<std::string::const_iterator> m;
1234
- return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
1235
- }
1236
- #ifndef BOOST_NO_STD_WSTRING
1237
- inline bool u32regex_search(const std::wstring& s,
1238
- const u32regex& e,
1239
- match_flag_type flags = match_default)
1240
- {
1241
- match_results<std::wstring::const_iterator> m;
1242
- return BOOST_REGEX_DETAIL_NS::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
1243
- }
1244
- #endif
1245
- inline bool u32regex_search(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1246
- const u32regex& e,
1247
- match_flag_type flags = match_default)
1248
- {
1249
- match_results<const UChar*> m;
1250
- return BOOST_REGEX_DETAIL_NS::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<2> const*>(0));
1251
- }
1252
-
1253
- //
1254
- // overloads for regex_replace with utf-8 and utf-16 data types:
1255
- //
1256
- namespace BOOST_REGEX_DETAIL_NS {
1257
- template <class I>
1258
- inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >
1259
- make_utf32_seq(I i, I j, mpl::int_<1> const*)
1260
- {
1261
- return std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >(boost::u8_to_u32_iterator<I>(i, i, j), boost::u8_to_u32_iterator<I>(j, i, j));
1262
- }
1263
- template <class I>
1264
- inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >
1265
- make_utf32_seq(I i, I j, mpl::int_<2> const*)
1266
- {
1267
- return std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >(boost::u16_to_u32_iterator<I>(i, i, j), boost::u16_to_u32_iterator<I>(j, i, j));
1268
- }
1269
- template <class I>
1270
- inline std::pair< I, I >
1271
- make_utf32_seq(I i, I j, mpl::int_<4> const*)
1272
- {
1273
- return std::pair< I, I >(i, j);
1274
- }
1275
- template <class charT>
1276
- inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >
1277
- make_utf32_seq(const charT* p, mpl::int_<1> const*)
1278
- {
1279
- std::size_t len = std::strlen((const char*)p);
1280
- return std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >(boost::u8_to_u32_iterator<const charT*>(p, p, p + len), boost::u8_to_u32_iterator<const charT*>(p + len, p, p + len));
1281
- }
1282
- template <class charT>
1283
- inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >
1284
- make_utf32_seq(const charT* p, mpl::int_<2> const*)
1285
- {
1286
- std::size_t len = u_strlen((const UChar*)p);
1287
- return std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >(boost::u16_to_u32_iterator<const charT*>(p, p, p + len), boost::u16_to_u32_iterator<const charT*>(p + len, p, p + len));
1288
- }
1289
- template <class charT>
1290
- inline std::pair< const charT*, const charT* >
1291
- make_utf32_seq(const charT* p, mpl::int_<4> const*)
1292
- {
1293
- return std::pair< const charT*, const charT* >(p, p + icu_regex_traits::length((UChar32 const*)p));
1294
- }
1295
- template <class OutputIterator>
1296
- inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> const*)
1297
- {
1298
- return o;
1299
- }
1300
- template <class OutputIterator>
1301
- inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<2> const*)
1302
- {
1303
- return o;
1304
- }
1305
- template <class OutputIterator>
1306
- inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<1> const*)
1307
- {
1308
- return o;
1309
- }
1310
-
1311
- template <class OutputIterator, class I1, class I2>
1312
- OutputIterator do_regex_replace(OutputIterator out,
1313
- std::pair<I1, I1> const& in,
1314
- const u32regex& e,
1315
- const std::pair<I2, I2>& fmt,
1316
- match_flag_type flags
1317
- )
1318
- {
1319
- // unfortunately we have to copy the format string in order to pass in onward:
1320
- std::vector<UChar32> f;
1321
- #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
1322
- f.assign(fmt.first, fmt.second);
1323
- #else
1324
- f.clear();
1325
- I2 pos = fmt.first;
1326
- while (pos != fmt.second)
1327
- f.push_back(*pos++);
1328
- #endif
1329
-
1330
- regex_iterator<I1, UChar32, icu_regex_traits> i(in.first, in.second, e, flags);
1331
- regex_iterator<I1, UChar32, icu_regex_traits> j;
1332
- if (i == j)
1333
- {
1334
- if (!(flags & regex_constants::format_no_copy))
1335
- out = BOOST_REGEX_DETAIL_NS::copy(in.first, in.second, out);
1336
- }
1337
- else
1338
- {
1339
- I1 last_m = in.first;
1340
- while (i != j)
1341
- {
1342
- if (!(flags & regex_constants::format_no_copy))
1343
- out = BOOST_REGEX_DETAIL_NS::copy(i->prefix().first, i->prefix().second, out);
1344
- if (!f.empty())
1345
- out = ::boost::BOOST_REGEX_DETAIL_NS::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits());
1346
- else
1347
- out = ::boost::BOOST_REGEX_DETAIL_NS::regex_format_imp(out, *i, static_cast<UChar32 const*>(0), static_cast<UChar32 const*>(0), flags, e.get_traits());
1348
- last_m = (*i)[0].second;
1349
- if (flags & regex_constants::format_first_only)
1350
- break;
1351
- ++i;
1352
- }
1353
- if (!(flags & regex_constants::format_no_copy))
1354
- out = BOOST_REGEX_DETAIL_NS::copy(last_m, in.second, out);
1355
- }
1356
- return out;
1357
- }
1358
- template <class BaseIterator>
1359
- inline const BaseIterator& extract_output_base(const BaseIterator& b)
1360
- {
1361
- return b;
1362
- }
1363
- template <class BaseIterator>
1364
- inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b)
1365
- {
1366
- return b.base();
1367
- }
1368
- template <class BaseIterator>
1369
- inline BaseIterator extract_output_base(const utf16_output_iterator<BaseIterator>& b)
1370
- {
1371
- return b.base();
1372
- }
1373
- } // BOOST_REGEX_DETAIL_NS
1374
-
1375
- template <class OutputIterator, class BidirectionalIterator, class charT>
1376
- inline OutputIterator u32regex_replace(OutputIterator out,
1377
- BidirectionalIterator first,
1378
- BidirectionalIterator last,
1379
- const u32regex& e,
1380
- const charT* fmt,
1381
- match_flag_type flags = match_default)
1382
- {
1383
- return BOOST_REGEX_DETAIL_NS::extract_output_base
1384
- (
1385
- BOOST_REGEX_DETAIL_NS::do_regex_replace(
1386
- BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
1387
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
1388
- e,
1389
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt, static_cast<mpl::int_<sizeof(*fmt)> const*>(0)),
1390
- flags)
1391
- );
1392
- }
1393
-
1394
- template <class OutputIterator, class Iterator, class charT>
1395
- inline OutputIterator u32regex_replace(OutputIterator out,
1396
- Iterator first,
1397
- Iterator last,
1398
- const u32regex& e,
1399
- const std::basic_string<charT>& fmt,
1400
- match_flag_type flags = match_default)
1401
- {
1402
- return BOOST_REGEX_DETAIL_NS::extract_output_base
1403
- (
1404
- BOOST_REGEX_DETAIL_NS::do_regex_replace(
1405
- BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
1406
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
1407
- e,
1408
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.begin(), fmt.end(), static_cast<mpl::int_<sizeof(charT)> const*>(0)),
1409
- flags)
1410
- );
1411
- }
1412
-
1413
- template <class OutputIterator, class Iterator>
1414
- inline OutputIterator u32regex_replace(OutputIterator out,
1415
- Iterator first,
1416
- Iterator last,
1417
- const u32regex& e,
1418
- const U_NAMESPACE_QUALIFIER UnicodeString& fmt,
1419
- match_flag_type flags = match_default)
1420
- {
1421
- return BOOST_REGEX_DETAIL_NS::extract_output_base
1422
- (
1423
- BOOST_REGEX_DETAIL_NS::do_regex_replace(
1424
- BOOST_REGEX_DETAIL_NS::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
1425
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
1426
- e,
1427
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
1428
- flags)
1429
- );
1430
- }
1431
-
1432
- template <class charT>
1433
- std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
1434
- const u32regex& e,
1435
- const charT* fmt,
1436
- match_flag_type flags = match_default)
1437
- {
1438
- std::basic_string<charT> result;
1439
- BOOST_REGEX_DETAIL_NS::string_out_iterator<std::basic_string<charT> > i(result);
1440
- u32regex_replace(i, s.begin(), s.end(), e, fmt, flags);
1441
- return result;
1442
- }
1443
-
1444
- template <class charT>
1445
- std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
1446
- const u32regex& e,
1447
- const std::basic_string<charT>& fmt,
1448
- match_flag_type flags = match_default)
1449
- {
1450
- std::basic_string<charT> result;
1451
- BOOST_REGEX_DETAIL_NS::string_out_iterator<std::basic_string<charT> > i(result);
1452
- u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
1453
- return result;
1454
- }
1455
-
1456
- namespace BOOST_REGEX_DETAIL_NS {
1457
-
1458
- class unicode_string_out_iterator
1459
- {
1460
- U_NAMESPACE_QUALIFIER UnicodeString* out;
1461
- public:
1462
- unicode_string_out_iterator(U_NAMESPACE_QUALIFIER UnicodeString& s) : out(&s) {}
1463
- unicode_string_out_iterator& operator++() { return *this; }
1464
- unicode_string_out_iterator& operator++(int) { return *this; }
1465
- unicode_string_out_iterator& operator*() { return *this; }
1466
- unicode_string_out_iterator& operator=(UChar v)
1467
- {
1468
- *out += v;
1469
- return *this;
1470
- }
1471
- typedef std::ptrdiff_t difference_type;
1472
- typedef UChar value_type;
1473
- typedef value_type* pointer;
1474
- typedef value_type& reference;
1475
- typedef std::output_iterator_tag iterator_category;
1476
- };
1477
-
1478
- }
1479
-
1480
- inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1481
- const u32regex& e,
1482
- const UChar* fmt,
1483
- match_flag_type flags = match_default)
1484
- {
1485
- U_NAMESPACE_QUALIFIER UnicodeString result;
1486
- BOOST_REGEX_DETAIL_NS::unicode_string_out_iterator i(result);
1487
- u32regex_replace(i, s.getBuffer(), s.getBuffer() + s.length(), e, fmt, flags);
1488
- return result;
1489
- }
1490
-
1491
- inline U_NAMESPACE_QUALIFIER UnicodeString u32regex_replace(const U_NAMESPACE_QUALIFIER UnicodeString& s,
1492
- const u32regex& e,
1493
- const U_NAMESPACE_QUALIFIER UnicodeString& fmt,
1494
- match_flag_type flags = match_default)
1495
- {
1496
- U_NAMESPACE_QUALIFIER UnicodeString result;
1497
- BOOST_REGEX_DETAIL_NS::unicode_string_out_iterator i(result);
1498
- BOOST_REGEX_DETAIL_NS::do_regex_replace(
1499
- BOOST_REGEX_DETAIL_NS::make_utf32_out(i, static_cast<mpl::int_<2> const*>(0)),
1500
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(s.getBuffer(), s.getBuffer() + s.length(), static_cast<mpl::int_<2> const*>(0)),
1501
- e,
1502
- BOOST_REGEX_DETAIL_NS::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
1503
- flags);
1504
- return result;
1505
- }
1506
-
1507
- } // namespace boost.
1508
-
1509
- #ifdef BOOST_MSVC
1510
- #pragma warning (pop)
1511
- #endif
1512
-
1513
- #include <boost/regex/v4/u32regex_iterator.hpp>
1514
- #include <boost/regex/v4/u32regex_token_iterator.hpp>
1515
-
1516
- #endif