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.
- checksums.yaml +4 -4
- data/CHANGELOG +32 -2
- data/Rakefile +6 -13
- data/bin/passenger-install-apache2-module +15 -19
- data/bin/passenger-install-nginx-module +42 -44
- data/bin/passenger-status +9 -10
- data/build/common_library.rb +4 -4
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
- data/build/test_basics.rb +4 -3
- data/dev/copy_boost_headers +54 -40
- data/dev/ruby_server.rb +1 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
- data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
- data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
- data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
- data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
- data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
- data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
- data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
- data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
- data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/nginx_module/ContentHandler.c +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +8 -8
- metadata +26 -99
- data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
- 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
|