passenger 5.0.24 → 5.0.25
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.editorconfig +8 -18
- data/CHANGELOG +20 -0
- data/build/cplusplus_support.rb +3 -3
- data/build/cxx_dependency_map.rb +148 -96
- data/build/cxx_tests.rb +24 -12
- data/build/packaging.rb +1 -2
- data/dev/copy_boost_headers +32 -9
- data/resources/templates/standalone/config.erb +2 -0
- data/resources/templates/standalone/footer.erb +3 -0
- data/resources/templates/standalone/server.erb +7 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +2 -2
- data/src/agent/Core/SpawningKit/DirectSpawner.h +3 -0
- data/src/agent/Core/UnionStation/Transaction.h +1 -15
- data/src/agent/README.md +15 -3
- data/src/agent/UstRouter/Controller.h +95 -90
- data/src/agent/UstRouter/FileSink.h +3 -2
- data/src/agent/UstRouter/LogSink.h +5 -6
- data/src/agent/UstRouter/RemoteSender.h +41 -12
- data/src/agent/UstRouter/RemoteSink.h +3 -2
- data/src/agent/UstRouter/Transaction.h +198 -66
- data/src/apache2_module/Configuration.cpp +57 -2
- data/src/apache2_module/Configuration.h +3 -1
- data/src/apache2_module/Configuration.hpp +3 -1
- data/src/apache2_module/Hooks.cpp +4 -2
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/MemoryKit/palloc.h +1 -0
- data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -0
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +4 -3
- data/src/cxx_supportlib/ServerKit/Server.h +1 -0
- data/src/cxx_supportlib/Utils/BufferedIO.h +21 -4
- data/src/cxx_supportlib/Utils/IOUtils.cpp +62 -12
- data/src/cxx_supportlib/Utils/StrIntUtils.cpp +3 -3
- data/src/cxx_supportlib/Utils/StrIntUtils.h +2 -2
- data/src/cxx_supportlib/WatchdogLauncher.cpp +13 -1
- data/src/cxx_supportlib/WatchdogLauncher.h +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +312 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/concept.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +353 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_all.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_store.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +1 -8
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder_regex.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter_regex.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/predicate.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +95 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/erase.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find.hpp +334 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +388 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +193 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/join.hpp +145 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +475 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate_facade.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/regex.hpp +646 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/regex_find_format.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/sequence_traits.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +163 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/list_traits.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/rope_traits.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/slist_traits.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/string_traits.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std_containers_traits.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim.hpp +398 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +217 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/aligned_storage.hpp +1 -164
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +33 -84
- data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +83 -231
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +161 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +774 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_alpha.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +134 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sparc.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_linux_arm.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_arm.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +57 -36
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +140 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +297 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/link.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +30 -76
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +161 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +876 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +973 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +395 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +802 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +240 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +514 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +616 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +178 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +824 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +928 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +91 -32
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +280 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +18 -1
- data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +507 -2
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +214 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/make_adaptable.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +29 -36
- data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +304 -0
- data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +13 -65
- data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +9 -13
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/concept_def.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +25 -26
- data/src/cxx_supportlib/vendor-modified/boost/config.hpp +9 -12
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +36 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +135 -14
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +41 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +48 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +33 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +36 -16
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +121 -87
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +39 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +13 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +327 -64
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +44 -10
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +38 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +0 -12
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +36 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +37 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +63 -23
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +44 -13
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +102 -128
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +258 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cloudabi.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +43 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/select_platform_config.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/select_stdlib_config.hpp +28 -8
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +58 -15
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +129 -14
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +13 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +159 -85
- data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +15 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +351 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +371 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +283 -213
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +195 -51
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +840 -625
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +24 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +289 -181
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +314 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +24 -25
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/auto_link.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +157 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +16 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +1142 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +61 -48
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +293 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +335 -408
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +383 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +300 -83
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/minimal_char_traits_header.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +45 -118
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +22 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +288 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +115 -109
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +157 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +33 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +62 -89
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +191 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +17 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +646 -595
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +44 -184
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +23 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +50 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +627 -287
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +608 -657
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +395 -376
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +616 -625
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +344 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/pool_options.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +193 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +138 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +194 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +423 -1019
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator_fwd.hpp +23 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +520 -626
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +416 -407
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +574 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +711 -470
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +314 -145
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +477 -282
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +63 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +1660 -945
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +162 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/enable_if.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +154 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +301 -0
- data/src/cxx_supportlib/vendor-modified/boost/{detail/scoped_enum_emulation.hpp → core/scoped_enum.hpp} +19 -164
- data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/underlying_type.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +132 -95
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_clock_device.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_defs.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_format_simple.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_limited.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generator_formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generator_parser.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/conversion.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +352 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +517 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_ymd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/conversion.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/date_duration_operators.hpp +115 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/dst_transition_day_rules.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +528 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +184 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_types.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +474 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/tz_database.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time_adjustor.hpp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_timezone_defs.hpp +193 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/parse_format_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_legacy_io.hpp +153 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_system.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +212 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_period.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +201 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_defs.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_convert.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_clock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_defs.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_formatting_streams.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +99 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +396 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +3 -118
- data/src/cxx_supportlib/vendor-modified/boost/detail/fenv.hpp +30 -3
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -283
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +9 -477
- data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +12 -82
- data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +8 -107
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +6 -24
- data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +35 -30
- data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/float_functions.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +22 -28
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/limits.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +5 -66
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +77 -48
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash_fwd.hpp +3 -7
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/get_pointer.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +47 -55
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +655 -2197
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +16 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +376 -1605
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +329 -601
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +982 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +17 -27
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +2101 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/{detail/tree_algorithms.hpp → bstree_algorithms.hpp} +973 -684
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +121 -66
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +30 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +22 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +48 -61
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +95 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/assert.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +19 -24
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +184 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +104 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_end.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +235 -39
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +107 -95
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/get_value_traits.hpp +222 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +279 -296
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +122 -85
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +186 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/is_stateful_value_traits.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +99 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +14 -139
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +295 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/minimal_less_equal_header.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/minimal_pair_header.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +160 -337
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_holder.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +34 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/pointer_element.hpp +168 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +22 -19
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +124 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +14 -117
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/std_fwd.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +18 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +13 -133
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/uncast.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +2006 -1615
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +450 -229
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/link_mode.hpp +21 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +253 -282
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +17 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +21 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +94 -648
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +374 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +16 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +188 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +97 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +29 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +366 -1592
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +297 -639
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +619 -2187
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +16 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +661 -2252
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +468 -1493
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +163 -594
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +326 -307
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +16 -21
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +686 -2238
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +425 -1575
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +422 -703
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +440 -1122
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +158 -406
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +558 -2257
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +476 -1611
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +36 -27
- data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +3 -42
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -13
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +15 -22
- data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +59 -64
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +77 -50
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +13 -22
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +318 -212
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +17 -49
- data/src/cxx_supportlib/vendor-modified/boost/iterator/{detail/minimum_category.hpp → minimum_category.hpp} +24 -45
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +10 -5
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +17 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +29 -2649
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +498 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +787 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +194 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +197 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +294 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +212 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +24 -11
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cpp_regex_traits.cpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +40 -40
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +14 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +24 -11
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +11 -14
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +3 -420
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +173 -77
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +83 -33
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +42 -12
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +196 -18
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +52 -8
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +111 -13
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +40 -8
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/real_cast.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +233 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +223 -54
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +201 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +6 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_end.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +661 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +468 -62
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +206 -129
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +1078 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +591 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +33 -19
- data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/move.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +30 -95
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +871 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +53 -98
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +317 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/O1_size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/O1_size_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/accumulate.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/advance.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/advance_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/alias.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/always.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/mpl/apply.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/apply_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/apply_wrap.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/arg.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/arg_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/arithmetic.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/as_sequence.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/mpl/at.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/at_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/O1_size_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/adl_barrier.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/advance_backward.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/advance_forward.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/apply_1st.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arg_typedef.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arithmetic_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arity.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arity_spec.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/at_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/back_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/basic_bind.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/begin_end_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/clear_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/comparison_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dependent_nttp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/eti.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/gcc.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/gpu.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/has_apply.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/has_xxx.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/intel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/lambda.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/msvc.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/msvc_typename.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/nttp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/pp_counter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/static_constant.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/typeof.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/use_preprocessed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/workaround.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/contains_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_args.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/empty_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/erase_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/erase_key_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/filter_iter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_pred.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/front_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/full_lambda.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_apply.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_begin.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_key_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_type.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/include_preprocessed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/insert_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/insert_range_impl.hpp +22 -19
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/inserter_algorithm.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/is_msvc_eti_arg.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_apply.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_fold_if_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_fold_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_push_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/joint_iter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_arity_param.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_no_ctps.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_spec.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/largest_int.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/logical_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_dtw.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_eti_base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_is_class.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_never_true.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_type.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_spec.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nttp_decl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/numeric_cast_utils.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/numeric_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/order_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/overload_names.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/partition_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/pop_back_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/pop_front_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/add.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/def_params_tail.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/default_params.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/enum.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/ext_params.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/filter_params.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/is_seq.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/params.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/range.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/repeat.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/sub.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/token_equal.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/tuple.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/push_back_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/push_front_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/O1_size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_fold_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_fold_impl_body.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_iter_fold_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/sequence_wrapper.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/shift_op.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/single_element_iter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/sort_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/assert.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/data.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/test_case.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/traits_lambda_spec.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/transform_iter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/type_wrapper.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/unwrap.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/value_wknd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/back_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/back_inserter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/begin.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/begin_end.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/begin_end_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bind.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bind_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitwise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitxor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bool.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bool_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/clear.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/clear_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/comparison.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/contains.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/contains_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/copy.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/copy_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/count.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/count_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/count_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/deque.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/deref.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/distance.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/distance_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/divides.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_base.hpp +13 -9
- data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_sequence.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/end.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/equal.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/equal_to.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/erase.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_key.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_key_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/eval_if.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/filter_view.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/find.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/find_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/fold.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/for_each.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/mpl/front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/front_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/front_inserter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/greater.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/greater_equal.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/has_key.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/has_key_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +12 -5
- data/src/cxx_supportlib/vendor-modified/boost/mpl/identity.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/index_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/index_of.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/inherit.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/inherit_linearly.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/insert.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_range.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_range_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/inserter.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/int.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/int_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c_tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/is_placeholder.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/is_sequence.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/iter_fold.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/iter_fold_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_category.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_range.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_tags.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/joint_view.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/key_type.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/key_type_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/lambda.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/lambda_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/less.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/less_equal.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/arity.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/list.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/map.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/set.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/unrolling.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/vector.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/O1_size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/begin_end.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/clear.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/include_preprocessed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/item.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/numbered.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/numbered_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/pop_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/push_back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/push_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list0_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list10.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list10_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list20.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list20_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list30.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list30_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list40.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list40_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list50.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list50_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/list_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/logical.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/long.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/long_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/at_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/begin_end_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/clear_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/contains_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/empty_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/erase_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/erase_key_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/has_key_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/include_preprocessed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/insert_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/insert_range_impl.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/item.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/key_type_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/map0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/numbered.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/size_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/value_type_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map0.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map10.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map20.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map30.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map40.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map50.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/math/fixed_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/math/is_even.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/math/rational_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/max.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/max_element.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/min.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/min_element.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/min_max.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/minus.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/modulus.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiplies.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/count_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/insert_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/item.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/multiset0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/multiset0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/negate.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/next.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/next_prior.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/not.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/not_equal_to.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/mpl/order.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/order_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/pair.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/pair_view.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/partition.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/placeholders.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/plus.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_back_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_front_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/prior.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/protect.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/push_back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/push_back_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/push_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/push_front_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/quote.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/range_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/remove.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/remove_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/replace.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/replace_if.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse_fold.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse_iter_fold.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/same_as.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/sequence_tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/sequence_tag_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/at_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/begin_end_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/clear_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/empty_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/erase_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/erase_key_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/has_key_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/include_preprocessed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/insert_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/insert_range_impl.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/item.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/key_type_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/numbered.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/numbered_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/set0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/size_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/value_type_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set0.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set0_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set10.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set10_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set20.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set20_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set30.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set30_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set40.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set40_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set50.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set50_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/set_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/shift_left.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/shift_right.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/single_view.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/size_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/size_t.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/size_t_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/sizeof.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/sort.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/stable_partition.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/string.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mpl/switch.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/times.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/transform.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/transform_view.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/unique.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/unpack_args.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/value_type.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/value_type_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/O1_size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/begin_end.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/clear.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/empty.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/include_preprocessed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/item.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/numbered.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/numbered_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/pop_back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/pop_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/push_back.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/push_front.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/size.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/tag.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/vector0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector0.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector0_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector10.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector10_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector20.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector20_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector30.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector30_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector40.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector40_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector50.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector50_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/vector_c.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/void.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/void_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/zip_view.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +118 -4
- data/src/cxx_supportlib/vendor-modified/boost/noncopyable.hpp +12 -43
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +32 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +18 -2
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +9 -37
- data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +660 -84
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +4 -27
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +0 -84
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +2 -28
- data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +6 -107
- data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +2 -28
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/predef.h +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/_cassert.h +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/_exception.h +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/comp_detected.h +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/os_detected.h +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/platform_detected.h +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/test.h +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/test_def.h +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware.h +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +123 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library.h +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/_prefix.h +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/_prefix.h +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other.h +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/dec.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/push_back.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/push_front.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +17 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +16 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/empty.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/identity.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_or_1.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/library.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +27 -4
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/is_begin_parens.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/remove_parens.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +19 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +57 -10
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +58 -10
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +18 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +19 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/size.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/variadic_seq_to_seq.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/eat.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_array.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/algorithm/equal.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +5 -13
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +35 -15
- data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +39 -30
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/extract_optional_type.hpp +21 -25
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/difference_type.hpp +20 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/empty.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +5 -13
- data/src/cxx_supportlib/vendor-modified/boost/range/functions.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +36 -34
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +481 -251
- data/src/cxx_supportlib/vendor-modified/boost/range/mutable_iterator.hpp +41 -29
- data/src/cxx_supportlib/vendor-modified/boost/range/range_fwd.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/reverse_iterator.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +30 -6
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +18 -12
- data/src/cxx_supportlib/vendor-modified/boost/range/value_type.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +63 -3
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/ref.hpp +12 -184
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +51 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/mfc.hpp +30 -34
- data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +25 -38
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +211 -14
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +161 -106
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +24 -21
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +46 -20
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +38 -14
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +206 -31
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +122 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +6 -15
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +23 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +75 -71
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +6 -15
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +43 -41
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +103 -172
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +318 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +16 -9
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +106 -70
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +36 -59
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/{atomic_count_pthreads.hpp → atomic_count_pt.hpp} +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +116 -10
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +140 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +137 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +21 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_disable_deprecated.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pool.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +80 -169
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +121 -118
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +54 -12
- data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -19
- data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +467 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +222 -36
- data/src/cxx_supportlib/vendor-modified/boost/thread/caller_context.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +4 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +202 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_views.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +223 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +223 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +202 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +725 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +327 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +369 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +335 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +466 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/devector.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/cv_status.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +32 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/counter.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/delete.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/function_wrapper.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +373 -120
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoker.hpp +762 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/is_convertible.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/memory.hpp +11 -119
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +116 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +234 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +41 -16
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_group.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/variadic_footer.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/variadic_header.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptional_ptr.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executor.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +318 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/scheduled_executor_base.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +213 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +205 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +271 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +216 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +170 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +157 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/config/inline_namespace.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/exception_list.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v1/exception_list.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v1/inline_namespace.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/inline_namespace.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +316 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/task_region.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +3327 -1705
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/future_error.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/{future_error_code.hpp → futures/future_error_code.hpp} +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/future_status.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/is_future_type.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +161 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/latch.hpp +43 -15
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +45 -41
- data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_adapter.hpp +28 -28
- data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/ostream_buffer.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +101 -56
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +141 -47
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +11 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +39 -10
- data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +15 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/sync_bounded_queue.hpp +2 -580
- data/src/cxx_supportlib/vendor-modified/boost/thread/sync_queue.hpp +2 -502
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +78 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/testable_mutex.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_pool.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +202 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +73 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/with_lock_guard.hpp +234 -0
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +3 -17
- data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +14 -5
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -24
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -17
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +14 -62
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +134 -9
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +9 -18
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/{detail/wrap.hpp → alignment_traits.hpp} +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/arithmetic_traits.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/array_traits.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/broken_compiler_spec.hpp +9 -105
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +118 -131
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/config.hpp +5 -60
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/declval.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/bool_trait_def.hpp +9 -26
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/bool_trait_undef.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +212 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_type_impl.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/composite_member_pointer_type.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/composite_pointer_type.hpp +153 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +12 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +12 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +14 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_and.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_eq.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_not.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_or.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +13 -57
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +13 -218
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +13 -107
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +15 -974
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/template_arity_spec.hpp +6 -21
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +138 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/function_traits.hpp +0 -62
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_and.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_and_assign.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_or.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_or_assign.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_xor.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_xor_assign.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_complement.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_divides.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_divides_assign.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_left_shift.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_left_shift_assign.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_and.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_not.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_or.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_modulus.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_modulus_assign.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_multiplies.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_multiplies_assign.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_negate.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_new_operator.hpp +147 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +57 -18
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +43 -24
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +52 -23
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_operator.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_right_shift.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_right_shift_assign.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +23 -29
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_constructor.hpp +31 -25
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +34 -36
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +21 -22
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +40 -25
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +45 -25
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_unary_minus.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_unary_plus.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_virtual_destructor.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +86 -33
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +116 -41
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +6 -10
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_arithmetic.hpp +3 -32
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +12 -60
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +9 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_of.hpp +8 -20
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_of_tr1.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_class.hpp +17 -43
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +2 -24
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +8 -127
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +94 -98
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +141 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +8 -117
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +19 -42
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_float.hpp +2 -9
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +9 -18
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +2 -21
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +43 -37
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +8 -76
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +18 -34
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_object_pointer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +8 -79
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +32 -35
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +43 -41
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_object.hpp +7 -32
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +14 -101
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +12 -127
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_polymorphic.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_reference.hpp +6 -21
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +4 -66
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scalar.hpp +3 -31
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +83 -60
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_stateless.hpp +8 -23
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_union.hpp +6 -32
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +85 -57
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_void.hpp +7 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +8 -115
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +35 -57
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +34 -57
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/reference_traits.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +4 -31
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +8 -65
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +13 -57
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +8 -23
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -21
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +7 -61
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +101 -239
- data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +118 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +283 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +135 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +160 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +186 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +321 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +471 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +621 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +42 -34
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +108 -56
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +30 -24
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +21 -16
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +21 -15
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +11 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered_map.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered_set.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/addressof.hpp +11 -96
- data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +708 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/declval.hpp +5 -41
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +18 -5
- data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/enable_if.hpp +10 -112
- data/src/cxx_supportlib/vendor-modified/boost/utility/explicit_operator_bool.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/identity_type.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +25 -9
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +536 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref_fwd.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +10 -48
- data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +77 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +281 -0
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/visit_each.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +3 -1
- data/src/nginx_module/Configuration.c +157 -6
- data/src/nginx_module/Configuration.h +3 -1
- data/src/nginx_module/ContentHandler.c +2 -1
- data/src/nginx_module/ngx_http_passenger_module.c +27 -46
- data/src/nodejs_supportlib/phusion_passenger/log_express.js +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +102 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +20 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +36 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/LICENSE.md +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core.rb +7 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/api.rb +28 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/misc.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/spec_helper.rb +18 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/transaction.rb +1 -10
- data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version_data.rb +4 -4
- metadata +609 -62
- data/src/agent/UstRouter/DataStoreId.h +0 -184
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.0 +0 -15374
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.1 +0 -15374
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.2 +0 -15374
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/requests +0 -568
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.0 +0 -3104
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.1 +0 -3104
- data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.2 +0 -699
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/base.hpp +0 -585
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas32strong.hpp +0 -885
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas32weak.hpp +0 -947
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas64strong.hpp +0 -443
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-alpha.hpp +0 -368
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-armv6plus.hpp +0 -252
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-cas.hpp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-ppc.hpp +0 -2850
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-sparcv9.hpp +0 -1259
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-x86.hpp +0 -1766
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/generic-cas.hpp +0 -206
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/linux-arm.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type-classification.hpp +0 -45
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithms.hpp +0 -84
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/memory_util.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/preprocessor.hpp +0 -232
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/utilities.hpp +0 -1141
- data/src/cxx_supportlib/vendor-modified/boost/detail/is_incrementable.hpp +0 -134
- data/src/cxx_supportlib/vendor-modified/boost/detail/is_xxx.hpp +0 -61
- data/src/cxx_supportlib/vendor-modified/boost/detail/limits.hpp +0 -449
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/attribute_noreturn.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/indirect_reference.hpp +0 -43
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/clear_on_destructor_base.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/memory_util.hpp +0 -288
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/preprocessor.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/utilities.hpp +0 -858
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set_hook.hpp +0 -292
- data/src/cxx_supportlib/vendor-modified/boost/libs/atomic/lockpool.cpp +0 -24
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/local_free_on_destruction.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/timeconv.inl +0 -151
- data/src/cxx_supportlib/vendor-modified/boost/math/common_factor_ct.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/math_fwd.hpp +0 -108
- data/src/cxx_supportlib/vendor-modified/boost/parameter.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/pointee.hpp +0 -74
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/allocate_array_helper.hpp +0 -169
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_deleter.hpp +0 -124
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/make_array_helper.hpp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/async_func.hpp +0 -571
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_type_imp.hpp +0 -333
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/cv_traits_impl.hpp +0 -97
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/false_result.hpp +0 -28
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/size_t_trait_def.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/size_t_trait_undef.hpp +0 -16
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/type_trait_def.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/type_trait_undef.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/units/detail/utility.hpp +0 -104
@@ -8,20 +8,12 @@
|
|
8
8
|
# include <boost/detail/iterator.hpp>
|
9
9
|
# include <boost/detail/workaround.hpp>
|
10
10
|
|
11
|
-
namespace boost {
|
11
|
+
namespace boost {
|
12
|
+
namespace iterators {
|
12
13
|
|
13
|
-
//
|
14
|
-
//
|
15
|
-
|
16
|
-
// "std:: is visible globally" hack it uses. Use
|
17
|
-
// BOOST_ITERATOR_CATEGORY to write code that's portable to older
|
18
|
-
// GCCs.
|
19
|
-
|
20
|
-
# if BOOST_WORKAROUND(__GNUC__, <= 2)
|
21
|
-
# define BOOST_ITERATOR_CATEGORY iterator_category_
|
22
|
-
# else
|
23
|
-
# define BOOST_ITERATOR_CATEGORY iterator_category
|
24
|
-
# endif
|
14
|
+
// Macro for supporting old compilers, no longer needed but kept
|
15
|
+
// for backwards compatibility (it was documented).
|
16
|
+
#define BOOST_ITERATOR_CATEGORY iterator_category
|
25
17
|
|
26
18
|
|
27
19
|
template <class Iterator>
|
@@ -29,20 +21,20 @@ struct iterator_value
|
|
29
21
|
{
|
30
22
|
typedef typename boost::detail::iterator_traits<Iterator>::value_type type;
|
31
23
|
};
|
32
|
-
|
24
|
+
|
33
25
|
template <class Iterator>
|
34
26
|
struct iterator_reference
|
35
27
|
{
|
36
28
|
typedef typename boost::detail::iterator_traits<Iterator>::reference type;
|
37
29
|
};
|
38
|
-
|
39
|
-
|
30
|
+
|
31
|
+
|
40
32
|
template <class Iterator>
|
41
33
|
struct iterator_pointer
|
42
34
|
{
|
43
35
|
typedef typename boost::detail::iterator_traits<Iterator>::pointer type;
|
44
36
|
};
|
45
|
-
|
37
|
+
|
46
38
|
template <class Iterator>
|
47
39
|
struct iterator_difference
|
48
40
|
{
|
@@ -50,43 +42,19 @@ struct iterator_difference
|
|
50
42
|
};
|
51
43
|
|
52
44
|
template <class Iterator>
|
53
|
-
struct
|
45
|
+
struct iterator_category
|
54
46
|
{
|
55
47
|
typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;
|
56
48
|
};
|
57
49
|
|
58
|
-
|
59
|
-
template <>
|
60
|
-
struct iterator_value<int>
|
61
|
-
{
|
62
|
-
typedef void type;
|
63
|
-
};
|
64
|
-
|
65
|
-
template <>
|
66
|
-
struct iterator_reference<int>
|
67
|
-
{
|
68
|
-
typedef void type;
|
69
|
-
};
|
50
|
+
} // namespace iterators
|
70
51
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
template <>
|
78
|
-
struct iterator_difference<int>
|
79
|
-
{
|
80
|
-
typedef void type;
|
81
|
-
};
|
82
|
-
|
83
|
-
template <>
|
84
|
-
struct BOOST_ITERATOR_CATEGORY<int>
|
85
|
-
{
|
86
|
-
typedef void type;
|
87
|
-
};
|
88
|
-
# endif
|
52
|
+
using iterators::iterator_value;
|
53
|
+
using iterators::iterator_reference;
|
54
|
+
using iterators::iterator_pointer;
|
55
|
+
using iterators::iterator_difference;
|
56
|
+
using iterators::iterator_category;
|
89
57
|
|
90
|
-
} // namespace boost
|
58
|
+
} // namespace boost
|
91
59
|
|
92
60
|
#endif // ITERATOR_TRAITS_DWA200347_HPP
|
@@ -1,41 +1,26 @@
|
|
1
1
|
// Copyright David Abrahams 2003. Use, modification and distribution is
|
2
2
|
// subject to the Boost Software License, Version 1.0. (See accompanying
|
3
3
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
4
|
-
#ifndef
|
5
|
-
# define
|
4
|
+
#ifndef BOOST_ITERATOR_MINIMUM_CATEGORY_HPP_INCLUDED_
|
5
|
+
# define BOOST_ITERATOR_MINIMUM_CATEGORY_HPP_INCLUDED_
|
6
6
|
|
7
|
+
# include <boost/static_assert.hpp>
|
7
8
|
# include <boost/type_traits/is_convertible.hpp>
|
8
9
|
# include <boost/type_traits/is_same.hpp>
|
9
10
|
|
11
|
+
# include <boost/mpl/placeholders.hpp>
|
10
12
|
# include <boost/mpl/aux_/lambda_support.hpp>
|
11
13
|
|
12
|
-
namespace boost {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
//
|
17
|
-
// For compilers not supporting is_convertible this only
|
18
|
-
// works with the new boost return and traversal category
|
19
|
-
// types. The exact boost _types_ are required. No derived types
|
20
|
-
// will work.
|
21
|
-
//
|
22
|
-
//
|
14
|
+
namespace boost {
|
15
|
+
namespace iterators {
|
16
|
+
namespace detail {
|
17
|
+
|
23
18
|
template <bool GreaterEqual, bool LessEqual>
|
24
|
-
struct minimum_category_impl
|
25
|
-
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
26
|
-
{
|
27
|
-
template <class T1, class T2> struct apply
|
28
|
-
{
|
29
|
-
typedef T2 type;
|
30
|
-
};
|
31
|
-
typedef void type;
|
32
|
-
}
|
33
|
-
# endif
|
34
|
-
;
|
19
|
+
struct minimum_category_impl;
|
35
20
|
|
36
21
|
template <class T1, class T2>
|
37
22
|
struct error_not_related_by_convertibility;
|
38
|
-
|
23
|
+
|
39
24
|
template <>
|
40
25
|
struct minimum_category_impl<true,false>
|
41
26
|
{
|
@@ -68,31 +53,31 @@ template <>
|
|
68
53
|
struct minimum_category_impl<false,false>
|
69
54
|
{
|
70
55
|
template <class T1, class T2> struct apply
|
71
|
-
|
56
|
+
: error_not_related_by_convertibility<T1,T2>
|
72
57
|
{
|
73
58
|
};
|
74
59
|
};
|
75
60
|
|
61
|
+
} // namespace detail
|
62
|
+
|
63
|
+
//
|
64
|
+
// Returns the minimum category type or fails to compile
|
65
|
+
// if T1 and T2 are unrelated.
|
66
|
+
//
|
76
67
|
template <class T1 = mpl::_1, class T2 = mpl::_2>
|
77
68
|
struct minimum_category
|
78
69
|
{
|
79
|
-
typedef minimum_category_impl<
|
80
|
-
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
|
81
|
-
is_same<T2,int>::value ||
|
82
|
-
# endif
|
70
|
+
typedef boost::iterators::detail::minimum_category_impl<
|
83
71
|
::boost::is_convertible<T1,T2>::value
|
84
72
|
, ::boost::is_convertible<T2,T1>::value
|
85
|
-
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
|
86
|
-
|| is_same<T1,int>::value
|
87
|
-
# endif
|
88
73
|
> outer;
|
89
74
|
|
90
75
|
typedef typename outer::template apply<T1,T2> inner;
|
91
76
|
typedef typename inner::type type;
|
92
|
-
|
77
|
+
|
93
78
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,minimum_category,(T1,T2))
|
94
79
|
};
|
95
|
-
|
80
|
+
|
96
81
|
template <>
|
97
82
|
struct minimum_category<mpl::_1,mpl::_2>
|
98
83
|
{
|
@@ -103,14 +88,8 @@ struct minimum_category<mpl::_1,mpl::_2>
|
|
103
88
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2))
|
104
89
|
};
|
105
90
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
{
|
110
|
-
typedef int type;
|
111
|
-
};
|
112
|
-
# endif
|
113
|
-
|
114
|
-
}} // namespace boost::detail
|
91
|
+
} // namespace iterators
|
92
|
+
|
93
|
+
} // namespace boost
|
115
94
|
|
116
|
-
#endif //
|
95
|
+
#endif // BOOST_ITERATOR_MINIMUM_CATEGORY_HPP_INCLUDED_
|
@@ -11,8 +11,8 @@
|
|
11
11
|
#include <boost/iterator.hpp>
|
12
12
|
#include <boost/iterator/iterator_adaptor.hpp>
|
13
13
|
|
14
|
-
namespace boost
|
15
|
-
{
|
14
|
+
namespace boost {
|
15
|
+
namespace iterators {
|
16
16
|
|
17
17
|
//
|
18
18
|
//
|
@@ -28,7 +28,7 @@ namespace boost
|
|
28
28
|
public:
|
29
29
|
reverse_iterator() {}
|
30
30
|
|
31
|
-
explicit reverse_iterator(Iterator x)
|
31
|
+
explicit reverse_iterator(Iterator x)
|
32
32
|
: super_t(x) {}
|
33
33
|
|
34
34
|
template<class OtherIterator>
|
@@ -41,7 +41,7 @@ namespace boost
|
|
41
41
|
|
42
42
|
private:
|
43
43
|
typename super_t::reference dereference() const { return *boost::prior(this->base()); }
|
44
|
-
|
44
|
+
|
45
45
|
void increment() { --this->base_reference(); }
|
46
46
|
void decrement() { ++this->base_reference(); }
|
47
47
|
|
@@ -59,11 +59,16 @@ namespace boost
|
|
59
59
|
};
|
60
60
|
|
61
61
|
template <class BidirectionalIterator>
|
62
|
-
reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
|
62
|
+
inline reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
|
63
63
|
{
|
64
64
|
return reverse_iterator<BidirectionalIterator>(x);
|
65
65
|
}
|
66
66
|
|
67
|
+
} // namespace iterators
|
68
|
+
|
69
|
+
using iterators::reverse_iterator;
|
70
|
+
using iterators::make_reverse_iterator;
|
71
|
+
|
67
72
|
} // namespace boost
|
68
73
|
|
69
74
|
#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP
|
@@ -26,16 +26,17 @@
|
|
26
26
|
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
|
27
27
|
# include <boost/type_traits/is_base_and_derived.hpp>
|
28
28
|
|
29
|
-
#endif
|
29
|
+
#endif
|
30
30
|
#include <boost/iterator/detail/config_def.hpp>
|
31
31
|
|
32
32
|
|
33
|
-
namespace boost
|
34
|
-
{
|
33
|
+
namespace boost {
|
34
|
+
namespace iterators {
|
35
|
+
|
35
36
|
template <class UnaryFunction, class Iterator, class Reference = use_default, class Value = use_default>
|
36
37
|
class transform_iterator;
|
37
38
|
|
38
|
-
namespace detail
|
39
|
+
namespace detail
|
39
40
|
{
|
40
41
|
// Compute the iterator_adaptor instantiation to be used for transform_iterator
|
41
42
|
template <class UnaryFunc, class Iterator, class Reference, class Value>
|
@@ -72,10 +73,10 @@ namespace boost
|
|
72
73
|
|
73
74
|
template <class UnaryFunc, class Iterator, class Reference, class Value>
|
74
75
|
class transform_iterator
|
75
|
-
: public boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
|
76
|
+
: public boost::iterators::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
|
76
77
|
{
|
77
78
|
typedef typename
|
78
|
-
boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
|
79
|
+
boost::iterators::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
|
79
80
|
super_t;
|
80
81
|
|
81
82
|
friend class iterator_core_access;
|
@@ -95,7 +96,7 @@ namespace boost
|
|
95
96
|
// don't provide this constructor if UnaryFunc is a
|
96
97
|
// function pointer type, since it will be 0. Too dangerous.
|
97
98
|
BOOST_STATIC_ASSERT(is_class<UnaryFunc>::value);
|
98
|
-
#endif
|
99
|
+
#endif
|
99
100
|
}
|
100
101
|
|
101
102
|
template <
|
@@ -108,7 +109,7 @@ namespace boost
|
|
108
109
|
, typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
|
109
110
|
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
|
110
111
|
, typename enable_if_convertible<OtherUnaryFunction, UnaryFunc>::type* = 0
|
111
|
-
#endif
|
112
|
+
#endif
|
112
113
|
)
|
113
114
|
: super_t(t.base()), m_f(t.functor())
|
114
115
|
{}
|
@@ -126,7 +127,7 @@ namespace boost
|
|
126
127
|
};
|
127
128
|
|
128
129
|
template <class UnaryFunc, class Iterator>
|
129
|
-
transform_iterator<UnaryFunc, Iterator>
|
130
|
+
inline transform_iterator<UnaryFunc, Iterator>
|
130
131
|
make_transform_iterator(Iterator it, UnaryFunc fun)
|
131
132
|
{
|
132
133
|
return transform_iterator<UnaryFunc, Iterator>(it, fun);
|
@@ -140,16 +141,9 @@ namespace boost
|
|
140
141
|
// function pointer in the iterator be 0, leading to a runtime
|
141
142
|
// crash.
|
142
143
|
template <class UnaryFunc, class Iterator>
|
143
|
-
|
144
|
-
typename mpl::if_<
|
145
|
-
#else
|
146
|
-
typename iterators::enable_if<
|
147
|
-
#endif
|
144
|
+
inline typename iterators::enable_if<
|
148
145
|
is_class<UnaryFunc> // We should probably find a cheaper test than is_class<>
|
149
146
|
, transform_iterator<UnaryFunc, Iterator>
|
150
|
-
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
|
151
|
-
, int[3]
|
152
|
-
#endif
|
153
147
|
>::type
|
154
148
|
make_transform_iterator(Iterator it)
|
155
149
|
{
|
@@ -158,13 +152,18 @@ namespace boost
|
|
158
152
|
|
159
153
|
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
|
160
154
|
template <class Return, class Argument, class Iterator>
|
161
|
-
transform_iterator< Return (*)(Argument), Iterator, Return>
|
155
|
+
inline transform_iterator< Return (*)(Argument), Iterator, Return>
|
162
156
|
make_transform_iterator(Iterator it, Return (*fun)(Argument))
|
163
157
|
{
|
164
158
|
return transform_iterator<Return (*)(Argument), Iterator, Return>(it, fun);
|
165
159
|
}
|
166
160
|
#endif
|
167
161
|
|
162
|
+
} // namespace iterators
|
163
|
+
|
164
|
+
using iterators::transform_iterator;
|
165
|
+
using iterators::make_transform_iterator;
|
166
|
+
|
168
167
|
} // namespace boost
|
169
168
|
|
170
169
|
#include <boost/iterator/detail/config_undef.hpp>
|
@@ -1,16 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
// MS compatible compilers support #pragma once
|
5
|
-
|
6
|
-
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
7
|
-
# pragma once
|
8
|
-
#endif
|
9
|
-
|
10
|
-
// Boost lexical_cast.hpp header -------------------------------------------//
|
1
|
+
// Copyright Kevlin Henney, 2000-2005.
|
2
|
+
// Copyright Alexander Nasonov, 2006-2010.
|
3
|
+
// Copyright Antony Polukhin, 2011-2014.
|
11
4
|
//
|
12
|
-
//
|
13
|
-
//
|
5
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
6
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
7
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
14
8
|
//
|
15
9
|
// what: lexical_cast custom keyword cast
|
16
10
|
// who: contributed by Kevlin Henney,
|
@@ -19,2522 +13,53 @@
|
|
19
13
|
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
|
20
14
|
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
|
21
15
|
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
|
22
|
-
// when: November 2000, March 2003, June 2005, June 2006, March 2011 -
|
23
|
-
|
24
|
-
#include <boost/config.hpp>
|
25
|
-
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
|
26
|
-
#define BOOST_LCAST_NO_WCHAR_T
|
27
|
-
#endif
|
28
|
-
|
29
|
-
#include <climits>
|
30
|
-
#include <cstddef>
|
31
|
-
#include <string>
|
32
|
-
#include <cstring>
|
33
|
-
#include <cstdio>
|
34
|
-
#include <typeinfo>
|
35
|
-
#include <exception>
|
36
|
-
#include <boost/limits.hpp>
|
37
|
-
#include <boost/mpl/if.hpp>
|
38
|
-
#include <boost/throw_exception.hpp>
|
39
|
-
#include <boost/type_traits/ice.hpp>
|
40
|
-
#include <boost/type_traits/is_pointer.hpp>
|
41
|
-
#include <boost/static_assert.hpp>
|
42
|
-
#include <boost/detail/lcast_precision.hpp>
|
43
|
-
#include <boost/detail/workaround.hpp>
|
44
|
-
|
45
|
-
|
46
|
-
#ifndef BOOST_NO_STD_LOCALE
|
47
|
-
# include <locale>
|
48
|
-
#else
|
49
|
-
# ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
50
|
-
// Getting error at this point means, that your STL library is old/lame/misconfigured.
|
51
|
-
// If nothing can be done with STL library, define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE,
|
52
|
-
// but beware: lexical_cast will understand only 'C' locale delimeters and thousands
|
53
|
-
// separators.
|
54
|
-
# error "Unable to use <locale> header. Define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE to force "
|
55
|
-
# error "boost::lexical_cast to use only 'C' locale during conversions."
|
56
|
-
# endif
|
57
|
-
#endif
|
58
|
-
|
59
|
-
#ifdef BOOST_NO_STRINGSTREAM
|
60
|
-
#include <strstream>
|
61
|
-
#else
|
62
|
-
#include <sstream>
|
63
|
-
#endif
|
64
|
-
|
65
|
-
#ifdef BOOST_NO_TYPEID
|
66
|
-
#define BOOST_LCAST_THROW_BAD_CAST(S, T) throw_exception(bad_lexical_cast())
|
67
|
-
#else
|
68
|
-
#define BOOST_LCAST_THROW_BAD_CAST(Source, Target) \
|
69
|
-
throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)))
|
70
|
-
#endif
|
71
|
-
|
72
|
-
#if (defined(BOOST_LCAST_HAS_INT128) && !defined(__GNUC__)) || GCC_VERSION > 40700
|
73
|
-
#define BOOST_LCAST_HAS_INT128
|
74
|
-
#endif
|
75
|
-
|
76
|
-
|
77
|
-
namespace boost
|
78
|
-
{
|
79
|
-
// exception used to indicate runtime lexical_cast failure
|
80
|
-
class BOOST_SYMBOL_VISIBLE bad_lexical_cast :
|
81
|
-
// workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0
|
82
|
-
#if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
|
83
|
-
public std::exception
|
84
|
-
#else
|
85
|
-
public std::bad_cast
|
86
|
-
#endif
|
87
|
-
|
88
|
-
#if defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x560 )
|
89
|
-
// under bcc32 5.5.1 bad_cast doesn't derive from exception
|
90
|
-
, public std::exception
|
91
|
-
#endif
|
92
|
-
|
93
|
-
{
|
94
|
-
public:
|
95
|
-
bad_lexical_cast() BOOST_NOEXCEPT :
|
96
|
-
#ifndef BOOST_NO_TYPEID
|
97
|
-
source(&typeid(void)), target(&typeid(void))
|
98
|
-
#else
|
99
|
-
source(0), target(0) // this breaks getters
|
100
|
-
#endif
|
101
|
-
{
|
102
|
-
}
|
103
|
-
|
104
|
-
bad_lexical_cast(
|
105
|
-
const std::type_info &source_type_arg,
|
106
|
-
const std::type_info &target_type_arg) BOOST_NOEXCEPT :
|
107
|
-
source(&source_type_arg), target(&target_type_arg)
|
108
|
-
{
|
109
|
-
}
|
16
|
+
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
|
110
17
|
|
111
|
-
|
112
|
-
|
113
|
-
return *source;
|
114
|
-
}
|
115
|
-
const std::type_info &target_type() const
|
116
|
-
{
|
117
|
-
return *target;
|
118
|
-
}
|
119
|
-
|
120
|
-
#ifndef BOOST_NO_CXX11_NOEXCEPT
|
121
|
-
virtual const char *what() const noexcept
|
122
|
-
#else
|
123
|
-
virtual const char *what() const throw()
|
124
|
-
#endif
|
125
|
-
{
|
126
|
-
return "bad lexical cast: "
|
127
|
-
"source type value could not be interpreted as target";
|
128
|
-
}
|
18
|
+
#ifndef BOOST_LEXICAL_CAST_INCLUDED
|
19
|
+
#define BOOST_LEXICAL_CAST_INCLUDED
|
129
20
|
|
130
|
-
#
|
131
|
-
|
132
|
-
#
|
133
|
-
virtual ~bad_lexical_cast() throw()
|
21
|
+
#include <boost/config.hpp>
|
22
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
23
|
+
# pragma once
|
134
24
|
#endif
|
135
|
-
{}
|
136
|
-
private:
|
137
|
-
const std::type_info *source;
|
138
|
-
const std::type_info *target;
|
139
|
-
};
|
140
25
|
|
141
|
-
|
142
|
-
|
143
|
-
template <typename TargetChar, typename SourceChar>
|
144
|
-
struct widest_char
|
145
|
-
{
|
146
|
-
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
147
|
-
(sizeof(TargetChar) > sizeof(SourceChar))
|
148
|
-
, TargetChar
|
149
|
-
, SourceChar >::type type;
|
150
|
-
};
|
151
|
-
}
|
152
|
-
} // namespace boost
|
153
|
-
|
154
|
-
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__SUNPRO_CC) && !defined(__PGIC__)
|
155
|
-
|
156
|
-
#include <cmath>
|
157
|
-
#include <istream>
|
158
|
-
|
159
|
-
#ifndef BOOST_NO_CXX11_HDR_ARRAY
|
160
|
-
#include <array>
|
26
|
+
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
|
27
|
+
#define BOOST_LCAST_NO_WCHAR_T
|
161
28
|
#endif
|
162
29
|
|
163
|
-
#include <boost/array.hpp>
|
164
|
-
#include <boost/numeric/conversion/cast.hpp>
|
165
|
-
#include <boost/type_traits/make_unsigned.hpp>
|
166
|
-
#include <boost/type_traits/is_signed.hpp>
|
167
|
-
#include <boost/type_traits/is_integral.hpp>
|
168
|
-
#include <boost/type_traits/is_arithmetic.hpp>
|
169
|
-
#include <boost/type_traits/remove_pointer.hpp>
|
170
|
-
#include <boost/type_traits/has_left_shift.hpp>
|
171
|
-
#include <boost/type_traits/has_right_shift.hpp>
|
172
|
-
#include <boost/math/special_functions/sign.hpp>
|
173
|
-
#include <boost/math/special_functions/fpclassify.hpp>
|
174
30
|
#include <boost/range/iterator_range_core.hpp>
|
175
|
-
#include <boost/
|
176
|
-
#include <boost/
|
177
|
-
#ifndef BOOST_NO_CWCHAR
|
178
|
-
# include <cwchar>
|
179
|
-
#endif
|
180
|
-
|
181
|
-
namespace boost {
|
182
|
-
|
183
|
-
namespace detail // is_char_or_wchar<...>
|
184
|
-
{
|
185
|
-
// returns true, if T is one of the character types
|
186
|
-
template < typename T >
|
187
|
-
struct is_char_or_wchar
|
188
|
-
{
|
189
|
-
typedef boost::type_traits::ice_or<
|
190
|
-
boost::is_same< T, char >::value,
|
191
|
-
#ifndef BOOST_LCAST_NO_WCHAR_T
|
192
|
-
boost::is_same< T, wchar_t >::value,
|
193
|
-
#endif
|
194
|
-
#ifndef BOOST_NO_CXX11_CHAR16_T
|
195
|
-
boost::is_same< T, char16_t >::value,
|
196
|
-
#endif
|
197
|
-
#ifndef BOOST_NO_CXX11_CHAR32_T
|
198
|
-
boost::is_same< T, char32_t >::value,
|
199
|
-
#endif
|
200
|
-
boost::is_same< T, unsigned char >::value,
|
201
|
-
boost::is_same< T, signed char >::value
|
202
|
-
> result_type;
|
203
|
-
|
204
|
-
BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
|
205
|
-
};
|
206
|
-
}
|
207
|
-
|
208
|
-
namespace detail // normalize_single_byte_char<Char>
|
209
|
-
{
|
210
|
-
// Converts signed/unsigned char to char
|
211
|
-
template < class Char >
|
212
|
-
struct normalize_single_byte_char
|
213
|
-
{
|
214
|
-
typedef Char type;
|
215
|
-
};
|
216
|
-
|
217
|
-
template <>
|
218
|
-
struct normalize_single_byte_char< signed char >
|
219
|
-
{
|
220
|
-
typedef char type;
|
221
|
-
};
|
222
|
-
|
223
|
-
template <>
|
224
|
-
struct normalize_single_byte_char< unsigned char >
|
225
|
-
{
|
226
|
-
typedef char type;
|
227
|
-
};
|
228
|
-
}
|
229
|
-
|
230
|
-
namespace detail // deduce_character_type_later<T>
|
231
|
-
{
|
232
|
-
// Helper type, meaning that stram character for T must be deduced
|
233
|
-
// at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
|
234
|
-
template < class T > struct deduce_character_type_later {};
|
235
|
-
}
|
236
|
-
|
237
|
-
namespace detail // stream_char_common<T>
|
238
|
-
{
|
239
|
-
// Selectors to choose stream character type (common for Source and Target)
|
240
|
-
// Returns one of char, wchar_t, char16_t, char32_t or deduce_character_type_later<T> types
|
241
|
-
// Executed on Stage 1 (See deduce_source_char<T> and deduce_target_char<T>)
|
242
|
-
template < typename Type >
|
243
|
-
struct stream_char_common: public boost::mpl::if_c<
|
244
|
-
boost::detail::is_char_or_wchar< Type >::value,
|
245
|
-
Type,
|
246
|
-
boost::detail::deduce_character_type_later< Type >
|
247
|
-
> {};
|
248
|
-
|
249
|
-
template < typename Char >
|
250
|
-
struct stream_char_common< Char* >: public boost::mpl::if_c<
|
251
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
252
|
-
Char,
|
253
|
-
boost::detail::deduce_character_type_later< Char* >
|
254
|
-
> {};
|
255
|
-
|
256
|
-
template < typename Char >
|
257
|
-
struct stream_char_common< const Char* >: public boost::mpl::if_c<
|
258
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
259
|
-
Char,
|
260
|
-
boost::detail::deduce_character_type_later< const Char* >
|
261
|
-
> {};
|
262
|
-
|
263
|
-
template < typename Char >
|
264
|
-
struct stream_char_common< boost::iterator_range< Char* > >: public boost::mpl::if_c<
|
265
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
266
|
-
Char,
|
267
|
-
boost::detail::deduce_character_type_later< boost::iterator_range< Char* > >
|
268
|
-
> {};
|
269
|
-
|
270
|
-
template < typename Char >
|
271
|
-
struct stream_char_common< boost::iterator_range< const Char* > >: public boost::mpl::if_c<
|
272
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
273
|
-
Char,
|
274
|
-
boost::detail::deduce_character_type_later< boost::iterator_range< const Char* > >
|
275
|
-
> {};
|
276
|
-
|
277
|
-
template < class Char, class Traits, class Alloc >
|
278
|
-
struct stream_char_common< std::basic_string< Char, Traits, Alloc > >
|
279
|
-
{
|
280
|
-
typedef Char type;
|
281
|
-
};
|
282
|
-
|
283
|
-
template < class Char, class Traits, class Alloc >
|
284
|
-
struct stream_char_common< boost::container::basic_string< Char, Traits, Alloc > >
|
285
|
-
{
|
286
|
-
typedef Char type;
|
287
|
-
};
|
288
|
-
|
289
|
-
template < typename Char, std::size_t N >
|
290
|
-
struct stream_char_common< boost::array< Char, N > >: public boost::mpl::if_c<
|
291
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
292
|
-
Char,
|
293
|
-
boost::detail::deduce_character_type_later< boost::array< Char, N > >
|
294
|
-
> {};
|
295
|
-
|
296
|
-
template < typename Char, std::size_t N >
|
297
|
-
struct stream_char_common< boost::array< const Char, N > >: public boost::mpl::if_c<
|
298
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
299
|
-
Char,
|
300
|
-
boost::detail::deduce_character_type_later< boost::array< const Char, N > >
|
301
|
-
> {};
|
302
|
-
|
303
|
-
#ifndef BOOST_NO_CXX11_HDR_ARRAY
|
304
|
-
template < typename Char, std::size_t N >
|
305
|
-
struct stream_char_common< std::array<Char, N > >: public boost::mpl::if_c<
|
306
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
307
|
-
Char,
|
308
|
-
boost::detail::deduce_character_type_later< std::array< Char, N > >
|
309
|
-
> {};
|
310
|
-
|
311
|
-
template < typename Char, std::size_t N >
|
312
|
-
struct stream_char_common< std::array< const Char, N > >: public boost::mpl::if_c<
|
313
|
-
boost::detail::is_char_or_wchar< Char >::value,
|
314
|
-
Char,
|
315
|
-
boost::detail::deduce_character_type_later< std::array< const Char, N > >
|
316
|
-
> {};
|
317
|
-
#endif
|
318
|
-
|
319
|
-
#ifdef BOOST_LCAST_HAS_INT128
|
320
|
-
template <> struct stream_char_common< boost::int128_type >: public boost::mpl::identity< char > {};
|
321
|
-
template <> struct stream_char_common< boost::uint128_type >: public boost::mpl::identity< char > {};
|
322
|
-
#endif
|
323
|
-
|
324
|
-
#if !defined(BOOST_LCAST_NO_WCHAR_T) && defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
325
|
-
template <>
|
326
|
-
struct stream_char_common< wchar_t >
|
327
|
-
{
|
328
|
-
typedef char type;
|
329
|
-
};
|
330
|
-
#endif
|
331
|
-
}
|
332
|
-
|
333
|
-
namespace detail // deduce_source_char_impl<T>
|
334
|
-
{
|
335
|
-
// If type T is `deduce_character_type_later` type, then tries to deduce
|
336
|
-
// character type using boost::has_left_shift<T> metafunction.
|
337
|
-
// Otherwise supplied type T is a character type, that must be normalized
|
338
|
-
// using normalize_single_byte_char<Char>.
|
339
|
-
// Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
|
340
|
-
template < class Char >
|
341
|
-
struct deduce_source_char_impl
|
342
|
-
{
|
343
|
-
typedef BOOST_DEDUCED_TYPENAME boost::detail::normalize_single_byte_char< Char >::type type;
|
344
|
-
};
|
345
|
-
|
346
|
-
template < class T >
|
347
|
-
struct deduce_source_char_impl< deduce_character_type_later< T > >
|
348
|
-
{
|
349
|
-
typedef boost::has_left_shift< std::basic_ostream< char >, T > result_t;
|
350
|
-
|
351
|
-
#if defined(BOOST_LCAST_NO_WCHAR_T)
|
352
|
-
BOOST_STATIC_ASSERT_MSG((result_t::value),
|
353
|
-
"Source type is not std::ostream`able and std::wostream`s are not supported by your STL implementation");
|
354
|
-
typedef char type;
|
355
|
-
#else
|
356
|
-
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
357
|
-
result_t::value, char, wchar_t
|
358
|
-
>::type type;
|
359
|
-
|
360
|
-
BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_left_shift< std::basic_ostream< type >, T >::value),
|
361
|
-
"Source type is neither std::ostream`able nor std::wostream`able");
|
362
|
-
#endif
|
363
|
-
};
|
364
|
-
}
|
365
|
-
|
366
|
-
namespace detail // deduce_target_char_impl<T>
|
367
|
-
{
|
368
|
-
// If type T is `deduce_character_type_later` type, then tries to deduce
|
369
|
-
// character type using boost::has_right_shift<T> metafunction.
|
370
|
-
// Otherwise supplied type T is a character type, that must be normalized
|
371
|
-
// using normalize_single_byte_char<Char>.
|
372
|
-
// Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
|
373
|
-
template < class Char >
|
374
|
-
struct deduce_target_char_impl
|
375
|
-
{
|
376
|
-
typedef BOOST_DEDUCED_TYPENAME normalize_single_byte_char< Char >::type type;
|
377
|
-
};
|
378
|
-
|
379
|
-
template < class T >
|
380
|
-
struct deduce_target_char_impl< deduce_character_type_later<T> >
|
381
|
-
{
|
382
|
-
typedef boost::has_right_shift<std::basic_istream<char>, T > result_t;
|
383
|
-
|
384
|
-
#if defined(BOOST_LCAST_NO_WCHAR_T)
|
385
|
-
BOOST_STATIC_ASSERT_MSG((result_t::value),
|
386
|
-
"Target type is not std::istream`able and std::wistream`s are not supported by your STL implementation");
|
387
|
-
typedef char type;
|
388
|
-
#else
|
389
|
-
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
390
|
-
result_t::value, char, wchar_t
|
391
|
-
>::type type;
|
392
|
-
|
393
|
-
BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift<std::basic_istream<wchar_t>, T >::value),
|
394
|
-
"Target type is neither std::istream`able nor std::wistream`able");
|
395
|
-
#endif
|
396
|
-
};
|
397
|
-
}
|
398
|
-
|
399
|
-
namespace detail // deduce_target_char<T> and deduce_source_char<T>
|
400
|
-
{
|
401
|
-
// We deduce stream character types in two stages.
|
402
|
-
//
|
403
|
-
// Stage 1 is common for Target and Source. At Stage 1 we get
|
404
|
-
// non normalized character type (may contain unsigned/signed char)
|
405
|
-
// or deduce_character_type_later<T> where T is the original type.
|
406
|
-
// Stage 1 is executed by stream_char_common<T>
|
407
|
-
//
|
408
|
-
// At Stage 2 we normalize character types or try to deduce character
|
409
|
-
// type using metafunctions.
|
410
|
-
// Stage 2 is executed by deduce_target_char_impl<T> and
|
411
|
-
// deduce_source_char_impl<T>
|
412
|
-
//
|
413
|
-
// deduce_target_char<T> and deduce_source_char<T> functions combine
|
414
|
-
// both stages
|
415
|
-
|
416
|
-
template < class T >
|
417
|
-
struct deduce_target_char
|
418
|
-
{
|
419
|
-
typedef BOOST_DEDUCED_TYPENAME stream_char_common< T >::type stage1_type;
|
420
|
-
typedef BOOST_DEDUCED_TYPENAME deduce_target_char_impl< stage1_type >::type stage2_type;
|
421
|
-
|
422
|
-
typedef stage2_type type;
|
423
|
-
};
|
424
|
-
|
425
|
-
template < class T >
|
426
|
-
struct deduce_source_char
|
427
|
-
{
|
428
|
-
typedef BOOST_DEDUCED_TYPENAME stream_char_common< T >::type stage1_type;
|
429
|
-
typedef BOOST_DEDUCED_TYPENAME deduce_source_char_impl< stage1_type >::type stage2_type;
|
430
|
-
|
431
|
-
typedef stage2_type type;
|
432
|
-
};
|
433
|
-
}
|
434
|
-
|
435
|
-
namespace detail // deduce_char_traits template
|
436
|
-
{
|
437
|
-
// We are attempting to get char_traits<> from Source or Tagret
|
438
|
-
// template parameter. Otherwise we'll be using std::char_traits<Char>
|
439
|
-
template < class Char, class Target, class Source >
|
440
|
-
struct deduce_char_traits
|
441
|
-
{
|
442
|
-
typedef std::char_traits< Char > type;
|
443
|
-
};
|
444
|
-
|
445
|
-
template < class Char, class Traits, class Alloc, class Source >
|
446
|
-
struct deduce_char_traits< Char
|
447
|
-
, std::basic_string< Char, Traits, Alloc >
|
448
|
-
, Source
|
449
|
-
>
|
450
|
-
{
|
451
|
-
typedef Traits type;
|
452
|
-
};
|
453
|
-
|
454
|
-
template < class Char, class Target, class Traits, class Alloc >
|
455
|
-
struct deduce_char_traits< Char
|
456
|
-
, Target
|
457
|
-
, std::basic_string< Char, Traits, Alloc >
|
458
|
-
>
|
459
|
-
{
|
460
|
-
typedef Traits type;
|
461
|
-
};
|
462
|
-
|
463
|
-
template < class Char, class Traits, class Alloc, class Source >
|
464
|
-
struct deduce_char_traits< Char
|
465
|
-
, boost::container::basic_string< Char, Traits, Alloc >
|
466
|
-
, Source
|
467
|
-
>
|
468
|
-
{
|
469
|
-
typedef Traits type;
|
470
|
-
};
|
471
|
-
|
472
|
-
template < class Char, class Target, class Traits, class Alloc >
|
473
|
-
struct deduce_char_traits< Char
|
474
|
-
, Target
|
475
|
-
, boost::container::basic_string< Char, Traits, Alloc >
|
476
|
-
>
|
477
|
-
{
|
478
|
-
typedef Traits type;
|
479
|
-
};
|
480
|
-
|
481
|
-
template < class Char, class Traits, class Alloc1, class Alloc2 >
|
482
|
-
struct deduce_char_traits< Char
|
483
|
-
, std::basic_string< Char, Traits, Alloc1 >
|
484
|
-
, std::basic_string< Char, Traits, Alloc2 >
|
485
|
-
>
|
486
|
-
{
|
487
|
-
typedef Traits type;
|
488
|
-
};
|
489
|
-
|
490
|
-
template<class Char, class Traits, class Alloc1, class Alloc2>
|
491
|
-
struct deduce_char_traits< Char
|
492
|
-
, boost::container::basic_string< Char, Traits, Alloc1 >
|
493
|
-
, boost::container::basic_string< Char, Traits, Alloc2 >
|
494
|
-
>
|
495
|
-
{
|
496
|
-
typedef Traits type;
|
497
|
-
};
|
498
|
-
|
499
|
-
template < class Char, class Traits, class Alloc1, class Alloc2 >
|
500
|
-
struct deduce_char_traits< Char
|
501
|
-
, boost::container::basic_string< Char, Traits, Alloc1 >
|
502
|
-
, std::basic_string< Char, Traits, Alloc2 >
|
503
|
-
>
|
504
|
-
{
|
505
|
-
typedef Traits type;
|
506
|
-
};
|
507
|
-
|
508
|
-
template < class Char, class Traits, class Alloc1, class Alloc2 >
|
509
|
-
struct deduce_char_traits< Char
|
510
|
-
, std::basic_string< Char, Traits, Alloc1 >
|
511
|
-
, boost::container::basic_string< Char, Traits, Alloc2 >
|
512
|
-
>
|
513
|
-
{
|
514
|
-
typedef Traits type;
|
515
|
-
};
|
516
|
-
}
|
517
|
-
|
518
|
-
namespace detail // array_to_pointer_decay<T>
|
519
|
-
{
|
520
|
-
template<class T>
|
521
|
-
struct array_to_pointer_decay
|
522
|
-
{
|
523
|
-
typedef T type;
|
524
|
-
};
|
525
|
-
|
526
|
-
template<class T, std::size_t N>
|
527
|
-
struct array_to_pointer_decay<T[N]>
|
528
|
-
{
|
529
|
-
typedef const T * type;
|
530
|
-
};
|
531
|
-
}
|
532
|
-
|
533
|
-
namespace detail // is_this_float_conversion_optimized<Float, Char>
|
534
|
-
{
|
535
|
-
// this metafunction evaluates to true, if we have optimized comnversion
|
536
|
-
// from Float type to Char array.
|
537
|
-
// Must be in sync with lexical_stream_limited_src<Char, ...>::shl_real_type(...)
|
538
|
-
template <typename Float, typename Char>
|
539
|
-
struct is_this_float_conversion_optimized
|
540
|
-
{
|
541
|
-
typedef boost::type_traits::ice_and<
|
542
|
-
boost::is_float<Float>::value,
|
543
|
-
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
|
544
|
-
boost::type_traits::ice_or<
|
545
|
-
boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value,
|
546
|
-
boost::is_same<Char, wchar_t>::value
|
547
|
-
>::value
|
548
|
-
#else
|
549
|
-
boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value
|
550
|
-
#endif
|
551
|
-
> result_type;
|
552
|
-
|
553
|
-
BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
|
554
|
-
};
|
555
|
-
}
|
556
|
-
|
557
|
-
namespace detail // lcast_src_length
|
558
|
-
{
|
559
|
-
// Return max. length of string representation of Source;
|
560
|
-
template< class Source // Source type of lexical_cast.
|
561
|
-
>
|
562
|
-
struct lcast_src_length
|
563
|
-
{
|
564
|
-
BOOST_STATIC_CONSTANT(std::size_t, value = 1);
|
565
|
-
// To check coverage, build the test with
|
566
|
-
// bjam --v2 profile optimization=off
|
567
|
-
static void check_coverage() {}
|
568
|
-
};
|
569
|
-
|
570
|
-
// Helper for integral types.
|
571
|
-
// Notes on length calculation:
|
572
|
-
// Max length for 32bit int with grouping "\1" and thousands_sep ',':
|
573
|
-
// "-2,1,4,7,4,8,3,6,4,7"
|
574
|
-
// ^ - is_signed
|
575
|
-
// ^ - 1 digit not counted by digits10
|
576
|
-
// ^^^^^^^^^^^^^^^^^^ - digits10 * 2
|
577
|
-
//
|
578
|
-
// Constant is_specialized is used instead of constant 1
|
579
|
-
// to prevent buffer overflow in a rare case when
|
580
|
-
// <boost/limits.hpp> doesn't add missing specialization for
|
581
|
-
// numeric_limits<T> for some integral type T.
|
582
|
-
// When is_specialized is false, the whole expression is 0.
|
583
|
-
template<class Source>
|
584
|
-
struct lcast_src_length_integral
|
585
|
-
{
|
586
|
-
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
587
|
-
BOOST_STATIC_CONSTANT(std::size_t, value =
|
588
|
-
std::numeric_limits<Source>::is_signed +
|
589
|
-
std::numeric_limits<Source>::is_specialized + /* == 1 */
|
590
|
-
std::numeric_limits<Source>::digits10 * 2
|
591
|
-
);
|
592
|
-
#else
|
593
|
-
BOOST_STATIC_CONSTANT(std::size_t, value = 156);
|
594
|
-
BOOST_STATIC_ASSERT(sizeof(Source) * CHAR_BIT <= 256);
|
595
|
-
#endif
|
596
|
-
};
|
597
|
-
|
598
|
-
#define BOOST_LCAST_DEF(T) \
|
599
|
-
template<> struct lcast_src_length<T> \
|
600
|
-
: lcast_src_length_integral<T> \
|
601
|
-
{ static void check_coverage() {} };
|
602
|
-
|
603
|
-
BOOST_LCAST_DEF(short)
|
604
|
-
BOOST_LCAST_DEF(unsigned short)
|
605
|
-
BOOST_LCAST_DEF(int)
|
606
|
-
BOOST_LCAST_DEF(unsigned int)
|
607
|
-
BOOST_LCAST_DEF(long)
|
608
|
-
BOOST_LCAST_DEF(unsigned long)
|
609
|
-
#if defined(BOOST_HAS_LONG_LONG)
|
610
|
-
BOOST_LCAST_DEF(boost::ulong_long_type)
|
611
|
-
BOOST_LCAST_DEF(boost::long_long_type )
|
612
|
-
#elif defined(BOOST_HAS_MS_INT64)
|
613
|
-
BOOST_LCAST_DEF(unsigned __int64)
|
614
|
-
BOOST_LCAST_DEF( __int64)
|
615
|
-
#endif
|
616
|
-
#ifdef BOOST_LCAST_HAS_INT128
|
617
|
-
BOOST_LCAST_DEF(boost::int128_type)
|
618
|
-
BOOST_LCAST_DEF(boost::uint128_type)
|
619
|
-
#endif
|
620
|
-
|
621
|
-
#undef BOOST_LCAST_DEF
|
622
|
-
|
623
|
-
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
624
|
-
// Helper for floating point types.
|
625
|
-
// -1.23456789e-123456
|
626
|
-
// ^ sign
|
627
|
-
// ^ leading digit
|
628
|
-
// ^ decimal point
|
629
|
-
// ^^^^^^^^ lcast_precision<Source>::value
|
630
|
-
// ^ "e"
|
631
|
-
// ^ exponent sign
|
632
|
-
// ^^^^^^ exponent (assumed 6 or less digits)
|
633
|
-
// sign + leading digit + decimal point + "e" + exponent sign == 5
|
634
|
-
template<class Source>
|
635
|
-
struct lcast_src_length_floating
|
636
|
-
{
|
637
|
-
BOOST_STATIC_ASSERT(
|
638
|
-
std::numeric_limits<Source>::max_exponent10 <= 999999L &&
|
639
|
-
std::numeric_limits<Source>::min_exponent10 >= -999999L
|
640
|
-
);
|
641
|
-
BOOST_STATIC_CONSTANT(std::size_t, value =
|
642
|
-
5 + lcast_precision<Source>::value + 6
|
643
|
-
);
|
644
|
-
};
|
645
|
-
|
646
|
-
template<>
|
647
|
-
struct lcast_src_length<float>
|
648
|
-
: lcast_src_length_floating<float>
|
649
|
-
{
|
650
|
-
static void check_coverage() {}
|
651
|
-
};
|
652
|
-
|
653
|
-
template<>
|
654
|
-
struct lcast_src_length<double>
|
655
|
-
: lcast_src_length_floating<double>
|
656
|
-
{
|
657
|
-
static void check_coverage() {}
|
658
|
-
};
|
659
|
-
|
660
|
-
template<>
|
661
|
-
struct lcast_src_length<long double>
|
662
|
-
: lcast_src_length_floating<long double>
|
663
|
-
{
|
664
|
-
static void check_coverage() {}
|
665
|
-
};
|
666
|
-
|
667
|
-
#endif // #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
668
|
-
}
|
669
|
-
|
670
|
-
namespace detail // lexical_cast_stream_traits<Source, Target>
|
671
|
-
{
|
672
|
-
template <class Source, class Target>
|
673
|
-
struct lexical_cast_stream_traits {
|
674
|
-
typedef BOOST_DEDUCED_TYPENAME boost::detail::array_to_pointer_decay<Source>::type src;
|
675
|
-
typedef BOOST_DEDUCED_TYPENAME boost::remove_cv<src>::type no_cv_src;
|
676
|
-
|
677
|
-
typedef boost::detail::deduce_source_char<no_cv_src> deduce_src_char_metafunc;
|
678
|
-
typedef BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::type src_char_t;
|
679
|
-
typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_target_char<Target>::type target_char_t;
|
680
|
-
|
681
|
-
typedef BOOST_DEDUCED_TYPENAME boost::detail::widest_char<
|
682
|
-
target_char_t, src_char_t
|
683
|
-
>::type char_type;
|
684
|
-
|
685
|
-
#if !defined(BOOST_NO_CXX11_CHAR16_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
686
|
-
BOOST_STATIC_ASSERT_MSG(( !boost::is_same<char16_t, src_char_t>::value
|
687
|
-
&& !boost::is_same<char16_t, target_char_t>::value),
|
688
|
-
"Your compiler does not have full support for char16_t" );
|
689
|
-
#endif
|
690
|
-
#if !defined(BOOST_NO_CXX11_CHAR32_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
691
|
-
BOOST_STATIC_ASSERT_MSG(( !boost::is_same<char32_t, src_char_t>::value
|
692
|
-
&& !boost::is_same<char32_t, target_char_t>::value),
|
693
|
-
"Your compiler does not have full support for char32_t" );
|
694
|
-
#endif
|
695
|
-
|
696
|
-
typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_char_traits<
|
697
|
-
char_type, Target, no_cv_src
|
698
|
-
>::type traits;
|
699
|
-
|
700
|
-
typedef boost::type_traits::ice_and<
|
701
|
-
boost::is_same<char, src_char_t>::value, // source is not a wide character based type
|
702
|
-
boost::type_traits::ice_ne<sizeof(char), sizeof(target_char_t) >::value, // target type is based on wide character
|
703
|
-
boost::type_traits::ice_not<
|
704
|
-
boost::detail::is_char_or_wchar<no_cv_src>::value // single character widening is optimized
|
705
|
-
>::value // and does not requires stringbuffer
|
706
|
-
> is_string_widening_required_t;
|
707
|
-
|
708
|
-
typedef boost::type_traits::ice_not< boost::type_traits::ice_or<
|
709
|
-
boost::is_integral<no_cv_src>::value,
|
710
|
-
boost::detail::is_this_float_conversion_optimized<no_cv_src, char_type >::value,
|
711
|
-
boost::detail::is_char_or_wchar<
|
712
|
-
BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::stage1_type // if we did not get character type at stage1
|
713
|
-
>::value // then we have no optimization for that type
|
714
|
-
>::value > is_source_input_not_optimized_t;
|
715
|
-
|
716
|
-
// If we have an optimized conversion for
|
717
|
-
// Source, we do not need to construct stringbuf.
|
718
|
-
BOOST_STATIC_CONSTANT(bool, requires_stringbuf =
|
719
|
-
(boost::type_traits::ice_or<
|
720
|
-
is_string_widening_required_t::value, is_source_input_not_optimized_t::value
|
721
|
-
>::value)
|
722
|
-
);
|
723
|
-
|
724
|
-
typedef boost::detail::lcast_src_length<no_cv_src> len_t;
|
725
|
-
};
|
726
|
-
}
|
727
|
-
|
728
|
-
namespace detail // '0', '+' and '-' constants
|
729
|
-
{
|
730
|
-
template < typename Char > struct lcast_char_constants;
|
731
|
-
|
732
|
-
template<>
|
733
|
-
struct lcast_char_constants<char>
|
734
|
-
{
|
735
|
-
BOOST_STATIC_CONSTANT(char, zero = '0');
|
736
|
-
BOOST_STATIC_CONSTANT(char, minus = '-');
|
737
|
-
BOOST_STATIC_CONSTANT(char, plus = '+');
|
738
|
-
BOOST_STATIC_CONSTANT(char, lowercase_e = 'e');
|
739
|
-
BOOST_STATIC_CONSTANT(char, capital_e = 'E');
|
740
|
-
BOOST_STATIC_CONSTANT(char, c_decimal_separator = '.');
|
741
|
-
};
|
742
|
-
|
743
|
-
#ifndef BOOST_LCAST_NO_WCHAR_T
|
744
|
-
template<>
|
745
|
-
struct lcast_char_constants<wchar_t>
|
746
|
-
{
|
747
|
-
BOOST_STATIC_CONSTANT(wchar_t, zero = L'0');
|
748
|
-
BOOST_STATIC_CONSTANT(wchar_t, minus = L'-');
|
749
|
-
BOOST_STATIC_CONSTANT(wchar_t, plus = L'+');
|
750
|
-
BOOST_STATIC_CONSTANT(wchar_t, lowercase_e = L'e');
|
751
|
-
BOOST_STATIC_CONSTANT(wchar_t, capital_e = L'E');
|
752
|
-
BOOST_STATIC_CONSTANT(wchar_t, c_decimal_separator = L'.');
|
753
|
-
};
|
754
|
-
#endif
|
755
|
-
|
756
|
-
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
757
|
-
template<>
|
758
|
-
struct lcast_char_constants<char16_t>
|
759
|
-
{
|
760
|
-
BOOST_STATIC_CONSTANT(char16_t, zero = u'0');
|
761
|
-
BOOST_STATIC_CONSTANT(char16_t, minus = u'-');
|
762
|
-
BOOST_STATIC_CONSTANT(char16_t, plus = u'+');
|
763
|
-
BOOST_STATIC_CONSTANT(char16_t, lowercase_e = u'e');
|
764
|
-
BOOST_STATIC_CONSTANT(char16_t, capital_e = u'E');
|
765
|
-
BOOST_STATIC_CONSTANT(char16_t, c_decimal_separator = u'.');
|
766
|
-
};
|
767
|
-
#endif
|
768
|
-
|
769
|
-
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
770
|
-
template<>
|
771
|
-
struct lcast_char_constants<char32_t>
|
772
|
-
{
|
773
|
-
BOOST_STATIC_CONSTANT(char32_t, zero = U'0');
|
774
|
-
BOOST_STATIC_CONSTANT(char32_t, minus = U'-');
|
775
|
-
BOOST_STATIC_CONSTANT(char32_t, plus = U'+');
|
776
|
-
BOOST_STATIC_CONSTANT(char32_t, lowercase_e = U'e');
|
777
|
-
BOOST_STATIC_CONSTANT(char32_t, capital_e = U'E');
|
778
|
-
BOOST_STATIC_CONSTANT(char32_t, c_decimal_separator = U'.');
|
779
|
-
};
|
780
|
-
#endif
|
781
|
-
}
|
782
|
-
|
783
|
-
namespace detail // lcast_to_unsigned
|
784
|
-
{
|
785
|
-
template<class T>
|
786
|
-
inline
|
787
|
-
BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value) BOOST_NOEXCEPT
|
788
|
-
{
|
789
|
-
typedef BOOST_DEDUCED_TYPENAME boost::make_unsigned<T>::type result_type;
|
790
|
-
return static_cast<result_type>(
|
791
|
-
value < 0 ? 0u - static_cast<result_type>(value) : value
|
792
|
-
);
|
793
|
-
}
|
794
|
-
}
|
795
|
-
|
796
|
-
namespace detail // lcast_put_unsigned
|
797
|
-
{
|
798
|
-
template<class Traits, class T, class CharT>
|
799
|
-
CharT* lcast_put_unsigned(const T n_param, CharT* finish)
|
800
|
-
{
|
801
|
-
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
802
|
-
BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
|
803
|
-
#endif
|
804
|
-
|
805
|
-
typedef typename Traits::int_type int_type;
|
806
|
-
CharT const czero = lcast_char_constants<CharT>::zero;
|
807
|
-
int_type const zero = Traits::to_int_type(czero);
|
808
|
-
BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
809
|
-
(sizeof(int_type) > sizeof(T))
|
810
|
-
, int_type
|
811
|
-
, T
|
812
|
-
>::type n = n_param;
|
813
|
-
|
814
|
-
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
815
|
-
std::locale loc;
|
816
|
-
if (loc != std::locale::classic()) {
|
817
|
-
typedef std::numpunct<CharT> numpunct;
|
818
|
-
numpunct const& np = BOOST_USE_FACET(numpunct, loc);
|
819
|
-
std::string const grouping = np.grouping();
|
820
|
-
std::string::size_type const grouping_size = grouping.size();
|
821
|
-
|
822
|
-
if ( grouping_size && grouping[0] > 0 )
|
823
|
-
{
|
824
|
-
|
825
|
-
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
826
|
-
// Check that ulimited group is unreachable:
|
827
|
-
BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
|
828
|
-
#endif
|
829
|
-
CharT thousands_sep = np.thousands_sep();
|
830
|
-
std::string::size_type group = 0; // current group number
|
831
|
-
char last_grp_size = grouping[0];
|
832
|
-
char left = last_grp_size;
|
833
|
-
|
834
|
-
do
|
835
|
-
{
|
836
|
-
if(left == 0)
|
837
|
-
{
|
838
|
-
++group;
|
839
|
-
if(group < grouping_size)
|
840
|
-
{
|
841
|
-
char const grp_size = grouping[group];
|
842
|
-
last_grp_size = grp_size <= 0 ? static_cast<char>(CHAR_MAX) : grp_size;
|
843
|
-
}
|
844
|
-
|
845
|
-
left = last_grp_size;
|
846
|
-
--finish;
|
847
|
-
Traits::assign(*finish, thousands_sep);
|
848
|
-
}
|
849
|
-
|
850
|
-
--left;
|
851
|
-
|
852
|
-
--finish;
|
853
|
-
int_type const digit = static_cast<int_type>(n % 10U);
|
854
|
-
Traits::assign(*finish, Traits::to_char_type(zero + digit));
|
855
|
-
n /= 10;
|
856
|
-
} while(n);
|
857
|
-
return finish;
|
858
|
-
}
|
859
|
-
}
|
860
|
-
#endif
|
861
|
-
{
|
862
|
-
do
|
863
|
-
{
|
864
|
-
--finish;
|
865
|
-
int_type const digit = static_cast<int_type>(n % 10U);
|
866
|
-
Traits::assign(*finish, Traits::to_char_type(zero + digit));
|
867
|
-
n /= 10;
|
868
|
-
} while(n);
|
869
|
-
}
|
870
|
-
|
871
|
-
return finish;
|
872
|
-
}
|
873
|
-
}
|
874
|
-
|
875
|
-
namespace detail // lcast_ret_unsigned
|
876
|
-
{
|
877
|
-
template<class Traits, class T, class CharT>
|
878
|
-
inline bool lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end)
|
879
|
-
{
|
880
|
-
#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
881
|
-
BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
|
882
|
-
#endif
|
883
|
-
CharT const czero = lcast_char_constants<CharT>::zero;
|
884
|
-
--end;
|
885
|
-
value = 0;
|
886
|
-
|
887
|
-
if (begin > end || *end < czero || *end >= czero + 10)
|
888
|
-
return false;
|
889
|
-
value = static_cast<T>(*end - czero);
|
890
|
-
--end;
|
891
|
-
T multiplier = 1;
|
892
|
-
bool multiplier_overflowed = false;
|
893
|
-
|
894
|
-
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
895
|
-
std::locale loc;
|
896
|
-
if (loc != std::locale::classic()) {
|
897
|
-
typedef std::numpunct<CharT> numpunct;
|
898
|
-
numpunct const& np = BOOST_USE_FACET(numpunct, loc);
|
899
|
-
std::string const& grouping = np.grouping();
|
900
|
-
std::string::size_type const grouping_size = grouping.size();
|
901
|
-
|
902
|
-
/* According to Programming languages - C++
|
903
|
-
* we MUST check for correct grouping
|
904
|
-
*/
|
905
|
-
if (grouping_size && grouping[0] > 0)
|
906
|
-
{
|
907
|
-
unsigned char current_grouping = 0;
|
908
|
-
CharT const thousands_sep = np.thousands_sep();
|
909
|
-
char remained = static_cast<char>(grouping[current_grouping] - 1);
|
910
|
-
bool shall_we_return = true;
|
911
|
-
|
912
|
-
for(;end>=begin; --end)
|
913
|
-
{
|
914
|
-
if (remained) {
|
915
|
-
T const multiplier_10 = static_cast<T>(multiplier * 10);
|
916
|
-
if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
|
917
|
-
|
918
|
-
T const dig_value = static_cast<T>(*end - czero);
|
919
|
-
T const new_sub_value = static_cast<T>(multiplier_10 * dig_value);
|
920
|
-
|
921
|
-
if (*end < czero || *end >= czero + 10
|
922
|
-
/* detecting overflow */
|
923
|
-
|| (dig_value && new_sub_value / dig_value != multiplier_10)
|
924
|
-
|| static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
|
925
|
-
|| (multiplier_overflowed && dig_value)
|
926
|
-
)
|
927
|
-
return false;
|
928
|
-
|
929
|
-
value = static_cast<T>(value + new_sub_value);
|
930
|
-
multiplier = static_cast<T>(multiplier * 10);
|
931
|
-
--remained;
|
932
|
-
} else {
|
933
|
-
if ( !Traits::eq(*end, thousands_sep) ) //|| begin == end ) return false;
|
934
|
-
{
|
935
|
-
/*
|
936
|
-
* According to Programming languages - C++
|
937
|
-
* Digit grouping is checked. That is, the positions of discarded
|
938
|
-
* separators is examined for consistency with
|
939
|
-
* use_facet<numpunct<charT> >(loc ).grouping()
|
940
|
-
*
|
941
|
-
* BUT what if there is no separators at all and grouping()
|
942
|
-
* is not empty? Well, we have no extraced separators, so we
|
943
|
-
* won`t check them for consistency. This will allow us to
|
944
|
-
* work with "C" locale from other locales
|
945
|
-
*/
|
946
|
-
shall_we_return = false;
|
947
|
-
break;
|
948
|
-
} else {
|
949
|
-
if ( begin == end ) return false;
|
950
|
-
if (current_grouping < grouping_size-1 ) ++current_grouping;
|
951
|
-
remained = grouping[current_grouping];
|
952
|
-
}
|
953
|
-
}
|
954
|
-
}
|
955
|
-
|
956
|
-
if (shall_we_return) return true;
|
957
|
-
}
|
958
|
-
}
|
959
|
-
#endif
|
960
|
-
{
|
961
|
-
while ( begin <= end )
|
962
|
-
{
|
963
|
-
T const multiplier_10 = static_cast<T>(multiplier * 10);
|
964
|
-
if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
|
965
|
-
|
966
|
-
T const dig_value = static_cast<T>(*end - czero);
|
967
|
-
T const new_sub_value = static_cast<T>(multiplier_10 * dig_value);
|
968
|
-
|
969
|
-
if (*end < czero || *end >= czero + 10
|
970
|
-
/* detecting overflow */
|
971
|
-
|| (dig_value && new_sub_value / dig_value != multiplier_10)
|
972
|
-
|| static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
|
973
|
-
|| (multiplier_overflowed && dig_value)
|
974
|
-
)
|
975
|
-
return false;
|
976
|
-
|
977
|
-
value = static_cast<T>(value + new_sub_value);
|
978
|
-
multiplier = static_cast<T>(multiplier * 10);
|
979
|
-
--end;
|
980
|
-
}
|
981
|
-
}
|
982
|
-
return true;
|
983
|
-
}
|
984
|
-
}
|
985
|
-
|
986
|
-
namespace detail
|
987
|
-
{
|
988
|
-
template <class CharT>
|
989
|
-
bool lc_iequal(const CharT* val, const CharT* lcase, const CharT* ucase, unsigned int len) BOOST_NOEXCEPT {
|
990
|
-
for( unsigned int i=0; i < len; ++i ) {
|
991
|
-
if ( val[i] != lcase[i] && val[i] != ucase[i] ) return false;
|
992
|
-
}
|
993
|
-
|
994
|
-
return true;
|
995
|
-
}
|
996
|
-
|
997
|
-
/* Returns true and sets the correct value if found NaN or Inf. */
|
998
|
-
template <class CharT, class T>
|
999
|
-
inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
|
1000
|
-
, const CharT* lc_NAN, const CharT* lc_nan
|
1001
|
-
, const CharT* lc_INFINITY, const CharT* lc_infinity
|
1002
|
-
, const CharT opening_brace, const CharT closing_brace) BOOST_NOEXCEPT
|
1003
|
-
{
|
1004
|
-
using namespace std;
|
1005
|
-
if (begin == end) return false;
|
1006
|
-
const CharT minus = lcast_char_constants<CharT>::minus;
|
1007
|
-
const CharT plus = lcast_char_constants<CharT>::plus;
|
1008
|
-
const int inifinity_size = 8;
|
1009
|
-
|
1010
|
-
bool has_minus = false;
|
1011
|
-
/* Parsing +/- */
|
1012
|
-
if( *begin == minus)
|
1013
|
-
{
|
1014
|
-
++ begin;
|
1015
|
-
has_minus = true;
|
1016
|
-
}
|
1017
|
-
else if( *begin == plus ) ++begin;
|
1018
|
-
|
1019
|
-
if( end-begin < 3 ) return false;
|
1020
|
-
if( lc_iequal(begin, lc_nan, lc_NAN, 3) )
|
1021
|
-
{
|
1022
|
-
begin += 3;
|
1023
|
-
if (end != begin) /* It is 'nan(...)' or some bad input*/
|
1024
|
-
{
|
1025
|
-
if(end-begin<2) return false; // bad input
|
1026
|
-
-- end;
|
1027
|
-
if( *begin != opening_brace || *end != closing_brace) return false; // bad input
|
1028
|
-
}
|
1029
|
-
|
1030
|
-
if( !has_minus ) value = std::numeric_limits<T>::quiet_NaN();
|
1031
|
-
else value = (boost::math::changesign) (std::numeric_limits<T>::quiet_NaN());
|
1032
|
-
return true;
|
1033
|
-
} else
|
1034
|
-
if (( /* 'INF' or 'inf' */
|
1035
|
-
end-begin==3
|
1036
|
-
&&
|
1037
|
-
lc_iequal(begin, lc_infinity, lc_INFINITY, 3)
|
1038
|
-
)
|
1039
|
-
||
|
1040
|
-
( /* 'INFINITY' or 'infinity' */
|
1041
|
-
end-begin==inifinity_size
|
1042
|
-
&&
|
1043
|
-
lc_iequal(begin, lc_infinity, lc_INFINITY, inifinity_size)
|
1044
|
-
)
|
1045
|
-
)
|
1046
|
-
{
|
1047
|
-
if( !has_minus ) value = std::numeric_limits<T>::infinity();
|
1048
|
-
else value = (boost::math::changesign) (std::numeric_limits<T>::infinity());
|
1049
|
-
return true;
|
1050
|
-
}
|
1051
|
-
|
1052
|
-
return false;
|
1053
|
-
}
|
1054
|
-
|
1055
|
-
template <class CharT, class T>
|
1056
|
-
bool put_inf_nan_impl(CharT* begin, CharT*& end, const T& value
|
1057
|
-
, const CharT* lc_nan
|
1058
|
-
, const CharT* lc_infinity) BOOST_NOEXCEPT
|
1059
|
-
{
|
1060
|
-
using namespace std;
|
1061
|
-
const CharT minus = lcast_char_constants<CharT>::minus;
|
1062
|
-
if ( (boost::math::isnan)(value) )
|
1063
|
-
{
|
1064
|
-
if ( (boost::math::signbit)(value) )
|
1065
|
-
{
|
1066
|
-
*begin = minus;
|
1067
|
-
++ begin;
|
1068
|
-
}
|
1069
|
-
|
1070
|
-
memcpy(begin, lc_nan, 3 * sizeof(CharT));
|
1071
|
-
end = begin + 3;
|
1072
|
-
return true;
|
1073
|
-
} else if ( (boost::math::isinf)(value) )
|
1074
|
-
{
|
1075
|
-
if ( (boost::math::signbit)(value) )
|
1076
|
-
{
|
1077
|
-
*begin = minus;
|
1078
|
-
++ begin;
|
1079
|
-
}
|
1080
|
-
|
1081
|
-
memcpy(begin, lc_infinity, 3 * sizeof(CharT));
|
1082
|
-
end = begin + 3;
|
1083
|
-
return true;
|
1084
|
-
}
|
1085
|
-
|
1086
|
-
return false;
|
1087
|
-
}
|
1088
|
-
|
1089
|
-
|
1090
|
-
#ifndef BOOST_LCAST_NO_WCHAR_T
|
1091
|
-
template <class T>
|
1092
|
-
bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value) BOOST_NOEXCEPT
|
1093
|
-
{
|
1094
|
-
return parse_inf_nan_impl(begin, end, value
|
1095
|
-
, L"NAN", L"nan"
|
1096
|
-
, L"INFINITY", L"infinity"
|
1097
|
-
, L'(', L')');
|
1098
|
-
}
|
1099
|
-
|
1100
|
-
template <class T>
|
1101
|
-
bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value) BOOST_NOEXCEPT
|
1102
|
-
{
|
1103
|
-
return put_inf_nan_impl(begin, end, value, L"nan", L"infinity");
|
1104
|
-
}
|
1105
|
-
|
1106
|
-
#endif
|
1107
|
-
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
1108
|
-
template <class T>
|
1109
|
-
bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value) BOOST_NOEXCEPT
|
1110
|
-
{
|
1111
|
-
return parse_inf_nan_impl(begin, end, value
|
1112
|
-
, u"NAN", u"nan"
|
1113
|
-
, u"INFINITY", u"infinity"
|
1114
|
-
, u'(', u')');
|
1115
|
-
}
|
1116
|
-
|
1117
|
-
template <class T>
|
1118
|
-
bool put_inf_nan(char16_t* begin, char16_t*& end, const T& value) BOOST_NOEXCEPT
|
1119
|
-
{
|
1120
|
-
return put_inf_nan_impl(begin, end, value, u"nan", u"infinity");
|
1121
|
-
}
|
1122
|
-
#endif
|
1123
|
-
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
1124
|
-
template <class T>
|
1125
|
-
bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value) BOOST_NOEXCEPT
|
1126
|
-
{
|
1127
|
-
return parse_inf_nan_impl(begin, end, value
|
1128
|
-
, U"NAN", U"nan"
|
1129
|
-
, U"INFINITY", U"infinity"
|
1130
|
-
, U'(', U')');
|
1131
|
-
}
|
1132
|
-
|
1133
|
-
template <class T>
|
1134
|
-
bool put_inf_nan(char32_t* begin, char32_t*& end, const T& value) BOOST_NOEXCEPT
|
1135
|
-
{
|
1136
|
-
return put_inf_nan_impl(begin, end, value, U"nan", U"infinity");
|
1137
|
-
}
|
1138
|
-
#endif
|
1139
|
-
|
1140
|
-
template <class CharT, class T>
|
1141
|
-
bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) BOOST_NOEXCEPT
|
1142
|
-
{
|
1143
|
-
return parse_inf_nan_impl(begin, end, value
|
1144
|
-
, "NAN", "nan"
|
1145
|
-
, "INFINITY", "infinity"
|
1146
|
-
, '(', ')');
|
1147
|
-
}
|
1148
|
-
|
1149
|
-
template <class CharT, class T>
|
1150
|
-
bool put_inf_nan(CharT* begin, CharT*& end, const T& value) BOOST_NOEXCEPT
|
1151
|
-
{
|
1152
|
-
return put_inf_nan_impl(begin, end, value, "nan", "infinity");
|
1153
|
-
}
|
1154
|
-
}
|
1155
|
-
|
1156
|
-
|
1157
|
-
namespace detail // lcast_ret_float
|
1158
|
-
{
|
1159
|
-
|
1160
|
-
// Silence buggy MS warnings like C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
|
1161
|
-
#if defined(_MSC_VER) && (_MSC_VER == 1400)
|
1162
|
-
# pragma warning(push)
|
1163
|
-
# pragma warning(disable:4244)
|
1164
|
-
#endif
|
1165
|
-
template <class T>
|
1166
|
-
struct mantissa_holder_type
|
1167
|
-
{
|
1168
|
-
/* Can not be used with this type */
|
1169
|
-
};
|
1170
|
-
|
1171
|
-
template <>
|
1172
|
-
struct mantissa_holder_type<float>
|
1173
|
-
{
|
1174
|
-
typedef unsigned int type;
|
1175
|
-
typedef double wide_result_t;
|
1176
|
-
};
|
1177
|
-
|
1178
|
-
template <>
|
1179
|
-
struct mantissa_holder_type<double>
|
1180
|
-
{
|
1181
|
-
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
1182
|
-
typedef long double wide_result_t;
|
1183
|
-
#if defined(BOOST_HAS_LONG_LONG)
|
1184
|
-
typedef boost::ulong_long_type type;
|
1185
|
-
#elif defined(BOOST_HAS_MS_INT64)
|
1186
|
-
typedef unsigned __int64 type;
|
1187
|
-
#endif
|
1188
|
-
#endif
|
1189
|
-
};
|
1190
|
-
|
1191
|
-
template<class Traits, class T, class CharT>
|
1192
|
-
inline bool lcast_ret_float(T& value, const CharT* begin, const CharT* end)
|
1193
|
-
{
|
1194
|
-
|
1195
|
-
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
1196
|
-
std::locale loc;
|
1197
|
-
typedef std::numpunct<CharT> numpunct;
|
1198
|
-
numpunct const& np = BOOST_USE_FACET(numpunct, loc);
|
1199
|
-
std::string const grouping(
|
1200
|
-
(loc == std::locale::classic())
|
1201
|
-
? std::string()
|
1202
|
-
: np.grouping()
|
1203
|
-
);
|
1204
|
-
std::string::size_type const grouping_size = grouping.size();
|
1205
|
-
CharT const thousands_sep = static_cast<CharT>(grouping_size ? np.thousands_sep() : 0);
|
1206
|
-
CharT const decimal_point = np.decimal_point();
|
1207
|
-
bool found_grouping = false;
|
1208
|
-
std::string::size_type last_grouping_pos = grouping_size - 1;
|
1209
|
-
#else
|
1210
|
-
CharT const decimal_point = lcast_char_constants<CharT>::c_decimal_separator;
|
1211
|
-
#endif
|
1212
|
-
|
1213
|
-
CharT const czero = lcast_char_constants<CharT>::zero;
|
1214
|
-
CharT const minus = lcast_char_constants<CharT>::minus;
|
1215
|
-
CharT const plus = lcast_char_constants<CharT>::plus;
|
1216
|
-
CharT const capital_e = lcast_char_constants<CharT>::capital_e;
|
1217
|
-
CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
|
1218
|
-
|
1219
|
-
value = static_cast<T>(0);
|
1220
|
-
|
1221
|
-
if (parse_inf_nan(begin, end, value)) return true;
|
1222
|
-
|
1223
|
-
typedef typename Traits::int_type int_type;
|
1224
|
-
typedef BOOST_DEDUCED_TYPENAME mantissa_holder_type<T>::type mantissa_type;
|
1225
|
-
typedef BOOST_DEDUCED_TYPENAME mantissa_holder_type<T>::wide_result_t wide_result_t;
|
1226
|
-
int_type const zero = Traits::to_int_type(czero);
|
1227
|
-
if (begin == end) return false;
|
1228
|
-
|
1229
|
-
/* Getting the plus/minus sign */
|
1230
|
-
bool has_minus = false;
|
1231
|
-
if (Traits::eq(*begin, minus) ) {
|
1232
|
-
++ begin;
|
1233
|
-
has_minus = true;
|
1234
|
-
if (begin == end) return false;
|
1235
|
-
} else if (Traits::eq(*begin, plus) ) {
|
1236
|
-
++begin;
|
1237
|
-
if (begin == end) return false;
|
1238
|
-
}
|
1239
|
-
|
1240
|
-
bool found_decimal = false;
|
1241
|
-
bool found_number_before_exp = false;
|
1242
|
-
int pow_of_10 = 0;
|
1243
|
-
mantissa_type mantissa=0;
|
1244
|
-
bool is_mantissa_full = false;
|
1245
|
-
|
1246
|
-
char length_since_last_delim = 0;
|
1247
|
-
|
1248
|
-
while ( begin != end )
|
1249
|
-
{
|
1250
|
-
if (found_decimal) {
|
1251
|
-
/* We allow no thousand_separators after decimal point */
|
1252
|
-
|
1253
|
-
mantissa_type tmp_mantissa = mantissa * 10u;
|
1254
|
-
if (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) break;
|
1255
|
-
if ( *begin < czero || *begin >= czero + 10 ) return false;
|
1256
|
-
if ( is_mantissa_full
|
1257
|
-
|| tmp_mantissa / 10u != mantissa
|
1258
|
-
|| (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) < tmp_mantissa
|
1259
|
-
) {
|
1260
|
-
is_mantissa_full = true;
|
1261
|
-
++ begin;
|
1262
|
-
continue;
|
1263
|
-
}
|
1264
|
-
|
1265
|
-
-- pow_of_10;
|
1266
|
-
mantissa = tmp_mantissa;
|
1267
|
-
mantissa += *begin - zero;
|
1268
|
-
|
1269
|
-
found_number_before_exp = true;
|
1270
|
-
} else {
|
1271
|
-
|
1272
|
-
if (*begin >= czero && *begin < czero + 10) {
|
1273
|
-
|
1274
|
-
/* Checking for mantissa overflow. If overflow will
|
1275
|
-
* occur, them we only increase multiplyer
|
1276
|
-
*/
|
1277
|
-
mantissa_type tmp_mantissa = mantissa * 10u;
|
1278
|
-
if( !is_mantissa_full
|
1279
|
-
&& tmp_mantissa / 10u == mantissa
|
1280
|
-
&& (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) >= tmp_mantissa
|
1281
|
-
)
|
1282
|
-
{
|
1283
|
-
mantissa = tmp_mantissa;
|
1284
|
-
mantissa += *begin - zero;
|
1285
|
-
} else
|
1286
|
-
{
|
1287
|
-
is_mantissa_full = true;
|
1288
|
-
++ pow_of_10;
|
1289
|
-
}
|
1290
|
-
|
1291
|
-
found_number_before_exp = true;
|
1292
|
-
++ length_since_last_delim;
|
1293
|
-
} else if (Traits::eq(*begin, decimal_point) || Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) {
|
1294
|
-
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
1295
|
-
/* If ( we need to check grouping
|
1296
|
-
* and ( grouping missmatches
|
1297
|
-
* or grouping position is incorrect
|
1298
|
-
* or we are using the grouping position 0 twice
|
1299
|
-
* )
|
1300
|
-
* ) then return error
|
1301
|
-
*/
|
1302
|
-
if( grouping_size && found_grouping
|
1303
|
-
&& (
|
1304
|
-
length_since_last_delim != grouping[0]
|
1305
|
-
|| last_grouping_pos>1
|
1306
|
-
|| (last_grouping_pos==0 && grouping_size>1)
|
1307
|
-
)
|
1308
|
-
) return false;
|
1309
|
-
#endif
|
1310
|
-
|
1311
|
-
if(Traits::eq(*begin, decimal_point)) {
|
1312
|
-
++ begin;
|
1313
|
-
found_decimal = true;
|
1314
|
-
if (!found_number_before_exp && begin==end) return false;
|
1315
|
-
continue;
|
1316
|
-
}else {
|
1317
|
-
if (!found_number_before_exp) return false;
|
1318
|
-
break;
|
1319
|
-
}
|
1320
|
-
}
|
1321
|
-
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
1322
|
-
else if (grouping_size && Traits::eq(*begin, thousands_sep)){
|
1323
|
-
if(found_grouping)
|
1324
|
-
{
|
1325
|
-
/* It is not he first time, when we find thousands separator,
|
1326
|
-
* so we need to chek, is the distance between two groupings
|
1327
|
-
* equal to grouping[last_grouping_pos] */
|
1328
|
-
|
1329
|
-
if (length_since_last_delim != grouping[last_grouping_pos] )
|
1330
|
-
{
|
1331
|
-
if (!last_grouping_pos) return false;
|
1332
|
-
else
|
1333
|
-
{
|
1334
|
-
-- last_grouping_pos;
|
1335
|
-
if (length_since_last_delim != grouping[last_grouping_pos]) return false;
|
1336
|
-
}
|
1337
|
-
} else
|
1338
|
-
/* We are calling the grouping[0] twice, when grouping size is more than 1 */
|
1339
|
-
if (grouping_size>1u && last_grouping_pos+1<grouping_size) return false;
|
1340
|
-
|
1341
|
-
} else {
|
1342
|
-
/* Delimiter at the begining ',000' */
|
1343
|
-
if (!length_since_last_delim) return false;
|
1344
|
-
|
1345
|
-
found_grouping = true;
|
1346
|
-
if (length_since_last_delim > grouping[last_grouping_pos] ) return false;
|
1347
|
-
}
|
1348
|
-
|
1349
|
-
length_since_last_delim = 0;
|
1350
|
-
++ begin;
|
1351
|
-
|
1352
|
-
/* Delimiter at the end '100,' */
|
1353
|
-
if (begin == end) return false;
|
1354
|
-
continue;
|
1355
|
-
}
|
1356
|
-
#endif
|
1357
|
-
else return false;
|
1358
|
-
}
|
1359
|
-
|
1360
|
-
++begin;
|
1361
|
-
}
|
1362
|
-
|
1363
|
-
// Exponent found
|
1364
|
-
if ( begin != end && (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) ) {
|
1365
|
-
++ begin;
|
1366
|
-
if ( begin == end ) return false;
|
1367
|
-
|
1368
|
-
bool exp_has_minus = false;
|
1369
|
-
if(Traits::eq(*begin, minus)) {
|
1370
|
-
exp_has_minus = true;
|
1371
|
-
++ begin;
|
1372
|
-
if ( begin == end ) return false;
|
1373
|
-
} else if (Traits::eq(*begin, plus)) {
|
1374
|
-
++ begin;
|
1375
|
-
if ( begin == end ) return false;
|
1376
|
-
}
|
1377
|
-
|
1378
|
-
int exp_pow_of_10 = 0;
|
1379
|
-
while ( begin != end )
|
1380
|
-
{
|
1381
|
-
if ( *begin < czero
|
1382
|
-
|| *begin >= czero + 10
|
1383
|
-
|| exp_pow_of_10 * 10 < exp_pow_of_10) /* Overflows are checked lower more precisely*/
|
1384
|
-
return false;
|
1385
|
-
|
1386
|
-
exp_pow_of_10 *= 10;
|
1387
|
-
exp_pow_of_10 += *begin - zero;
|
1388
|
-
++ begin;
|
1389
|
-
};
|
1390
|
-
|
1391
|
-
if ( exp_pow_of_10 ) {
|
1392
|
-
/* Overflows are checked lower */
|
1393
|
-
if ( exp_has_minus ) {
|
1394
|
-
pow_of_10 -= exp_pow_of_10;
|
1395
|
-
} else {
|
1396
|
-
pow_of_10 += exp_pow_of_10;
|
1397
|
-
}
|
1398
|
-
}
|
1399
|
-
}
|
1400
|
-
|
1401
|
-
/* We need a more accurate algorithm... We can not use current algorithm
|
1402
|
-
* with long doubles (and with doubles if sizeof(double)==sizeof(long double)).
|
1403
|
-
*/
|
1404
|
-
const wide_result_t result = std::pow(static_cast<wide_result_t>(10.0), pow_of_10) * mantissa;
|
1405
|
-
value = static_cast<T>( has_minus ? (boost::math::changesign)(result) : result);
|
1406
|
-
|
1407
|
-
if ( (boost::math::isinf)(value) || (boost::math::isnan)(value) ) return false;
|
1408
|
-
|
1409
|
-
return true;
|
1410
|
-
}
|
1411
|
-
// Unsilence buggy MS warnings like C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
|
1412
|
-
#if defined(_MSC_VER) && (_MSC_VER == 1400)
|
1413
|
-
# pragma warning(pop)
|
1414
|
-
#endif
|
1415
|
-
}
|
1416
|
-
|
1417
|
-
namespace detail // parser_buf
|
1418
|
-
{
|
1419
|
-
//
|
1420
|
-
// class parser_buf:
|
1421
|
-
// acts as a stream buffer which wraps around a pair of pointers
|
1422
|
-
//
|
1423
|
-
// This class is copied (and slightly changed) from
|
1424
|
-
// boost/regex/v4/cpp_regex_traits.hpp
|
1425
|
-
// Thanks John Maddock for it! (previous version had some
|
1426
|
-
// problems with libc++ and some other STL implementations)
|
1427
|
-
template <class BufferType, class charT>
|
1428
|
-
class parser_buf : public BufferType {
|
1429
|
-
typedef BufferType base_type;
|
1430
|
-
typedef typename base_type::int_type int_type;
|
1431
|
-
typedef typename base_type::char_type char_type;
|
1432
|
-
typedef typename base_type::pos_type pos_type;
|
1433
|
-
typedef ::std::streamsize streamsize;
|
1434
|
-
typedef typename base_type::off_type off_type;
|
1435
|
-
|
1436
|
-
public:
|
1437
|
-
parser_buf() : base_type() { setbuf(0, 0); }
|
1438
|
-
const charT* getnext() { return this->gptr(); }
|
1439
|
-
#ifndef BOOST_NO_USING_TEMPLATE
|
1440
|
-
using base_type::pptr;
|
1441
|
-
using base_type::pbase;
|
1442
|
-
#else
|
1443
|
-
charT* pptr() const { return base_type::pptr(); }
|
1444
|
-
charT* pbase() const { return base_type::pbase(); }
|
1445
|
-
#endif
|
1446
|
-
base_type* setbuf(char_type* s, streamsize n) {
|
1447
|
-
this->setg(s, s, s + n);
|
1448
|
-
return this;
|
1449
|
-
}
|
1450
|
-
|
1451
|
-
pos_type seekpos(pos_type sp, ::std::ios_base::openmode which) {
|
1452
|
-
if(which & ::std::ios_base::out)
|
1453
|
-
return pos_type(off_type(-1));
|
1454
|
-
off_type size = static_cast<off_type>(this->egptr() - this->eback());
|
1455
|
-
charT* g = this->eback();
|
1456
|
-
if(off_type(sp) <= size)
|
1457
|
-
{
|
1458
|
-
this->setg(g, g + off_type(sp), g + size);
|
1459
|
-
}
|
1460
|
-
return pos_type(off_type(-1));
|
1461
|
-
}
|
1462
|
-
|
1463
|
-
pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) {
|
1464
|
-
typedef typename boost::int_t<sizeof(way) * CHAR_BIT>::least cast_type;
|
1465
|
-
|
1466
|
-
if(which & ::std::ios_base::out)
|
1467
|
-
return pos_type(off_type(-1));
|
1468
|
-
std::ptrdiff_t size = this->egptr() - this->eback();
|
1469
|
-
std::ptrdiff_t pos = this->gptr() - this->eback();
|
1470
|
-
charT* g = this->eback();
|
1471
|
-
switch(static_cast<cast_type>(way))
|
1472
|
-
{
|
1473
|
-
case ::std::ios_base::beg:
|
1474
|
-
if((off < 0) || (off > size))
|
1475
|
-
return pos_type(off_type(-1));
|
1476
|
-
else
|
1477
|
-
this->setg(g, g + off, g + size);
|
1478
|
-
break;
|
1479
|
-
case ::std::ios_base::end:
|
1480
|
-
if((off < 0) || (off > size))
|
1481
|
-
return pos_type(off_type(-1));
|
1482
|
-
else
|
1483
|
-
this->setg(g, g + size - off, g + size);
|
1484
|
-
break;
|
1485
|
-
case ::std::ios_base::cur:
|
1486
|
-
{
|
1487
|
-
std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off);
|
1488
|
-
if((newpos < 0) || (newpos > size))
|
1489
|
-
return pos_type(off_type(-1));
|
1490
|
-
else
|
1491
|
-
this->setg(g, g + newpos, g + size);
|
1492
|
-
break;
|
1493
|
-
}
|
1494
|
-
default: ;
|
1495
|
-
}
|
1496
|
-
#ifdef BOOST_MSVC
|
1497
|
-
#pragma warning(push)
|
1498
|
-
#pragma warning(disable:4244)
|
1499
|
-
#endif
|
1500
|
-
return static_cast<pos_type>(this->gptr() - this->eback());
|
1501
|
-
#ifdef BOOST_MSVC
|
1502
|
-
#pragma warning(pop)
|
1503
|
-
#endif
|
1504
|
-
}
|
1505
|
-
private:
|
1506
|
-
parser_buf& operator=(const parser_buf&);
|
1507
|
-
parser_buf(const parser_buf&);
|
1508
|
-
};
|
1509
|
-
}
|
1510
|
-
|
1511
|
-
namespace detail
|
1512
|
-
{
|
1513
|
-
struct do_not_construct_out_stream_t{};
|
1514
|
-
}
|
1515
|
-
|
1516
|
-
namespace detail // optimized stream wrapper
|
1517
|
-
{
|
1518
|
-
// String representation of Source has an upper limit.
|
1519
|
-
template< class CharT // a result of widest_char transformation
|
1520
|
-
, class Traits // usually char_traits<CharT>
|
1521
|
-
, bool RequiresStringbuffer
|
1522
|
-
>
|
1523
|
-
class lexical_stream_limited_src
|
1524
|
-
{
|
1525
|
-
|
1526
|
-
#if defined(BOOST_NO_STRINGSTREAM)
|
1527
|
-
typedef std::ostrstream out_stream_t;
|
1528
|
-
#elif defined(BOOST_NO_STD_LOCALE)
|
1529
|
-
typedef std::ostringstream out_stream_t;
|
1530
|
-
typedef parser_buf<std::streambuf, char> buffer_t;
|
1531
|
-
#else
|
1532
|
-
typedef std::basic_ostringstream<CharT, Traits> out_stream_t;
|
1533
|
-
typedef parser_buf<std::basic_streambuf<CharT, Traits>, CharT> buffer_t;
|
1534
|
-
#endif
|
1535
|
-
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
1536
|
-
RequiresStringbuffer,
|
1537
|
-
out_stream_t,
|
1538
|
-
do_not_construct_out_stream_t
|
1539
|
-
>::type deduced_out_stream_t;
|
1540
|
-
|
1541
|
-
// A string representation of Source is written to [start, finish).
|
1542
|
-
CharT* start;
|
1543
|
-
CharT* finish;
|
1544
|
-
deduced_out_stream_t out_stream;
|
1545
|
-
|
1546
|
-
public:
|
1547
|
-
lexical_stream_limited_src(CharT* sta, CharT* fin) BOOST_NOEXCEPT
|
1548
|
-
: start(sta)
|
1549
|
-
, finish(fin)
|
1550
|
-
{}
|
1551
|
-
|
1552
|
-
private:
|
1553
|
-
// Undefined:
|
1554
|
-
lexical_stream_limited_src(lexical_stream_limited_src const&);
|
1555
|
-
void operator=(lexical_stream_limited_src const&);
|
1556
|
-
|
1557
|
-
/************************************ HELPER FUNCTIONS FOR OPERATORS << ( ... ) ********************************/
|
1558
|
-
bool shl_char(CharT ch) BOOST_NOEXCEPT
|
1559
|
-
{
|
1560
|
-
Traits::assign(*start, ch);
|
1561
|
-
finish = start + 1;
|
1562
|
-
return true;
|
1563
|
-
}
|
1564
|
-
|
1565
|
-
#ifndef BOOST_LCAST_NO_WCHAR_T
|
1566
|
-
template <class T>
|
1567
|
-
bool shl_char(T ch)
|
1568
|
-
{
|
1569
|
-
BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)) ,
|
1570
|
-
"boost::lexical_cast does not support narrowing of char types."
|
1571
|
-
"Use boost::locale instead" );
|
1572
|
-
#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
|
1573
|
-
std::locale loc;
|
1574
|
-
CharT const w = BOOST_USE_FACET(std::ctype<CharT>, loc).widen(ch);
|
1575
|
-
#else
|
1576
|
-
CharT const w = static_cast<CharT>(ch);
|
1577
|
-
#endif
|
1578
|
-
Traits::assign(*start, w);
|
1579
|
-
finish = start + 1;
|
1580
|
-
return true;
|
1581
|
-
}
|
1582
|
-
#endif
|
1583
|
-
|
1584
|
-
bool shl_char_array(CharT const* str) BOOST_NOEXCEPT
|
1585
|
-
{
|
1586
|
-
start = const_cast<CharT*>(str);
|
1587
|
-
finish = start + Traits::length(str);
|
1588
|
-
return true;
|
1589
|
-
}
|
1590
|
-
|
1591
|
-
template <class T>
|
1592
|
-
bool shl_char_array(T const* str)
|
1593
|
-
{
|
1594
|
-
BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)),
|
1595
|
-
"boost::lexical_cast does not support narrowing of char types."
|
1596
|
-
"Use boost::locale instead" );
|
1597
|
-
return shl_input_streamable(str);
|
1598
|
-
}
|
1599
|
-
|
1600
|
-
bool shl_char_array_limited(CharT const* str, std::size_t max_size) BOOST_NOEXCEPT
|
1601
|
-
{
|
1602
|
-
start = const_cast<CharT*>(str);
|
1603
|
-
finish = std::find(start, start + max_size, Traits::to_char_type(0));
|
1604
|
-
return true;
|
1605
|
-
}
|
1606
|
-
|
1607
|
-
template<typename InputStreamable>
|
1608
|
-
bool shl_input_streamable(InputStreamable& input)
|
1609
|
-
{
|
1610
|
-
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
|
1611
|
-
// If you have compilation error at this point, than your STL library
|
1612
|
-
// does not support such conversions. Try updating it.
|
1613
|
-
BOOST_STATIC_ASSERT((boost::is_same<char, CharT>::value));
|
1614
|
-
#endif
|
1615
|
-
bool const result = !(out_stream << input).fail();
|
1616
|
-
const buffer_t* const p = static_cast<buffer_t*>(
|
1617
|
-
static_cast<std::basic_streambuf<CharT, Traits>*>(out_stream.rdbuf())
|
1618
|
-
);
|
1619
|
-
start = p->pbase();
|
1620
|
-
finish = p->pptr();
|
1621
|
-
return result;
|
1622
|
-
}
|
1623
|
-
|
1624
|
-
template <class T>
|
1625
|
-
inline bool shl_signed(T n)
|
1626
|
-
{
|
1627
|
-
start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
|
1628
|
-
if(n < 0)
|
1629
|
-
{
|
1630
|
-
--start;
|
1631
|
-
CharT const minus = lcast_char_constants<CharT>::minus;
|
1632
|
-
Traits::assign(*start, minus);
|
1633
|
-
}
|
1634
|
-
return true;
|
1635
|
-
}
|
1636
|
-
|
1637
|
-
template <class T, class SomeCharT>
|
1638
|
-
bool shl_real_type(const T& val, SomeCharT* begin, SomeCharT*& end)
|
1639
|
-
{
|
1640
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1641
|
-
lcast_set_precision(out_stream, &val);
|
1642
|
-
return shl_input_streamable(val);
|
1643
|
-
}
|
1644
|
-
|
1645
|
-
static bool shl_real_type(float val, char* begin, char*& end)
|
1646
|
-
{ using namespace std;
|
1647
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1648
|
-
const double val_as_double = val;
|
1649
|
-
end = begin +
|
1650
|
-
#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
1651
|
-
sprintf_s(begin, end-begin,
|
1652
|
-
#else
|
1653
|
-
sprintf(begin,
|
1654
|
-
#endif
|
1655
|
-
"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float>()), val_as_double);
|
1656
|
-
return end > begin;
|
1657
|
-
}
|
1658
|
-
|
1659
|
-
static bool shl_real_type(double val, char* begin, char*& end)
|
1660
|
-
{ using namespace std;
|
1661
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1662
|
-
end = begin +
|
1663
|
-
#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
1664
|
-
sprintf_s(begin, end-begin,
|
1665
|
-
#else
|
1666
|
-
sprintf(begin,
|
1667
|
-
#endif
|
1668
|
-
"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double>()), val);
|
1669
|
-
return end > begin;
|
1670
|
-
}
|
1671
|
-
|
1672
|
-
#ifndef __MINGW32__
|
1673
|
-
static bool shl_real_type(long double val, char* begin, char*& end)
|
1674
|
-
{ using namespace std;
|
1675
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1676
|
-
end = begin +
|
1677
|
-
#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
1678
|
-
sprintf_s(begin, end-begin,
|
1679
|
-
#else
|
1680
|
-
sprintf(begin,
|
1681
|
-
#endif
|
1682
|
-
"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double>()), val );
|
1683
|
-
return end > begin;
|
1684
|
-
}
|
1685
|
-
#endif
|
1686
|
-
|
1687
|
-
|
1688
|
-
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
|
1689
|
-
static bool shl_real_type(float val, wchar_t* begin, wchar_t*& end)
|
1690
|
-
{ using namespace std;
|
1691
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1692
|
-
const double val_as_double = val;
|
1693
|
-
end = begin + swprintf(begin, end-begin,
|
1694
|
-
L"%.*g",
|
1695
|
-
static_cast<int>(boost::detail::lcast_get_precision<float >()),
|
1696
|
-
val_as_double );
|
1697
|
-
return end > begin;
|
1698
|
-
}
|
1699
|
-
|
1700
|
-
static bool shl_real_type(double val, wchar_t* begin, wchar_t*& end)
|
1701
|
-
{ using namespace std;
|
1702
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1703
|
-
end = begin + swprintf(begin, end-begin,
|
1704
|
-
L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
|
1705
|
-
return end > begin;
|
1706
|
-
}
|
1707
|
-
|
1708
|
-
static bool shl_real_type(long double val, wchar_t* begin, wchar_t*& end)
|
1709
|
-
{ using namespace std;
|
1710
|
-
if (put_inf_nan(begin, end, val)) return true;
|
1711
|
-
end = begin + swprintf(begin, end-begin,
|
1712
|
-
L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
|
1713
|
-
return end > begin;
|
1714
|
-
}
|
1715
|
-
#endif
|
1716
|
-
|
1717
|
-
/************************************ OPERATORS << ( ... ) ********************************/
|
1718
|
-
public:
|
1719
|
-
template<class Alloc>
|
1720
|
-
bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
|
1721
|
-
{
|
1722
|
-
start = const_cast<CharT*>(str.data());
|
1723
|
-
finish = start + str.length();
|
1724
|
-
return true;
|
1725
|
-
}
|
1726
|
-
|
1727
|
-
template<class Alloc>
|
1728
|
-
bool operator<<(boost::container::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
|
1729
|
-
{
|
1730
|
-
start = const_cast<CharT*>(str.data());
|
1731
|
-
finish = start + str.length();
|
1732
|
-
return true;
|
1733
|
-
}
|
1734
|
-
|
1735
|
-
bool operator<<(bool value) BOOST_NOEXCEPT
|
1736
|
-
{
|
1737
|
-
CharT const czero = lcast_char_constants<CharT>::zero;
|
1738
|
-
Traits::assign(*start, Traits::to_char_type(czero + value));
|
1739
|
-
finish = start + 1;
|
1740
|
-
return true;
|
1741
|
-
}
|
1742
|
-
|
1743
|
-
bool operator<<(const iterator_range<CharT*>& rng) BOOST_NOEXCEPT
|
1744
|
-
{
|
1745
|
-
start = rng.begin();
|
1746
|
-
finish = rng.end();
|
1747
|
-
return true;
|
1748
|
-
}
|
1749
|
-
|
1750
|
-
bool operator<<(const iterator_range<const CharT*>& rng) BOOST_NOEXCEPT
|
1751
|
-
{
|
1752
|
-
start = const_cast<CharT*>(rng.begin());
|
1753
|
-
finish = const_cast<CharT*>(rng.end());
|
1754
|
-
return true;
|
1755
|
-
}
|
1756
|
-
|
1757
|
-
bool operator<<(const iterator_range<const signed char*>& rng) BOOST_NOEXCEPT
|
1758
|
-
{
|
1759
|
-
return (*this) << iterator_range<char*>(
|
1760
|
-
const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
|
1761
|
-
const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
|
1762
|
-
);
|
1763
|
-
}
|
1764
|
-
|
1765
|
-
bool operator<<(const iterator_range<const unsigned char*>& rng) BOOST_NOEXCEPT
|
1766
|
-
{
|
1767
|
-
return (*this) << iterator_range<char*>(
|
1768
|
-
const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
|
1769
|
-
const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
|
1770
|
-
);
|
1771
|
-
}
|
1772
|
-
|
1773
|
-
bool operator<<(const iterator_range<signed char*>& rng) BOOST_NOEXCEPT
|
1774
|
-
{
|
1775
|
-
return (*this) << iterator_range<char*>(
|
1776
|
-
reinterpret_cast<char*>(rng.begin()),
|
1777
|
-
reinterpret_cast<char*>(rng.end())
|
1778
|
-
);
|
1779
|
-
}
|
1780
|
-
|
1781
|
-
bool operator<<(const iterator_range<unsigned char*>& rng) BOOST_NOEXCEPT
|
1782
|
-
{
|
1783
|
-
return (*this) << iterator_range<char*>(
|
1784
|
-
reinterpret_cast<char*>(rng.begin()),
|
1785
|
-
reinterpret_cast<char*>(rng.end())
|
1786
|
-
);
|
1787
|
-
}
|
1788
|
-
|
1789
|
-
bool operator<<(char ch) { return shl_char(ch); }
|
1790
|
-
bool operator<<(unsigned char ch) { return ((*this) << static_cast<char>(ch)); }
|
1791
|
-
bool operator<<(signed char ch) { return ((*this) << static_cast<char>(ch)); }
|
1792
|
-
#if !defined(BOOST_LCAST_NO_WCHAR_T)
|
1793
|
-
bool operator<<(wchar_t const* str) { return shl_char_array(str); }
|
1794
|
-
bool operator<<(wchar_t * str) { return shl_char_array(str); }
|
1795
|
-
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
1796
|
-
bool operator<<(wchar_t ch) { return shl_char(ch); }
|
1797
|
-
#endif
|
1798
|
-
#endif
|
1799
|
-
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
1800
|
-
bool operator<<(char16_t ch) { return shl_char(ch); }
|
1801
|
-
bool operator<<(char16_t * str) { return shl_char_array(str); }
|
1802
|
-
bool operator<<(char16_t const * str) { return shl_char_array(str); }
|
1803
|
-
#endif
|
1804
|
-
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
1805
|
-
bool operator<<(char32_t ch) { return shl_char(ch); }
|
1806
|
-
bool operator<<(char32_t * str) { return shl_char_array(str); }
|
1807
|
-
bool operator<<(char32_t const * str) { return shl_char_array(str); }
|
1808
|
-
#endif
|
1809
|
-
bool operator<<(unsigned char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
|
1810
|
-
bool operator<<(unsigned char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
|
1811
|
-
bool operator<<(signed char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
|
1812
|
-
bool operator<<(signed char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
|
1813
|
-
bool operator<<(char const* str) { return shl_char_array(str); }
|
1814
|
-
bool operator<<(char* str) { return shl_char_array(str); }
|
1815
|
-
bool operator<<(short n) { return shl_signed(n); }
|
1816
|
-
bool operator<<(int n) { return shl_signed(n); }
|
1817
|
-
bool operator<<(long n) { return shl_signed(n); }
|
1818
|
-
bool operator<<(unsigned short n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
|
1819
|
-
bool operator<<(unsigned int n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
|
1820
|
-
bool operator<<(unsigned long n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
|
1821
|
-
|
1822
|
-
#if defined(BOOST_HAS_LONG_LONG)
|
1823
|
-
bool operator<<(boost::ulong_long_type n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
|
1824
|
-
bool operator<<(boost::long_long_type n) { return shl_signed(n); }
|
1825
|
-
#elif defined(BOOST_HAS_MS_INT64)
|
1826
|
-
bool operator<<(unsigned __int64 n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
|
1827
|
-
bool operator<<( __int64 n) { return shl_signed(n); }
|
1828
|
-
#endif
|
1829
|
-
|
1830
|
-
#ifdef BOOST_LCAST_HAS_INT128
|
1831
|
-
bool operator<<(const boost::uint128_type& n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
|
1832
|
-
bool operator<<(const boost::int128_type& n) { return shl_signed(n); }
|
1833
|
-
#endif
|
1834
|
-
|
1835
|
-
bool operator<<(float val) { return shl_real_type(val, start, finish); }
|
1836
|
-
bool operator<<(double val) { return shl_real_type(val, start, finish); }
|
1837
|
-
bool operator<<(long double val) {
|
1838
|
-
#ifndef __MINGW32__
|
1839
|
-
return shl_real_type(val, start, finish);
|
1840
|
-
#else
|
1841
|
-
return shl_real_type(static_cast<double>(val), start, finish);
|
1842
|
-
#endif
|
1843
|
-
}
|
1844
|
-
|
1845
|
-
template <std::size_t N>
|
1846
|
-
bool operator<<(boost::array<CharT, N> const& input) BOOST_NOEXCEPT
|
1847
|
-
{ return shl_char_array_limited(input.begin(), N); }
|
1848
|
-
|
1849
|
-
template <std::size_t N>
|
1850
|
-
bool operator<<(boost::array<unsigned char, N> const& input) BOOST_NOEXCEPT
|
1851
|
-
{ return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
|
1852
|
-
|
1853
|
-
template <std::size_t N>
|
1854
|
-
bool operator<<(boost::array<signed char, N> const& input) BOOST_NOEXCEPT
|
1855
|
-
{ return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
|
1856
|
-
|
1857
|
-
template <std::size_t N>
|
1858
|
-
bool operator<<(boost::array<const CharT, N> const& input) BOOST_NOEXCEPT
|
1859
|
-
{ return shl_char_array_limited(input.begin(), N); }
|
1860
|
-
|
1861
|
-
template <std::size_t N>
|
1862
|
-
bool operator<<(boost::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
|
1863
|
-
{ return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
|
1864
|
-
|
1865
|
-
template <std::size_t N>
|
1866
|
-
bool operator<<(boost::array<const signed char, N> const& input) BOOST_NOEXCEPT
|
1867
|
-
{ return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
|
1868
|
-
|
1869
|
-
#ifndef BOOST_NO_CXX11_HDR_ARRAY
|
1870
|
-
template <std::size_t N>
|
1871
|
-
bool operator<<(std::array<CharT, N> const& input) BOOST_NOEXCEPT
|
1872
|
-
{
|
1873
|
-
if (input.size()) return shl_char_array_limited(&input[0], N);
|
1874
|
-
else return true;
|
1875
|
-
}
|
1876
|
-
|
1877
|
-
template <std::size_t N>
|
1878
|
-
bool operator<<(std::array<unsigned char, N> const& input) BOOST_NOEXCEPT
|
1879
|
-
{ return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
|
1880
|
-
|
1881
|
-
template <std::size_t N>
|
1882
|
-
bool operator<<(std::array<signed char, N> const& input) BOOST_NOEXCEPT
|
1883
|
-
{ return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
|
1884
|
-
|
1885
|
-
template <std::size_t N>
|
1886
|
-
bool operator<<(std::array<const CharT, N> const& input) BOOST_NOEXCEPT
|
1887
|
-
{
|
1888
|
-
if (input.size()) return shl_char_array_limited(&input[0], N);
|
1889
|
-
else return true;
|
1890
|
-
}
|
1891
|
-
|
1892
|
-
template <std::size_t N>
|
1893
|
-
bool operator<<(std::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
|
1894
|
-
{ return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
|
1895
|
-
|
1896
|
-
template <std::size_t N>
|
1897
|
-
bool operator<<(std::array<const signed char, N> const& input) BOOST_NOEXCEPT
|
1898
|
-
{ return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
|
1899
|
-
#endif
|
1900
|
-
|
1901
|
-
template <class InStreamable>
|
1902
|
-
bool operator<<(const InStreamable& input) { return shl_input_streamable(input); }
|
1903
|
-
|
1904
|
-
/************************************ HELPER FUNCTIONS FOR OPERATORS >> ( ... ) ********************************/
|
1905
|
-
private:
|
1906
|
-
|
1907
|
-
template <typename Type>
|
1908
|
-
bool shr_unsigned(Type& output)
|
1909
|
-
{
|
1910
|
-
if (start == finish) return false;
|
1911
|
-
CharT const minus = lcast_char_constants<CharT>::minus;
|
1912
|
-
CharT const plus = lcast_char_constants<CharT>::plus;
|
1913
|
-
bool has_minus = false;
|
1914
|
-
|
1915
|
-
/* We won`t use `start' any more, so no need in decrementing it after */
|
1916
|
-
if ( Traits::eq(minus,*start) )
|
1917
|
-
{
|
1918
|
-
++start;
|
1919
|
-
has_minus = true;
|
1920
|
-
} else if ( Traits::eq( plus, *start ) )
|
1921
|
-
{
|
1922
|
-
++start;
|
1923
|
-
}
|
1924
|
-
|
1925
|
-
bool const succeed = lcast_ret_unsigned<Traits>(output, start, finish);
|
1926
|
-
|
1927
|
-
if (has_minus) {
|
1928
|
-
output = static_cast<Type>(0u - output);
|
1929
|
-
}
|
1930
|
-
|
1931
|
-
return succeed;
|
1932
|
-
}
|
1933
|
-
|
1934
|
-
template <typename Type>
|
1935
|
-
bool shr_signed(Type& output)
|
1936
|
-
{
|
1937
|
-
if (start == finish) return false;
|
1938
|
-
CharT const minus = lcast_char_constants<CharT>::minus;
|
1939
|
-
CharT const plus = lcast_char_constants<CharT>::plus;
|
1940
|
-
typedef BOOST_DEDUCED_TYPENAME make_unsigned<Type>::type utype;
|
1941
|
-
utype out_tmp =0;
|
1942
|
-
bool has_minus = false;
|
1943
|
-
|
1944
|
-
/* We won`t use `start' any more, so no need in decrementing it after */
|
1945
|
-
if ( Traits::eq(minus,*start) )
|
1946
|
-
{
|
1947
|
-
++start;
|
1948
|
-
has_minus = true;
|
1949
|
-
} else if ( Traits::eq(plus, *start) )
|
1950
|
-
{
|
1951
|
-
++start;
|
1952
|
-
}
|
1953
|
-
|
1954
|
-
bool succeed = lcast_ret_unsigned<Traits>(out_tmp, start, finish);
|
1955
|
-
if (has_minus) {
|
1956
|
-
utype const comp_val = (static_cast<utype>(1) << std::numeric_limits<Type>::digits);
|
1957
|
-
succeed = succeed && out_tmp<=comp_val;
|
1958
|
-
output = static_cast<Type>(0u - out_tmp);
|
1959
|
-
} else {
|
1960
|
-
utype const comp_val = static_cast<utype>((std::numeric_limits<Type>::max)());
|
1961
|
-
succeed = succeed && out_tmp<=comp_val;
|
1962
|
-
output = out_tmp;
|
1963
|
-
}
|
1964
|
-
return succeed;
|
1965
|
-
}
|
1966
|
-
|
1967
|
-
template<typename InputStreamable>
|
1968
|
-
bool shr_using_base_class(InputStreamable& output)
|
1969
|
-
{
|
1970
|
-
BOOST_STATIC_ASSERT_MSG(
|
1971
|
-
(!boost::is_pointer<InputStreamable>::value),
|
1972
|
-
"boost::lexical_cast can not convert to pointers"
|
1973
|
-
);
|
1974
|
-
|
1975
|
-
#if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
|
1976
|
-
BOOST_STATIC_ASSERT_MSG((boost::is_same<char, CharT>::value),
|
1977
|
-
"boost::lexical_cast can not convert, because your STL library does not "
|
1978
|
-
"support such conversions. Try updating it."
|
1979
|
-
);
|
1980
|
-
#endif
|
1981
|
-
|
1982
|
-
#if defined(BOOST_NO_STRINGSTREAM)
|
1983
|
-
std::istrstream stream(start, finish - start);
|
1984
|
-
#else
|
1985
|
-
|
1986
|
-
buffer_t buf;
|
1987
|
-
buf.setbuf(start, finish - start);
|
1988
|
-
#if defined(BOOST_NO_STD_LOCALE)
|
1989
|
-
std::istream stream(&buf);
|
1990
|
-
#else
|
1991
|
-
std::basic_istream<CharT, Traits> stream(&buf);
|
1992
|
-
#endif // BOOST_NO_STD_LOCALE
|
1993
|
-
#endif // BOOST_NO_STRINGSTREAM
|
1994
|
-
|
1995
|
-
stream.unsetf(std::ios::skipws);
|
1996
|
-
lcast_set_precision(stream, static_cast<InputStreamable*>(0));
|
1997
|
-
|
1998
|
-
return stream >> output &&
|
1999
|
-
stream.get() ==
|
2000
|
-
#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
|
2001
|
-
// GCC 2.9x lacks std::char_traits<>::eof().
|
2002
|
-
// We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
|
2003
|
-
// configurations, which do provide std::char_traits<>::eof().
|
2004
|
-
|
2005
|
-
EOF;
|
2006
|
-
#else
|
2007
|
-
Traits::eof();
|
2008
|
-
#endif
|
2009
|
-
}
|
2010
|
-
|
2011
|
-
template<class T>
|
2012
|
-
inline bool shr_xchar(T& output)
|
2013
|
-
{
|
2014
|
-
BOOST_STATIC_ASSERT_MSG(( sizeof(CharT) == sizeof(T) ),
|
2015
|
-
"boost::lexical_cast does not support narrowing of character types."
|
2016
|
-
"Use boost::locale instead" );
|
2017
|
-
bool const ok = (finish - start == 1);
|
2018
|
-
if (ok) {
|
2019
|
-
CharT out;
|
2020
|
-
Traits::assign(out, *start);
|
2021
|
-
output = static_cast<T>(out);
|
2022
|
-
}
|
2023
|
-
return ok;
|
2024
|
-
}
|
2025
|
-
|
2026
|
-
/************************************ OPERATORS >> ( ... ) ********************************/
|
2027
|
-
public:
|
2028
|
-
bool operator>>(unsigned short& output) { return shr_unsigned(output); }
|
2029
|
-
bool operator>>(unsigned int& output) { return shr_unsigned(output); }
|
2030
|
-
bool operator>>(unsigned long int& output) { return shr_unsigned(output); }
|
2031
|
-
bool operator>>(short& output) { return shr_signed(output); }
|
2032
|
-
bool operator>>(int& output) { return shr_signed(output); }
|
2033
|
-
bool operator>>(long int& output) { return shr_signed(output); }
|
2034
|
-
#if defined(BOOST_HAS_LONG_LONG)
|
2035
|
-
bool operator>>(boost::ulong_long_type& output) { return shr_unsigned(output); }
|
2036
|
-
bool operator>>(boost::long_long_type& output) { return shr_signed(output); }
|
2037
|
-
#elif defined(BOOST_HAS_MS_INT64)
|
2038
|
-
bool operator>>(unsigned __int64& output) { return shr_unsigned(output); }
|
2039
|
-
bool operator>>(__int64& output) { return shr_signed(output); }
|
2040
|
-
#endif
|
2041
|
-
|
2042
|
-
#ifdef BOOST_LCAST_HAS_INT128
|
2043
|
-
bool operator>>(boost::uint128_type& output) { return shr_unsigned(output); }
|
2044
|
-
bool operator>>(boost::int128_type& output) { return shr_signed(output); }
|
2045
|
-
#endif
|
2046
|
-
|
2047
|
-
bool operator>>(char& output) { return shr_xchar(output); }
|
2048
|
-
bool operator>>(unsigned char& output) { return shr_xchar(output); }
|
2049
|
-
bool operator>>(signed char& output) { return shr_xchar(output); }
|
2050
|
-
#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
2051
|
-
bool operator>>(wchar_t& output) { return shr_xchar(output); }
|
2052
|
-
#endif
|
2053
|
-
#if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
2054
|
-
bool operator>>(char16_t& output) { return shr_xchar(output); }
|
2055
|
-
#endif
|
2056
|
-
#if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
|
2057
|
-
bool operator>>(char32_t& output) { return shr_xchar(output); }
|
2058
|
-
#endif
|
2059
|
-
template<class Alloc>
|
2060
|
-
bool operator>>(std::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
|
2061
|
-
|
2062
|
-
template<class Alloc>
|
2063
|
-
bool operator>>(boost::container::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
|
2064
|
-
|
2065
|
-
|
2066
|
-
private:
|
2067
|
-
template <std::size_t N, class ArrayT>
|
2068
|
-
bool shr_std_array(ArrayT& output) BOOST_NOEXCEPT
|
2069
|
-
{
|
2070
|
-
using namespace std;
|
2071
|
-
const std::size_t size = finish - start;
|
2072
|
-
if (size > N - 1) { // `-1` because we need to store \0 at the end
|
2073
|
-
return false;
|
2074
|
-
}
|
2075
|
-
|
2076
|
-
memcpy(&output[0], start, size * sizeof(CharT));
|
2077
|
-
output[size] = Traits::to_char_type(0);
|
2078
|
-
return true;
|
2079
|
-
}
|
2080
|
-
|
2081
|
-
public:
|
2082
|
-
|
2083
|
-
template <std::size_t N>
|
2084
|
-
bool operator>>(boost::array<CharT, N>& output) BOOST_NOEXCEPT
|
2085
|
-
{
|
2086
|
-
return shr_std_array<N>(output);
|
2087
|
-
}
|
2088
|
-
|
2089
|
-
template <std::size_t N>
|
2090
|
-
bool operator>>(boost::array<unsigned char, N>& output)
|
2091
|
-
{
|
2092
|
-
return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
|
2093
|
-
}
|
2094
|
-
|
2095
|
-
template <std::size_t N>
|
2096
|
-
bool operator>>(boost::array<signed char, N>& output)
|
2097
|
-
{
|
2098
|
-
return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
|
2099
|
-
}
|
2100
|
-
|
2101
|
-
#ifndef BOOST_NO_CXX11_HDR_ARRAY
|
2102
|
-
template <std::size_t N>
|
2103
|
-
bool operator>>(std::array<CharT, N>& output) BOOST_NOEXCEPT
|
2104
|
-
{
|
2105
|
-
return shr_std_array<N>(output);
|
2106
|
-
}
|
2107
|
-
|
2108
|
-
template <std::size_t N>
|
2109
|
-
bool operator>>(std::array<unsigned char, N>& output)
|
2110
|
-
{
|
2111
|
-
return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
|
2112
|
-
}
|
2113
|
-
|
2114
|
-
template <std::size_t N>
|
2115
|
-
bool operator>>(std::array<signed char, N>& output)
|
2116
|
-
{
|
2117
|
-
return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
|
2118
|
-
}
|
2119
|
-
#endif
|
2120
|
-
|
2121
|
-
|
2122
|
-
/*
|
2123
|
-
* case "-0" || "0" || "+0" : output = false; return true;
|
2124
|
-
* case "1" || "+1": output = true; return true;
|
2125
|
-
* default: return false;
|
2126
|
-
*/
|
2127
|
-
bool operator>>(bool& output) BOOST_NOEXCEPT
|
2128
|
-
{
|
2129
|
-
CharT const zero = lcast_char_constants<CharT>::zero;
|
2130
|
-
CharT const plus = lcast_char_constants<CharT>::plus;
|
2131
|
-
CharT const minus = lcast_char_constants<CharT>::minus;
|
2132
|
-
|
2133
|
-
switch(finish-start)
|
2134
|
-
{
|
2135
|
-
case 1:
|
2136
|
-
output = Traits::eq(start[0], zero+1);
|
2137
|
-
return output || Traits::eq(start[0], zero );
|
2138
|
-
case 2:
|
2139
|
-
if ( Traits::eq( plus, *start) )
|
2140
|
-
{
|
2141
|
-
++start;
|
2142
|
-
output = Traits::eq(start[0], zero +1);
|
2143
|
-
return output || Traits::eq(start[0], zero );
|
2144
|
-
} else
|
2145
|
-
{
|
2146
|
-
output = false;
|
2147
|
-
return Traits::eq( minus, *start)
|
2148
|
-
&& Traits::eq( zero, start[1]);
|
2149
|
-
}
|
2150
|
-
default:
|
2151
|
-
output = false; // Suppress warning about uninitalized variable
|
2152
|
-
return false;
|
2153
|
-
}
|
2154
|
-
}
|
2155
|
-
|
2156
|
-
bool operator>>(float& output) { return lcast_ret_float<Traits>(output,start,finish); }
|
2157
|
-
|
2158
|
-
private:
|
2159
|
-
// Not optimised converter
|
2160
|
-
template <class T>
|
2161
|
-
bool float_types_converter_internal(T& output, int /*tag*/) {
|
2162
|
-
if (parse_inf_nan(start, finish, output)) return true;
|
2163
|
-
bool return_value = shr_using_base_class(output);
|
2164
|
-
|
2165
|
-
/* Some compilers and libraries successfully
|
2166
|
-
* parse 'inf', 'INFINITY', '1.0E', '1.0E-'...
|
2167
|
-
* We are trying to provide a unified behaviour,
|
2168
|
-
* so we just forbid such conversions (as some
|
2169
|
-
* of the most popular compilers/libraries do)
|
2170
|
-
* */
|
2171
|
-
CharT const minus = lcast_char_constants<CharT>::minus;
|
2172
|
-
CharT const plus = lcast_char_constants<CharT>::plus;
|
2173
|
-
CharT const capital_e = lcast_char_constants<CharT>::capital_e;
|
2174
|
-
CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
|
2175
|
-
if ( return_value &&
|
2176
|
-
(
|
2177
|
-
Traits::eq(*(finish-1), lowercase_e) // 1.0e
|
2178
|
-
|| Traits::eq(*(finish-1), capital_e) // 1.0E
|
2179
|
-
|| Traits::eq(*(finish-1), minus) // 1.0e- or 1.0E-
|
2180
|
-
|| Traits::eq(*(finish-1), plus) // 1.0e+ or 1.0E+
|
2181
|
-
)
|
2182
|
-
) return false;
|
2183
|
-
|
2184
|
-
return return_value;
|
2185
|
-
}
|
2186
|
-
|
2187
|
-
// Optimised converter
|
2188
|
-
bool float_types_converter_internal(double& output,char /*tag*/) {
|
2189
|
-
return lcast_ret_float<Traits>(output,start,finish);
|
2190
|
-
}
|
2191
|
-
public:
|
2192
|
-
|
2193
|
-
bool operator>>(double& output)
|
2194
|
-
{
|
2195
|
-
/*
|
2196
|
-
* Some compilers implement long double as double. In that case these types have
|
2197
|
-
* same size, same precision, same max and min values... And it means,
|
2198
|
-
* that current implementation of lcast_ret_float cannot be used for type
|
2199
|
-
* double, because it will give a big precision loss.
|
2200
|
-
* */
|
2201
|
-
boost::mpl::if_c<
|
2202
|
-
#if (defined(BOOST_HAS_LONG_LONG) || defined(BOOST_HAS_MS_INT64)) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
|
2203
|
-
boost::type_traits::ice_eq< sizeof(double), sizeof(long double) >::value,
|
2204
|
-
#else
|
2205
|
-
1,
|
2206
|
-
#endif
|
2207
|
-
int,
|
2208
|
-
char
|
2209
|
-
>::type tag = 0;
|
2210
|
-
|
2211
|
-
return float_types_converter_internal(output, tag);
|
2212
|
-
}
|
2213
|
-
|
2214
|
-
bool operator>>(long double& output)
|
2215
|
-
{
|
2216
|
-
int tag = 0;
|
2217
|
-
return float_types_converter_internal(output, tag);
|
2218
|
-
}
|
2219
|
-
|
2220
|
-
// Generic istream-based algorithm.
|
2221
|
-
// lcast_streambuf_for_target<InputStreamable>::value is true.
|
2222
|
-
template<typename InputStreamable>
|
2223
|
-
bool operator>>(InputStreamable& output) { return shr_using_base_class(output); }
|
2224
|
-
};
|
2225
|
-
}
|
2226
|
-
|
2227
|
-
namespace detail
|
2228
|
-
{
|
2229
|
-
template<typename T>
|
2230
|
-
struct is_stdstring
|
2231
|
-
{
|
2232
|
-
BOOST_STATIC_CONSTANT(bool, value = false );
|
2233
|
-
};
|
2234
|
-
|
2235
|
-
template<typename CharT, typename Traits, typename Alloc>
|
2236
|
-
struct is_stdstring< std::basic_string<CharT, Traits, Alloc> >
|
2237
|
-
{
|
2238
|
-
BOOST_STATIC_CONSTANT(bool, value = true );
|
2239
|
-
};
|
2240
|
-
|
2241
|
-
template<typename CharT, typename Traits, typename Alloc>
|
2242
|
-
struct is_stdstring< boost::container::basic_string<CharT, Traits, Alloc> >
|
2243
|
-
{
|
2244
|
-
BOOST_STATIC_CONSTANT(bool, value = true );
|
2245
|
-
};
|
2246
|
-
|
2247
|
-
template<typename Target, typename Source>
|
2248
|
-
struct is_arithmetic_and_not_xchars
|
2249
|
-
{
|
2250
|
-
BOOST_STATIC_CONSTANT(bool, value =
|
2251
|
-
(
|
2252
|
-
boost::type_traits::ice_and<
|
2253
|
-
boost::is_arithmetic<Source>::value,
|
2254
|
-
boost::is_arithmetic<Target>::value,
|
2255
|
-
boost::type_traits::ice_not<
|
2256
|
-
detail::is_char_or_wchar<Target>::value
|
2257
|
-
>::value,
|
2258
|
-
boost::type_traits::ice_not<
|
2259
|
-
detail::is_char_or_wchar<Source>::value
|
2260
|
-
>::value
|
2261
|
-
>::value
|
2262
|
-
)
|
2263
|
-
);
|
2264
|
-
};
|
2265
|
-
|
2266
|
-
/*
|
2267
|
-
* is_xchar_to_xchar<Target, Source>::value is true, when
|
2268
|
-
* Target and Souce are the same char types, or when
|
2269
|
-
* Target and Souce are char types of the same size.
|
2270
|
-
*/
|
2271
|
-
template<typename Target, typename Source>
|
2272
|
-
struct is_xchar_to_xchar
|
2273
|
-
{
|
2274
|
-
BOOST_STATIC_CONSTANT(bool, value =
|
2275
|
-
(
|
2276
|
-
boost::type_traits::ice_or<
|
2277
|
-
boost::type_traits::ice_and<
|
2278
|
-
is_same<Source,Target>::value,
|
2279
|
-
is_char_or_wchar<Target>::value
|
2280
|
-
>::value,
|
2281
|
-
boost::type_traits::ice_and<
|
2282
|
-
boost::type_traits::ice_eq< sizeof(char),sizeof(Target)>::value,
|
2283
|
-
boost::type_traits::ice_eq< sizeof(char),sizeof(Source)>::value,
|
2284
|
-
is_char_or_wchar<Target>::value,
|
2285
|
-
is_char_or_wchar<Source>::value
|
2286
|
-
>::value
|
2287
|
-
>::value
|
2288
|
-
)
|
2289
|
-
);
|
2290
|
-
};
|
2291
|
-
|
2292
|
-
template<typename Target, typename Source>
|
2293
|
-
struct is_char_array_to_stdstring
|
2294
|
-
{
|
2295
|
-
BOOST_STATIC_CONSTANT(bool, value = false );
|
2296
|
-
};
|
2297
|
-
|
2298
|
-
template<typename CharT, typename Traits, typename Alloc>
|
2299
|
-
struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, CharT* >
|
2300
|
-
{
|
2301
|
-
BOOST_STATIC_CONSTANT(bool, value = true );
|
2302
|
-
};
|
2303
|
-
|
2304
|
-
template<typename CharT, typename Traits, typename Alloc>
|
2305
|
-
struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, const CharT* >
|
2306
|
-
{
|
2307
|
-
BOOST_STATIC_CONSTANT(bool, value = true );
|
2308
|
-
};
|
2309
|
-
|
2310
|
-
template<typename CharT, typename Traits, typename Alloc>
|
2311
|
-
struct is_char_array_to_stdstring< boost::container::basic_string<CharT, Traits, Alloc>, CharT* >
|
2312
|
-
{
|
2313
|
-
BOOST_STATIC_CONSTANT(bool, value = true );
|
2314
|
-
};
|
2315
|
-
|
2316
|
-
template<typename CharT, typename Traits, typename Alloc>
|
2317
|
-
struct is_char_array_to_stdstring< boost::container::basic_string<CharT, Traits, Alloc>, const CharT* >
|
2318
|
-
{
|
2319
|
-
BOOST_STATIC_CONSTANT(bool, value = true );
|
2320
|
-
};
|
2321
|
-
|
2322
|
-
#if (defined _MSC_VER)
|
2323
|
-
# pragma warning( push )
|
2324
|
-
# pragma warning( disable : 4701 ) // possible use of ... before initialization
|
2325
|
-
# pragma warning( disable : 4702 ) // unreachable code
|
2326
|
-
# pragma warning( disable : 4267 ) // conversion from 'size_t' to 'unsigned int'
|
2327
|
-
#endif
|
2328
|
-
template<typename Target, typename Source>
|
2329
|
-
struct lexical_cast_do_cast
|
2330
|
-
{
|
2331
|
-
static inline Target lexical_cast_impl(const Source& arg)
|
2332
|
-
{
|
2333
|
-
typedef lexical_cast_stream_traits<Source, Target> stream_trait;
|
2334
|
-
|
2335
|
-
typedef detail::lexical_stream_limited_src<
|
2336
|
-
BOOST_DEDUCED_TYPENAME stream_trait::char_type,
|
2337
|
-
BOOST_DEDUCED_TYPENAME stream_trait::traits,
|
2338
|
-
stream_trait::requires_stringbuf
|
2339
|
-
> interpreter_type;
|
2340
|
-
|
2341
|
-
// Target type must be default constructible
|
2342
|
-
Target result;
|
2343
|
-
|
2344
|
-
BOOST_DEDUCED_TYPENAME stream_trait::char_type buf[stream_trait::len_t::value + 1];
|
2345
|
-
stream_trait::len_t::check_coverage();
|
2346
|
-
|
2347
|
-
interpreter_type interpreter(buf, buf + stream_trait::len_t::value + 1);
|
2348
|
-
|
2349
|
-
// Disabling ADL, by directly specifying operators.
|
2350
|
-
if(!(interpreter.operator <<(arg) && interpreter.operator >>(result)))
|
2351
|
-
BOOST_LCAST_THROW_BAD_CAST(Source, Target);
|
2352
|
-
|
2353
|
-
return result;
|
2354
|
-
}
|
2355
|
-
};
|
2356
|
-
#if (defined _MSC_VER)
|
2357
|
-
# pragma warning( pop )
|
2358
|
-
#endif
|
2359
|
-
|
2360
|
-
template <typename Source>
|
2361
|
-
struct lexical_cast_copy
|
2362
|
-
{
|
2363
|
-
static inline const Source& lexical_cast_impl(const Source &arg) BOOST_NOEXCEPT
|
2364
|
-
{
|
2365
|
-
return arg;
|
2366
|
-
}
|
2367
|
-
};
|
2368
|
-
|
2369
|
-
template <class Source, class Target >
|
2370
|
-
struct detect_precision_loss
|
2371
|
-
{
|
2372
|
-
typedef boost::numeric::Trunc<Source> Rounder;
|
2373
|
-
typedef Source source_type ;
|
2374
|
-
|
2375
|
-
typedef BOOST_DEDUCED_TYPENAME mpl::if_<
|
2376
|
-
boost::is_arithmetic<Source>, Source, Source const&
|
2377
|
-
>::type argument_type ;
|
2378
|
-
|
2379
|
-
static source_type nearbyint ( argument_type s )
|
2380
|
-
{
|
2381
|
-
const source_type near_int = Rounder::nearbyint(s);
|
2382
|
-
if (near_int) {
|
2383
|
-
const source_type orig_div_round = s / near_int;
|
2384
|
-
const source_type eps = std::numeric_limits<source_type>::epsilon();
|
2385
|
-
|
2386
|
-
if ((orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > eps)
|
2387
|
-
BOOST_LCAST_THROW_BAD_CAST(Source, Target);
|
2388
|
-
}
|
2389
|
-
|
2390
|
-
return s ;
|
2391
|
-
}
|
2392
|
-
|
2393
|
-
typedef typename Rounder::round_style round_style;
|
2394
|
-
} ;
|
2395
|
-
|
2396
|
-
template <class Source, class Target >
|
2397
|
-
struct nothrow_overflow_handler
|
2398
|
-
{
|
2399
|
-
void operator() ( boost::numeric::range_check_result r )
|
2400
|
-
{
|
2401
|
-
if (r != boost::numeric::cInRange)
|
2402
|
-
BOOST_LCAST_THROW_BAD_CAST(Source, Target);
|
2403
|
-
}
|
2404
|
-
} ;
|
2405
|
-
|
2406
|
-
template <typename Target, typename Source>
|
2407
|
-
struct lexical_cast_dynamic_num_not_ignoring_minus
|
2408
|
-
{
|
2409
|
-
static inline Target lexical_cast_impl(const Source &arg)
|
2410
|
-
{
|
2411
|
-
return boost::numeric::converter<
|
2412
|
-
Target,
|
2413
|
-
Source,
|
2414
|
-
boost::numeric::conversion_traits<Target,Source>,
|
2415
|
-
nothrow_overflow_handler<Source, Target>,
|
2416
|
-
detect_precision_loss<Source, Target>
|
2417
|
-
>::convert(arg);
|
2418
|
-
}
|
2419
|
-
};
|
2420
|
-
|
2421
|
-
template <typename Target, typename Source>
|
2422
|
-
struct lexical_cast_dynamic_num_ignoring_minus
|
2423
|
-
{
|
2424
|
-
static inline Target lexical_cast_impl(const Source &arg)
|
2425
|
-
{
|
2426
|
-
typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if_c<
|
2427
|
-
boost::is_float<Source>::value,
|
2428
|
-
boost::mpl::identity<Source>,
|
2429
|
-
boost::make_unsigned<Source>
|
2430
|
-
>::type usource_t;
|
2431
|
-
|
2432
|
-
typedef boost::numeric::converter<
|
2433
|
-
Target,
|
2434
|
-
usource_t,
|
2435
|
-
boost::numeric::conversion_traits<Target,usource_t>,
|
2436
|
-
nothrow_overflow_handler<usource_t, Target>,
|
2437
|
-
detect_precision_loss<usource_t, Target>
|
2438
|
-
> converter_t;
|
2439
|
-
|
2440
|
-
return (
|
2441
|
-
arg < 0 ? static_cast<Target>(0u - converter_t::convert(0u - arg)) : converter_t::convert(arg)
|
2442
|
-
);
|
2443
|
-
}
|
2444
|
-
};
|
2445
|
-
|
2446
|
-
/*
|
2447
|
-
* lexical_cast_dynamic_num follows the rules:
|
2448
|
-
* 1) If Source can be converted to Target without precision loss and
|
2449
|
-
* without overflows, then assign Source to Target and return
|
2450
|
-
*
|
2451
|
-
* 2) If Source is less than 0 and Target is an unsigned integer,
|
2452
|
-
* then negate Source, check the requirements of rule 1) and if
|
2453
|
-
* successful, assign static_casted Source to Target and return
|
2454
|
-
*
|
2455
|
-
* 3) Otherwise throw a bad_lexical_cast exception
|
2456
|
-
*
|
2457
|
-
*
|
2458
|
-
* Rule 2) required because boost::lexical_cast has the behavior of
|
2459
|
-
* stringstream, which uses the rules of scanf for conversions. And
|
2460
|
-
* in the C99 standard for unsigned input value minus sign is
|
2461
|
-
* optional, so if a negative number is read, no errors will arise
|
2462
|
-
* and the result will be the two's complement.
|
2463
|
-
*/
|
2464
|
-
template <typename Target, typename Source>
|
2465
|
-
struct lexical_cast_dynamic_num
|
2466
|
-
{
|
2467
|
-
static inline Target lexical_cast_impl(const Source &arg)
|
2468
|
-
{
|
2469
|
-
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
2470
|
-
boost::type_traits::ice_and<
|
2471
|
-
boost::type_traits::ice_or<
|
2472
|
-
boost::is_signed<Source>::value,
|
2473
|
-
boost::is_float<Source>::value
|
2474
|
-
>::value,
|
2475
|
-
boost::type_traits::ice_not<
|
2476
|
-
boost::is_same<Source, bool>::value
|
2477
|
-
>::value,
|
2478
|
-
boost::type_traits::ice_not<
|
2479
|
-
boost::is_same<Target, bool>::value
|
2480
|
-
>::value,
|
2481
|
-
boost::is_unsigned<Target>::value
|
2482
|
-
>::value,
|
2483
|
-
lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
|
2484
|
-
lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
|
2485
|
-
>::type caster_type;
|
2486
|
-
|
2487
|
-
return caster_type::lexical_cast_impl(arg);
|
2488
|
-
}
|
2489
|
-
};
|
2490
|
-
}
|
31
|
+
#include <boost/lexical_cast/bad_lexical_cast.hpp>
|
32
|
+
#include <boost/lexical_cast/try_lexical_convert.hpp>
|
2491
33
|
|
34
|
+
namespace boost
|
35
|
+
{
|
2492
36
|
template <typename Target, typename Source>
|
2493
37
|
inline Target lexical_cast(const Source &arg)
|
2494
38
|
{
|
2495
|
-
|
2496
|
-
|
2497
|
-
typedef BOOST_DEDUCED_TYPENAME boost::type_traits::ice_or<
|
2498
|
-
boost::detail::is_xchar_to_xchar<Target, src >::value,
|
2499
|
-
boost::detail::is_char_array_to_stdstring<Target, src >::value,
|
2500
|
-
boost::type_traits::ice_and<
|
2501
|
-
boost::is_same<Target, src >::value,
|
2502
|
-
boost::detail::is_stdstring<Target >::value
|
2503
|
-
>::value
|
2504
|
-
> shall_we_copy_t;
|
2505
|
-
|
2506
|
-
typedef BOOST_DEDUCED_TYPENAME
|
2507
|
-
boost::detail::is_arithmetic_and_not_xchars<Target, src > shall_we_copy_with_dynamic_check_t;
|
39
|
+
Target result;
|
2508
40
|
|
2509
|
-
|
2510
|
-
|
2511
|
-
|
2512
|
-
BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
2513
|
-
shall_we_copy_with_dynamic_check_t::value,
|
2514
|
-
boost::detail::lexical_cast_dynamic_num<Target, src >,
|
2515
|
-
boost::detail::lexical_cast_do_cast<Target, src >
|
2516
|
-
>::type
|
2517
|
-
>::type caster_type;
|
41
|
+
if (!boost::conversion::detail::try_lexical_convert(arg, result)) {
|
42
|
+
boost::conversion::detail::throw_bad_cast<Source, Target>();
|
43
|
+
}
|
2518
44
|
|
2519
|
-
return
|
45
|
+
return result;
|
2520
46
|
}
|
2521
47
|
|
2522
48
|
template <typename Target>
|
2523
49
|
inline Target lexical_cast(const char* chars, std::size_t count)
|
2524
|
-
|
50
|
+
{
|
2525
51
|
return ::boost::lexical_cast<Target>(
|
2526
52
|
::boost::iterator_range<const char*>(chars, chars + count)
|
2527
53
|
);
|
2528
54
|
}
|
2529
55
|
|
2530
|
-
|
2531
56
|
template <typename Target>
|
2532
57
|
inline Target lexical_cast(const unsigned char* chars, std::size_t count)
|
2533
58
|
{
|
2534
|
-
|
59
|
+
return ::boost::lexical_cast<Target>(
|
2535
60
|
::boost::iterator_range<const unsigned char*>(chars, chars + count)
|
2536
|
-
|
2537
|
-
|
61
|
+
);
|
62
|
+
}
|
2538
63
|
|
2539
64
|
template <typename Target>
|
2540
65
|
inline Target lexical_cast(const signed char* chars, std::size_t count)
|
@@ -2553,7 +78,7 @@ namespace boost {
|
|
2553
78
|
);
|
2554
79
|
}
|
2555
80
|
#endif
|
2556
|
-
#ifndef
|
81
|
+
#ifndef BOOST_NO_CXX11_CHAR16_T
|
2557
82
|
template <typename Target>
|
2558
83
|
inline Target lexical_cast(const char16_t* chars, std::size_t count)
|
2559
84
|
{
|
@@ -2562,7 +87,7 @@ namespace boost {
|
|
2562
87
|
);
|
2563
88
|
}
|
2564
89
|
#endif
|
2565
|
-
#ifndef
|
90
|
+
#ifndef BOOST_NO_CXX11_CHAR32_T
|
2566
91
|
template <typename Target>
|
2567
92
|
inline Target lexical_cast(const char32_t* chars, std::size_t count)
|
2568
93
|
{
|
@@ -2574,152 +99,7 @@ namespace boost {
|
|
2574
99
|
|
2575
100
|
} // namespace boost
|
2576
101
|
|
2577
|
-
#else // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
2578
|
-
|
2579
|
-
namespace boost {
|
2580
|
-
namespace detail
|
2581
|
-
{
|
2582
|
-
|
2583
|
-
// selectors for choosing stream character type
|
2584
|
-
template<typename Type>
|
2585
|
-
struct stream_char
|
2586
|
-
{
|
2587
|
-
typedef char type;
|
2588
|
-
};
|
2589
|
-
|
2590
|
-
#ifndef BOOST_LCAST_NO_WCHAR_T
|
2591
|
-
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
2592
|
-
template<>
|
2593
|
-
struct stream_char<wchar_t>
|
2594
|
-
{
|
2595
|
-
typedef wchar_t type;
|
2596
|
-
};
|
2597
|
-
#endif
|
2598
|
-
|
2599
|
-
template<>
|
2600
|
-
struct stream_char<wchar_t *>
|
2601
|
-
{
|
2602
|
-
typedef wchar_t type;
|
2603
|
-
};
|
2604
|
-
|
2605
|
-
template<>
|
2606
|
-
struct stream_char<const wchar_t *>
|
2607
|
-
{
|
2608
|
-
typedef wchar_t type;
|
2609
|
-
};
|
2610
|
-
|
2611
|
-
template<>
|
2612
|
-
struct stream_char<std::wstring>
|
2613
|
-
{
|
2614
|
-
typedef wchar_t type;
|
2615
|
-
};
|
2616
|
-
#endif
|
2617
|
-
|
2618
|
-
// stream wrapper for handling lexical conversions
|
2619
|
-
template<typename Target, typename Source, typename Traits>
|
2620
|
-
class lexical_stream
|
2621
|
-
{
|
2622
|
-
private:
|
2623
|
-
typedef typename widest_char<
|
2624
|
-
typename stream_char<Target>::type,
|
2625
|
-
typename stream_char<Source>::type>::type char_type;
|
2626
|
-
|
2627
|
-
typedef Traits traits_type;
|
2628
|
-
|
2629
|
-
public:
|
2630
|
-
lexical_stream(char_type* = 0, char_type* = 0)
|
2631
|
-
{
|
2632
|
-
stream.unsetf(std::ios::skipws);
|
2633
|
-
lcast_set_precision(stream, static_cast<Source*>(0), static_cast<Target*>(0) );
|
2634
|
-
}
|
2635
|
-
~lexical_stream()
|
2636
|
-
{
|
2637
|
-
#if defined(BOOST_NO_STRINGSTREAM)
|
2638
|
-
stream.freeze(false);
|
2639
|
-
#endif
|
2640
|
-
}
|
2641
|
-
bool operator<<(const Source &input)
|
2642
|
-
{
|
2643
|
-
return !(stream << input).fail();
|
2644
|
-
}
|
2645
|
-
template<typename InputStreamable>
|
2646
|
-
bool operator>>(InputStreamable &output)
|
2647
|
-
{
|
2648
|
-
return !is_pointer<InputStreamable>::value &&
|
2649
|
-
stream >> output &&
|
2650
|
-
stream.get() ==
|
2651
|
-
#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
|
2652
|
-
// GCC 2.9x lacks std::char_traits<>::eof().
|
2653
|
-
// We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
|
2654
|
-
// configurations, which do provide std::char_traits<>::eof().
|
2655
|
-
|
2656
|
-
EOF;
|
2657
|
-
#else
|
2658
|
-
traits_type::eof();
|
2659
|
-
#endif
|
2660
|
-
}
|
2661
|
-
|
2662
|
-
bool operator>>(std::string &output)
|
2663
|
-
{
|
2664
|
-
#if defined(BOOST_NO_STRINGSTREAM)
|
2665
|
-
stream << '\0';
|
2666
|
-
#endif
|
2667
|
-
stream.str().swap(output);
|
2668
|
-
return true;
|
2669
|
-
}
|
2670
|
-
#ifndef BOOST_LCAST_NO_WCHAR_T
|
2671
|
-
bool operator>>(std::wstring &output)
|
2672
|
-
{
|
2673
|
-
stream.str().swap(output);
|
2674
|
-
return true;
|
2675
|
-
}
|
2676
|
-
#endif
|
2677
|
-
|
2678
|
-
private:
|
2679
|
-
#if defined(BOOST_NO_STRINGSTREAM)
|
2680
|
-
std::strstream stream;
|
2681
|
-
#elif defined(BOOST_NO_STD_LOCALE)
|
2682
|
-
std::stringstream stream;
|
2683
|
-
#else
|
2684
|
-
std::basic_stringstream<char_type,traits_type> stream;
|
2685
|
-
#endif
|
2686
|
-
};
|
2687
|
-
}
|
2688
|
-
|
2689
|
-
// call-by-value fallback version (deprecated)
|
2690
|
-
|
2691
|
-
template<typename Target, typename Source>
|
2692
|
-
Target lexical_cast(Source arg)
|
2693
|
-
{
|
2694
|
-
typedef typename detail::widest_char<
|
2695
|
-
BOOST_DEDUCED_TYPENAME detail::stream_char<Target>::type
|
2696
|
-
, BOOST_DEDUCED_TYPENAME detail::stream_char<Source>::type
|
2697
|
-
>::type char_type;
|
2698
|
-
|
2699
|
-
typedef std::char_traits<char_type> traits;
|
2700
|
-
detail::lexical_stream<Target, Source, traits> interpreter;
|
2701
|
-
Target result;
|
2702
|
-
|
2703
|
-
if(!(interpreter << arg && interpreter >> result))
|
2704
|
-
BOOST_LCAST_THROW_BAD_CAST(Source, Target);
|
2705
|
-
return result;
|
2706
|
-
}
|
2707
|
-
|
2708
|
-
} // namespace boost
|
2709
|
-
|
2710
|
-
#endif
|
2711
|
-
|
2712
|
-
// Copyright Kevlin Henney, 2000-2005.
|
2713
|
-
// Copyright Alexander Nasonov, 2006-2010.
|
2714
|
-
// Copyright Antony Polukhin, 2011-2013.
|
2715
|
-
//
|
2716
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
2717
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
2718
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
2719
|
-
|
2720
|
-
#undef BOOST_LCAST_THROW_BAD_CAST
|
2721
102
|
#undef BOOST_LCAST_NO_WCHAR_T
|
2722
|
-
#undef BOOST_LCAST_HAS_INT128
|
2723
103
|
|
2724
104
|
#endif // BOOST_LEXICAL_CAST_INCLUDED
|
2725
105
|
|