From 50e35af1a6d07db9db5bac2bd3b895c6b50afe10 Mon Sep 17 00:00:00 2001 From: Ken Date: Fri, 18 Sep 2020 17:01:17 -0400 Subject: [PATCH] Updated includes for wrtc bh 4147 --- .../absl/algorithm/algorithm.h | 0 .../absl/algorithm/container.h | 0 {webrtc => include}/absl/base/attributes.h | 0 {webrtc => include}/absl/base/call_once.h | 0 {webrtc => include}/absl/base/casts.h | 0 {webrtc => include}/absl/base/config.h | 0 {webrtc => include}/absl/base/const_init.h | 0 .../absl/base/dynamic_annotations.h | 0 .../absl/base/internal/atomic_hook.h | 0 .../base/internal/atomic_hook_test_helper.h | 0 {webrtc => include}/absl/base/internal/bits.h | 0 .../absl/base/internal/cycleclock.h | 0 .../absl/base/internal/direct_mmap.h | 0 .../absl/base/internal/endian.h | 0 .../absl/base/internal/errno_saver.h | 0 .../base/internal/exception_safety_testing.h | 0 .../absl/base/internal/exception_testing.h | 0 .../absl/base/internal/exponential_biased.h | 0 .../absl/base/internal/fast_type_id.h | 0 .../absl/base/internal/hide_ptr.h | 0 .../absl/base/internal/identity.h | 0 .../absl/base/internal/inline_variable.h | 0 .../base/internal/inline_variable_testing.h | 0 .../absl/base/internal/invoke.h | 0 .../absl/base/internal/low_level_alloc.h | 0 .../absl/base/internal/low_level_scheduling.h | 0 .../absl/base/internal/per_thread_tls.h | 0 .../absl/base/internal/periodic_sampler.h | 0 .../absl/base/internal/pretty_function.h | 0 .../absl/base/internal/raw_logging.h | 0 .../absl/base/internal/scheduling_mode.h | 0 .../absl/base/internal/scoped_set_env.h | 0 .../absl/base/internal/spinlock.h | 0 .../absl/base/internal/spinlock_wait.h | 0 .../absl/base/internal/strerror.h | 0 .../absl/base/internal/sysinfo.h | 0 .../absl/base/internal/thread_identity.h | 0 .../absl/base/internal/throw_delegate.h | 0 .../absl/base/internal/tsan_mutex_interface.h | 0 .../absl/base/internal/unaligned_access.h | 0 .../absl/base/internal/unscaledcycleclock.h | 0 {webrtc => include}/absl/base/log_severity.h | 0 {webrtc => include}/absl/base/macros.h | 0 {webrtc => include}/absl/base/optimization.h | 0 {webrtc => include}/absl/base/options.h | 0 {webrtc => include}/absl/base/policy_checks.h | 0 {webrtc => include}/absl/base/port.h | 0 .../absl/base/thread_annotations.h | 0 .../absl/container/btree_map.h | 0 .../absl/container/btree_set.h | 0 .../absl/container/btree_test.h | 0 .../absl/container/fixed_array.h | 0 .../absl/container/flat_hash_map.h | 0 .../absl/container/flat_hash_set.h | 0 .../absl/container/inlined_vector.h | 0 .../absl/container/internal/btree.h | 0 .../absl/container/internal/btree_container.h | 0 .../absl/container/internal/common.h | 0 .../container/internal/compressed_tuple.h | 0 .../container/internal/container_memory.h | 0 .../container/internal/counting_allocator.h | 0 .../internal/hash_function_defaults.h | 0 .../internal/hash_generator_testing.h | 0 .../container/internal/hash_policy_testing.h | 0 .../container/internal/hash_policy_traits.h | 0 .../absl/container/internal/hashtable_debug.h | 0 .../internal/hashtable_debug_hooks.h | 0 .../container/internal/hashtablez_sampler.h | 0 .../absl/container/internal/have_sse.h | 0 .../absl/container/internal/inlined_vector.h | 0 .../absl/container/internal/layout.h | 0 .../container/internal/node_hash_policy.h | 0 .../absl/container/internal/raw_hash_map.h | 0 .../absl/container/internal/raw_hash_set.h | 0 .../internal/test_instance_tracker.h | 0 .../absl/container/internal/tracked.h | 0 .../internal/unordered_map_constructor_test.h | 0 .../internal/unordered_map_lookup_test.h | 0 .../internal/unordered_map_members_test.h | 0 .../internal/unordered_map_modifiers_test.h | 0 .../internal/unordered_set_constructor_test.h | 0 .../internal/unordered_set_lookup_test.h | 0 .../internal/unordered_set_members_test.h | 0 .../internal/unordered_set_modifiers_test.h | 0 .../absl/container/node_hash_map.h | 0 .../absl/container/node_hash_set.h | 0 .../absl/debugging/failure_signal_handler.h | 0 .../debugging/internal/address_is_readable.h | 0 .../absl/debugging/internal/demangle.h | 0 .../absl/debugging/internal/elf_mem_image.h | 0 .../absl/debugging/internal/examine_stack.h | 0 .../debugging/internal/stack_consumption.h | 0 .../debugging/internal/stacktrace_config.h | 0 .../absl/debugging/internal/symbolize.h | 0 .../absl/debugging/internal/vdso_support.h | 0 .../absl/debugging/leak_check.h | 0 .../absl/debugging/stacktrace.h | 0 .../absl/debugging/symbolize.h | 0 {webrtc => include}/absl/flags/config.h | 0 {webrtc => include}/absl/flags/declare.h | 0 {webrtc => include}/absl/flags/flag.h | 0 .../absl/flags/internal/commandlineflag.h | 0 .../absl/flags/internal/flag.h | 0 .../absl/flags/internal/parse.h | 0 .../absl/flags/internal/path_util.h | 0 .../flags/internal/private_handle_accessor.h | 0 .../absl/flags/internal/program_name.h | 0 .../absl/flags/internal/registry.h | 0 .../absl/flags/internal/type_erased.h | 0 .../absl/flags/internal/usage.h | 0 {webrtc => include}/absl/flags/marshalling.h | 0 {webrtc => include}/absl/flags/parse.h | 0 {webrtc => include}/absl/flags/usage.h | 0 {webrtc => include}/absl/flags/usage_config.h | 0 .../absl/functional/bind_front.h | 0 .../absl/functional/function_ref.h | 0 .../absl/functional/internal/front_binder.h | 0 .../absl/functional/internal/function_ref.h | 0 {webrtc => include}/absl/hash/hash.h | 0 {webrtc => include}/absl/hash/hash_testing.h | 0 {webrtc => include}/absl/hash/internal/city.h | 0 {webrtc => include}/absl/hash/internal/hash.h | 0 .../absl/hash/internal/spy_hash_state.h | 0 {webrtc => include}/absl/memory/memory.h | 0 {webrtc => include}/absl/meta/type_traits.h | 0 {webrtc => include}/absl/numeric/int128.h | 0 .../absl/random/bernoulli_distribution.h | 0 .../absl/random/beta_distribution.h | 0 {webrtc => include}/absl/random/bit_gen_ref.h | 0 .../absl/random/discrete_distribution.h | 0 .../absl/random/distributions.h | 0 .../absl/random/exponential_distribution.h | 0 .../absl/random/gaussian_distribution.h | 0 .../absl/random/internal/chi_square.h | 0 .../random/internal/distribution_caller.h | 0 .../random/internal/distribution_test_util.h | 0 .../absl/random/internal/distributions.h | 0 .../absl/random/internal/explicit_seed_seq.h | 0 .../absl/random/internal/fast_uniform_bits.h | 0 .../absl/random/internal/fastmath.h | 0 .../absl/random/internal/generate_real.h | 0 .../random/internal/iostream_state_saver.h | 0 .../absl/random/internal/mock_overload_set.h | 0 .../random/internal/mocking_bit_gen_base.h | 0 .../absl/random/internal/nanobenchmark.h | 0 .../absl/random/internal/nonsecure_base.h | 0 .../absl/random/internal/pcg_engine.h | 0 .../absl/random/internal/platform.h | 0 .../absl/random/internal/pool_urbg.h | 0 .../absl/random/internal/randen.h | 0 .../absl/random/internal/randen_detect.h | 0 .../absl/random/internal/randen_engine.h | 0 .../absl/random/internal/randen_hwaes.h | 0 .../absl/random/internal/randen_slow.h | 0 .../absl/random/internal/randen_traits.h | 0 .../absl/random/internal/salted_seed_seq.h | 0 .../absl/random/internal/seed_material.h | 0 .../absl/random/internal/sequence_urbg.h | 0 .../absl/random/internal/traits.h | 0 .../absl/random/internal/uniform_helper.h | 0 .../absl/random/internal/wide_multiply.h | 0 .../random/log_uniform_int_distribution.h | 0 .../absl/random/mock_distributions.h | 0 .../absl/random/mocking_bit_gen.h | 0 .../absl/random/poisson_distribution.h | 0 {webrtc => include}/absl/random/random.h | 0 .../absl/random/seed_gen_exception.h | 0 .../absl/random/seed_sequences.h | 0 .../absl/random/uniform_int_distribution.h | 0 .../absl/random/uniform_real_distribution.h | 0 .../absl/random/zipf_distribution.h | 0 {webrtc => include}/absl/status/status.h | 0 .../absl/status/status_payload_printer.h | 0 {webrtc => include}/absl/strings/ascii.h | 0 {webrtc => include}/absl/strings/charconv.h | 0 {webrtc => include}/absl/strings/cord.h | 0 .../absl/strings/cord_test_helpers.h | 0 {webrtc => include}/absl/strings/escaping.h | 0 .../absl/strings/internal/char_map.h | 0 .../absl/strings/internal/charconv_bigint.h | 0 .../absl/strings/internal/charconv_parse.h | 0 .../absl/strings/internal/cord_internal.h | 0 .../absl/strings/internal/escaping.h | 0 .../strings/internal/escaping_test_common.h | 0 .../absl/strings/internal/memutil.h | 0 .../strings/internal/numbers_test_common.h | 0 .../absl/strings/internal/ostringstream.h | 0 .../absl/strings/internal/pow10_helper.h | 0 .../strings/internal/resize_uninitialized.h | 0 .../absl/strings/internal/stl_type_traits.h | 0 .../absl/strings/internal/str_format/arg.h | 0 .../absl/strings/internal/str_format/bind.h | 0 .../strings/internal/str_format/checker.h | 0 .../strings/internal/str_format/extension.h | 0 .../internal/str_format/float_conversion.h | 0 .../absl/strings/internal/str_format/output.h | 0 .../absl/strings/internal/str_format/parser.h | 0 .../absl/strings/internal/str_join_internal.h | 0 .../strings/internal/str_split_internal.h | 0 .../absl/strings/internal/utf8.h | 0 {webrtc => include}/absl/strings/match.h | 0 {webrtc => include}/absl/strings/numbers.h | 0 {webrtc => include}/absl/strings/str_cat.h | 0 {webrtc => include}/absl/strings/str_format.h | 0 {webrtc => include}/absl/strings/str_join.h | 0 .../absl/strings/str_replace.h | 0 {webrtc => include}/absl/strings/str_split.h | 0 .../absl/strings/string_view.h | 0 {webrtc => include}/absl/strings/strip.h | 0 {webrtc => include}/absl/strings/substitute.h | 0 .../absl/synchronization/barrier.h | 0 .../absl/synchronization/blocking_counter.h | 0 .../internal/create_thread_identity.h | 0 .../synchronization/internal/graphcycles.h | 0 .../synchronization/internal/kernel_timeout.h | 0 .../synchronization/internal/per_thread_sem.h | 0 .../synchronization/internal/thread_pool.h | 0 .../absl/synchronization/internal/waiter.h | 0 .../absl/synchronization/mutex.h | 0 .../absl/synchronization/notification.h | 0 {webrtc => include}/absl/time/civil_time.h | 0 {webrtc => include}/absl/time/clock.h | 0 .../internal/cctz/include/cctz/civil_time.h | 0 .../cctz/include/cctz/civil_time_detail.h | 0 .../internal/cctz/include/cctz/time_zone.h | 0 .../cctz/include/cctz/zone_info_source.h | 0 .../time/internal/cctz/src/time_zone_fixed.h | 0 .../time/internal/cctz/src/time_zone_if.h | 0 .../time/internal/cctz/src/time_zone_impl.h | 0 .../time/internal/cctz/src/time_zone_info.h | 0 .../time/internal/cctz/src/time_zone_libc.h | 0 .../time/internal/cctz/src/time_zone_posix.h | 0 .../absl/time/internal/cctz/src/tzfile.h | 0 .../absl/time/internal/test_util.h | 0 {webrtc => include}/absl/time/time.h | 0 {webrtc => include}/absl/types/any.h | 0 {webrtc => include}/absl/types/bad_any_cast.h | 0 .../absl/types/bad_optional_access.h | 0 .../absl/types/bad_variant_access.h | 0 {webrtc => include}/absl/types/compare.h | 0 .../absl/types/internal/conformance_aliases.h | 0 .../types/internal/conformance_archetype.h | 0 .../absl/types/internal/conformance_profile.h | 0 .../absl/types/internal/conformance_testing.h | 0 .../internal/conformance_testing_helpers.h | 0 .../absl/types/internal/optional.h | 0 .../absl/types/internal/parentheses.h | 0 .../absl/types/internal/span.h | 0 .../absl/types/internal/transform_args.h | 0 .../absl/types/internal/variant.h | 0 {webrtc => include}/absl/types/optional.h | 0 {webrtc => include}/absl/types/span.h | 0 {webrtc => include}/absl/types/variant.h | 0 {webrtc => include}/absl/utility/utility.h | 0 .../third_party => include}/json/allocator.h | 0 .../third_party => include}/json/assertions.h | 0 .../third_party => include}/json/autolink.h | 0 {webrtc/third_party => include}/json/config.h | 0 .../third_party => include}/json/features.h | 0 .../third_party => include}/json/forwards.h | 0 {webrtc/third_party => include}/json/json.h | 0 {webrtc/third_party => include}/json/reader.h | 0 {webrtc/third_party => include}/json/value.h | 0 .../third_party => include}/json/version.h | 0 {webrtc/third_party => include}/json/writer.h | 0 include/libc++/CMakeLists.txt | 274 + include/libc++/__bit_reference | 1280 ++++ include/libc++/__bsd_locale_defaults.h | 36 + include/libc++/__bsd_locale_fallbacks.h | 139 + include/libc++/__config | 1483 ++++ include/libc++/__config_site.in | 36 + include/libc++/__debug | 279 + include/libc++/__errc | 217 + include/libc++/__functional_03 | 1591 ++++ include/libc++/__functional_base | 652 ++ include/libc++/__functional_base_03 | 223 + include/libc++/__hash_table | 2913 +++++++ include/libc++/__libcpp_version | 1 + include/libc++/__locale | 1553 ++++ include/libc++/__mutex_base | 541 ++ include/libc++/__node_handle | 208 + include/libc++/__nullptr | 61 + include/libc++/__split_buffer | 644 ++ include/libc++/__sso_allocator | 76 + include/libc++/__std_stream | 361 + include/libc++/__string | 985 +++ include/libc++/__threading_support | 490 ++ include/libc++/__tree | 2843 +++++++ include/libc++/__tuple | 551 ++ include/libc++/__undef_macros | 33 + include/libc++/algorithm | 5685 ++++++++++++++ include/libc++/any | 671 ++ include/libc++/array | 484 ++ include/libc++/atomic | 2442 ++++++ include/libc++/bit | 486 ++ include/libc++/bitset | 1109 +++ include/libc++/cassert | 24 + include/libc++/ccomplex | 28 + include/libc++/cctype | 120 + include/libc++/cerrno | 32 + include/libc++/cfenv | 81 + include/libc++/cfloat | 79 + include/libc++/charconv | 616 ++ include/libc++/chrono | 2960 ++++++++ include/libc++/cinttypes | 257 + include/libc++/ciso646 | 24 + include/libc++/climits | 47 + include/libc++/clocale | 54 + include/libc++/cmath | 673 ++ include/libc++/codecvt | 549 ++ include/libc++/compare | 678 ++ include/libc++/complex | 1495 ++++ include/libc++/complex.h | 36 + include/libc++/condition_variable | 268 + include/libc++/csetjmp | 47 + include/libc++/csignal | 57 + include/libc++/cstdarg | 47 + include/libc++/cstdbool | 31 + include/libc++/cstddef | 113 + include/libc++/cstdint | 190 + include/libc++/cstdio | 171 + include/libc++/cstdlib | 163 + include/libc++/cstring | 96 + include/libc++/ctgmath | 28 + include/libc++/ctime | 81 + include/libc++/ctype.h | 59 + include/libc++/cwchar | 192 + include/libc++/cwctype | 86 + include/libc++/deque | 3039 ++++++++ include/libc++/errno.h | 397 + include/libc++/exception | 329 + include/libc++/execution | 19 + include/libc++/experimental/__config | 79 + include/libc++/experimental/__memory | 89 + include/libc++/experimental/algorithm | 59 + include/libc++/experimental/coroutine | 334 + include/libc++/experimental/deque | 46 + include/libc++/experimental/filesystem | 256 + include/libc++/experimental/forward_list | 46 + include/libc++/experimental/functional | 458 ++ include/libc++/experimental/iterator | 113 + include/libc++/experimental/list | 46 + include/libc++/experimental/map | 56 + include/libc++/experimental/memory_resource | 426 ++ include/libc++/experimental/propagate_const | 578 ++ include/libc++/experimental/regex | 61 + include/libc++/experimental/set | 56 + include/libc++/experimental/simd | 1569 ++++ include/libc++/experimental/string | 61 + include/libc++/experimental/type_traits | 154 + include/libc++/experimental/unordered_map | 64 + include/libc++/experimental/unordered_set | 58 + include/libc++/experimental/utility | 46 + include/libc++/experimental/vector | 46 + include/libc++/ext/__hash | 133 + include/libc++/ext/hash_map | 983 +++ include/libc++/ext/hash_set | 659 ++ include/libc++/fenv.h | 116 + include/libc++/filesystem | 2644 +++++++ include/libc++/float.h | 93 + include/libc++/forward_list | 1781 +++++ include/libc++/fstream | 1763 +++++ include/libc++/functional | 3096 ++++++++ include/libc++/future | 2608 +++++++ include/libc++/initializer_list | 117 + include/libc++/inttypes.h | 262 + include/libc++/iomanip | 670 ++ include/libc++/ios | 1066 +++ include/libc++/iosfwd | 220 + include/libc++/iostream | 63 + include/libc++/istream | 1651 ++++ include/libc++/iterator | 1938 +++++ include/libc++/limits | 818 ++ include/libc++/limits.h | 64 + include/libc++/list | 2488 ++++++ include/libc++/locale | 4353 +++++++++++ include/libc++/locale.h | 44 + include/libc++/map | 2246 ++++++ include/libc++/math.h | 1574 ++++ include/libc++/memory | 5370 +++++++++++++ include/libc++/module.modulemap | 612 ++ include/libc++/mutex | 711 ++ include/libc++/new | 372 + include/libc++/numeric | 593 ++ include/libc++/optional | 1420 ++++ include/libc++/ostream | 1107 +++ include/libc++/queue | 803 ++ include/libc++/random | 6743 +++++++++++++++++ include/libc++/ratio | 532 ++ include/libc++/regex | 6662 ++++++++++++++++ include/libc++/scoped_allocator | 683 ++ include/libc++/set | 1493 ++++ include/libc++/setjmp.h | 44 + include/libc++/shared_mutex | 508 ++ include/libc++/span | 591 ++ include/libc++/sstream | 985 +++ include/libc++/stack | 321 + include/libc++/stdbool.h | 38 + include/libc++/stddef.h | 62 + include/libc++/stdexcept | 304 + include/libc++/stdint.h | 125 + include/libc++/stdio.h | 119 + include/libc++/stdlib.h | 103 + include/libc++/streambuf | 500 ++ include/libc++/string | 4365 +++++++++++ include/libc++/string.h | 109 + include/libc++/string_view | 840 ++ include/libc++/strstream | 399 + .../libc++/support/android/locale_bionic.h | 67 + include/libc++/support/fuchsia/xlocale.h | 22 + include/libc++/support/ibm/limits.h | 98 + include/libc++/support/ibm/locale_mgmt_aix.h | 84 + include/libc++/support/ibm/support.h | 53 + include/libc++/support/ibm/xlocale.h | 270 + include/libc++/support/musl/xlocale.h | 57 + include/libc++/support/newlib/xlocale.h | 27 + .../libc++/support/solaris/floatingpoint.h | 13 + include/libc++/support/solaris/wchar.h | 46 + include/libc++/support/solaris/xlocale.h | 76 + .../libc++/support/win32/limits_msvc_win32.h | 71 + include/libc++/support/win32/locale_win32.h | 198 + .../support/xlocale/__nop_locale_mgmt.h | 51 + .../support/xlocale/__posix_l_fallback.h | 164 + .../support/xlocale/__strtonum_fallback.h | 66 + include/libc++/system_error | 486 ++ include/libc++/tgmath.h | 36 + include/libc++/thread | 420 + include/libc++/tuple | 1451 ++++ include/libc++/type_traits | 4060 ++++++++++ include/libc++/typeindex | 102 + include/libc++/typeinfo | 350 + include/libc++/unordered_map | 2445 ++++++ include/libc++/unordered_set | 1680 ++++ include/libc++/utility | 1619 ++++ include/libc++/valarray | 4942 ++++++++++++ include/libc++/variant | 1668 ++++ include/libc++/vector | 3406 +++++++++ include/libc++/version | 237 + include/libc++/wchar.h | 181 + include/libc++/wctype.h | 78 + include/libc++abi/__cxxabi_config.h | 72 + include/libc++abi/cxxabi.h | 176 + {webrtc => include/webrtc}/api/array_view.h | 0 .../webrtc}/api/async_resolver_factory.h | 0 .../webrtc}/api/audio/audio_frame.h | 0 .../webrtc}/api/audio/audio_mixer.h | 0 .../webrtc}/api/audio/channel_layout.h | 0 .../api/audio/echo_canceller3_config.h | 0 .../api/audio/echo_canceller3_config_json.h | 0 .../api/audio/echo_canceller3_factory.h | 0 .../webrtc}/api/audio/echo_control.h | 0 .../webrtc}/api/audio/echo_detector_creator.h | 0 .../api/audio_codecs/L16/audio_decoder_L16.h | 0 .../api/audio_codecs/L16/audio_encoder_L16.h | 0 .../api/audio_codecs/audio_codec_pair_id.h | 0 .../webrtc}/api/audio_codecs/audio_decoder.h | 0 .../api/audio_codecs/audio_decoder_factory.h | 0 .../audio_decoder_factory_template.h | 0 .../webrtc}/api/audio_codecs/audio_encoder.h | 0 .../api/audio_codecs/audio_encoder_factory.h | 0 .../audio_encoder_factory_template.h | 0 .../webrtc}/api/audio_codecs/audio_format.h | 0 .../builtin_audio_decoder_factory.h | 0 .../builtin_audio_encoder_factory.h | 0 .../audio_codecs/g711/audio_decoder_g711.h | 0 .../audio_codecs/g711/audio_encoder_g711.h | 0 .../audio_codecs/g722/audio_decoder_g722.h | 0 .../audio_codecs/g722/audio_encoder_g722.h | 0 .../g722/audio_encoder_g722_config.h | 0 .../audio_codecs/ilbc/audio_decoder_ilbc.h | 0 .../audio_codecs/ilbc/audio_encoder_ilbc.h | 0 .../ilbc/audio_encoder_ilbc_config.h | 0 .../audio_codecs/isac/audio_decoder_isac.h | 0 .../isac/audio_decoder_isac_fix.h | 0 .../isac/audio_decoder_isac_float.h | 0 .../audio_codecs/isac/audio_encoder_isac.h | 0 .../isac/audio_encoder_isac_fix.h | 0 .../isac/audio_encoder_isac_float.h | 0 .../opus/audio_decoder_multi_channel_opus.h | 0 .../audio_decoder_multi_channel_opus_config.h | 0 .../audio_codecs/opus/audio_decoder_opus.h | 0 .../opus/audio_encoder_multi_channel_opus.h | 0 .../audio_encoder_multi_channel_opus_config.h | 0 .../audio_codecs/opus/audio_encoder_opus.h | 0 .../opus/audio_encoder_opus_config.h | 0 .../audio_codecs/opus_audio_decoder_factory.h | 0 .../audio_codecs/opus_audio_encoder_factory.h | 0 .../webrtc}/api/audio_options.h | 0 .../webrtc}/api/call/audio_sink.h | 0 .../webrtc}/api/call/bitrate_allocation.h | 0 .../webrtc}/api/call/call_factory_interface.h | 0 .../webrtc}/api/call/transport.h | 0 {webrtc => include/webrtc}/api/candidate.h | 0 .../api/create_peerconnection_factory.h | 0 .../webrtc}/api/crypto/crypto_options.h | 0 .../api/crypto/frame_decryptor_interface.h | 0 .../api/crypto/frame_encryptor_interface.h | 0 .../webrtc}/api/crypto_params.h | 0 .../webrtc}/api/data_channel_interface.h | 0 .../webrtc}/api/dtls_transport_interface.h | 0 .../webrtc}/api/dtmf_sender_interface.h | 0 .../webrtc}/api/fec_controller.h | 0 .../webrtc}/api/fec_controller_override.h | 0 .../webrtc}/api/frame_transformer_interface.h | 0 .../webrtc}/api/function_view.h | 0 .../webrtc}/api/ice_transport_factory.h | 0 .../webrtc}/api/ice_transport_interface.h | 0 {webrtc => include/webrtc}/api/jsep.h | 0 .../webrtc}/api/jsep_ice_candidate.h | 0 .../webrtc}/api/jsep_session_description.h | 0 .../webrtc}/api/media_stream_interface.h | 0 .../webrtc}/api/media_stream_proxy.h | 0 .../webrtc}/api/media_stream_track_proxy.h | 0 {webrtc => include/webrtc}/api/media_types.h | 0 .../webrtc}/api/neteq/custom_neteq_factory.h | 0 .../neteq/default_neteq_controller_factory.h | 0 {webrtc => include/webrtc}/api/neteq/neteq.h | 0 .../webrtc}/api/neteq/neteq_controller.h | 0 .../api/neteq/neteq_controller_factory.h | 0 .../webrtc}/api/neteq/neteq_factory.h | 0 .../webrtc}/api/neteq/tick_timer.h | 0 .../webrtc}/api/network_state_predictor.h | 0 {webrtc => include/webrtc}/api/notifier.h | 0 .../webrtc}/api/packet_socket_factory.h | 0 .../api/peer_connection_factory_proxy.h | 0 .../webrtc}/api/peer_connection_interface.h | 0 .../webrtc}/api/peer_connection_proxy.h | 0 {webrtc => include/webrtc}/api/proxy.h | 0 .../webrtc}/api/ref_counted_base.h | 0 {webrtc => include/webrtc}/api/rtc_error.h | 0 .../webrtc}/api/rtc_event_log/rtc_event.h | 0 .../webrtc}/api/rtc_event_log/rtc_event_log.h | 0 .../api/rtc_event_log/rtc_event_log_factory.h | 0 .../rtc_event_log_factory_interface.h | 0 .../webrtc}/api/rtc_event_log_output.h | 0 .../webrtc}/api/rtc_event_log_output_file.h | 0 {webrtc => include/webrtc}/api/rtp_headers.h | 0 .../webrtc}/api/rtp_packet_info.h | 0 .../webrtc}/api/rtp_packet_infos.h | 0 .../webrtc}/api/rtp_parameters.h | 0 .../webrtc}/api/rtp_receiver_interface.h | 0 .../webrtc}/api/rtp_sender_interface.h | 0 .../webrtc}/api/rtp_transceiver_direction.h | 0 .../webrtc}/api/rtp_transceiver_interface.h | 0 .../webrtc}/api/scoped_refptr.h | 0 .../webrtc}/api/sctp_transport_interface.h | 0 ...et_remote_description_observer_interface.h | 0 .../webrtc}/api/stats/rtc_stats.h | 0 .../api/stats/rtc_stats_collector_callback.h | 0 .../webrtc}/api/stats/rtc_stats_report.h | 0 .../webrtc}/api/stats/rtcstats_objects.h | 0 {webrtc => include/webrtc}/api/stats_types.h | 0 .../task_queue/default_task_queue_factory.h | 0 .../webrtc}/api/task_queue/queued_task.h | 0 .../webrtc}/api/task_queue/task_queue_base.h | 0 .../api/task_queue/task_queue_factory.h | 0 .../webrtc}/api/task_queue/task_queue_test.h | 0 .../test/audio_quality_analyzer_interface.h | 0 .../webrtc}/api/test/audioproc_float.h | 0 .../webrtc}/api/test/create_frame_generator.h | 0 .../test/create_network_emulation_manager.h | 0 ..._connection_quality_test_frame_generator.h | 0 ...eate_peerconnection_quality_test_fixture.h | 0 .../api/test/create_simulcast_test_fixture.h | 0 .../webrtc}/api/test/create_time_controller.h | 0 .../test/create_video_quality_test_fixture.h | 0 .../api/test/create_videocodec_test_fixture.h | 0 .../webrtc}/api/test/dummy_peer_connection.h | 0 .../api/test/fake_datagram_transport.h | 0 .../webrtc}/api/test/fake_frame_decryptor.h | 0 .../webrtc}/api/test/fake_frame_encryptor.h | 0 .../webrtc}/api/test/fake_media_transport.h | 0 .../api/test/frame_generator_interface.h | 0 .../api/test/loopback_media_transport.h | 0 .../webrtc}/api/test/mock_audio_mixer.h | 0 .../api/test/mock_fec_controller_override.h | 0 .../webrtc}/api/test/mock_frame_decryptor.h | 0 .../webrtc}/api/test/mock_frame_encryptor.h | 0 .../api/test/mock_peerconnectioninterface.h | 0 .../webrtc}/api/test/mock_rtpreceiver.h | 0 .../webrtc}/api/test/mock_rtpsender.h | 0 .../api/test/mock_video_bitrate_allocator.h | 0 .../mock_video_bitrate_allocator_factory.h | 0 .../webrtc}/api/test/mock_video_decoder.h | 0 .../api/test/mock_video_decoder_factory.h | 0 .../webrtc}/api/test/mock_video_encoder.h | 0 .../api/test/mock_video_encoder_factory.h | 0 .../webrtc}/api/test/neteq_simulator.h | 0 .../api/test/neteq_simulator_factory.h | 0 .../network_emulation_interfaces.h | 0 .../api/test/network_emulation_manager.h | 0 .../peerconnection_quality_test_fixture.h | 0 .../webrtc}/api/test/simulated_network.h | 0 .../webrtc}/api/test/simulcast_test_fixture.h | 0 .../api/test/stats_observer_interface.h | 0 .../api/test/test_dependency_factory.h | 0 .../webrtc}/api/test/time_controller.h | 0 .../api/test/track_id_stream_label_map.h | 0 .../video/function_video_decoder_factory.h | 0 .../video/function_video_encoder_factory.h | 0 .../test/video_quality_analyzer_interface.h | 0 .../api/test/video_quality_test_fixture.h | 0 .../api/test/videocodec_test_fixture.h | 0 .../webrtc}/api/test/videocodec_test_stats.h | 0 .../webrtc}/api/transport/bitrate_settings.h | 0 .../transport/congestion_control_interface.h | 0 .../data_channel_transport_interface.h | 0 .../transport/datagram_transport_interface.h | 0 .../webrtc}/api/transport/enums.h | 0 .../api/transport/field_trial_based_config.h | 0 .../webrtc}/api/transport/goog_cc_factory.h | 0 .../api/transport/media/audio_transport.h | 0 .../transport/media/media_transport_config.h | 0 .../media/media_transport_interface.h | 0 .../api/transport/media/video_transport.h | 0 .../webrtc}/api/transport/network_control.h | 0 .../webrtc}/api/transport/network_types.h | 0 .../api/transport/rtp/dependency_descriptor.h | 0 .../webrtc}/api/transport/rtp/rtp_source.h | 0 .../webrtc}/api/transport/stun.h | 0 .../test/create_feedback_generator.h | 0 .../test/feedback_generator_interface.h | 0 .../api/transport/test/mock_network_control.h | 0 .../api/transport/webrtc_key_value_config.h | 0 .../webrtc}/api/turn_customizer.h | 0 {webrtc => include/webrtc}/api/uma_metrics.h | 0 .../webrtc}/api/units/data_rate.h | 0 .../webrtc}/api/units/data_size.h | 0 .../webrtc}/api/units/frequency.h | 0 .../webrtc}/api/units/time_delta.h | 0 .../webrtc}/api/units/timestamp.h | 0 .../builtin_video_bitrate_allocator_factory.h | 0 .../webrtc}/api/video/color_space.h | 0 .../webrtc}/api/video/encoded_frame.h | 0 .../webrtc}/api/video/encoded_image.h | 0 .../webrtc}/api/video/hdr_metadata.h | 0 .../webrtc}/api/video/i010_buffer.h | 0 .../webrtc}/api/video/i420_buffer.h | 0 .../api/video/recordable_encoded_frame.h | 0 .../test/mock_recordable_encoded_frame.h | 0 .../api/video/video_adaptation_counters.h | 0 .../api/video/video_adaptation_reason.h | 0 .../api/video/video_bitrate_allocation.h | 0 .../api/video/video_bitrate_allocator.h | 0 .../video/video_bitrate_allocator_factory.h | 0 .../webrtc}/api/video/video_codec_constants.h | 0 .../webrtc}/api/video/video_codec_type.h | 0 .../webrtc}/api/video/video_content_type.h | 0 .../webrtc}/api/video/video_frame.h | 0 .../webrtc}/api/video/video_frame_buffer.h | 0 .../webrtc}/api/video/video_frame_marking.h | 0 .../webrtc}/api/video/video_frame_type.h | 0 .../webrtc}/api/video/video_rotation.h | 0 .../webrtc}/api/video/video_sink_interface.h | 0 .../api/video/video_source_interface.h | 0 .../webrtc}/api/video/video_stream_decoder.h | 0 .../api/video/video_stream_decoder_create.h | 0 .../api/video/video_stream_encoder_create.h | 0 .../video/video_stream_encoder_interface.h | 0 .../api/video/video_stream_encoder_observer.h | 0 .../api/video/video_stream_encoder_settings.h | 0 .../webrtc}/api/video/video_timing.h | 0 .../api/video_codecs/bitstream_parser.h | 0 .../builtin_video_decoder_factory.h | 0 .../builtin_video_encoder_factory.h | 0 .../api/video_codecs/sdp_video_format.h | 0 .../webrtc}/api/video_codecs/video_codec.h | 0 .../webrtc}/api/video_codecs/video_decoder.h | 0 .../api/video_codecs/video_decoder_factory.h | 0 .../video_decoder_software_fallback_wrapper.h | 0 .../webrtc}/api/video_codecs/video_encoder.h | 0 .../api/video_codecs/video_encoder_config.h | 0 .../api/video_codecs/video_encoder_factory.h | 0 .../video_encoder_software_fallback_wrapper.h | 0 .../vp8_frame_buffer_controller.h | 0 .../api/video_codecs/vp8_frame_config.h | 0 .../api/video_codecs/vp8_temporal_layers.h | 0 .../vp8_temporal_layers_factory.h | 0 .../webrtc}/api/video_track_source_proxy.h | 0 .../webrtc}/api/voip/voip_base.h | 0 .../webrtc}/api/voip/voip_codec.h | 0 .../webrtc}/api/voip/voip_engine.h | 0 .../webrtc}/api/voip/voip_engine_factory.h | 0 .../webrtc}/api/voip/voip_network.h | 0 .../webrtc}/base/allocator/allocator_check.h | 0 .../base/allocator/allocator_extension.h | 0 .../allocator/allocator_interception_mac.h | 0 .../webrtc}/base/allocator/allocator_shim.h | 0 ...him_default_dispatch_to_mac_zoned_malloc.h | 0 .../base/allocator/allocator_shim_internals.h | 0 .../allocator_shim_override_cpp_symbols.h | 0 ...locator_shim_override_glibc_weak_symbols.h | 0 .../allocator_shim_override_libc_symbols.h | 0 ...tor_shim_override_linker_wrapped_symbols.h | 0 .../allocator_shim_override_mac_symbols.h | 0 ...allocator_shim_override_ucrt_symbols_win.h | 0 .../allocator/malloc_zone_functions_mac.h | 0 .../address_space_randomization.h | 0 .../partition_allocator/memory_reclaimer.h | 0 .../base/allocator/partition_allocator/oom.h | 0 .../partition_allocator/oom_callback.h | 0 .../partition_allocator/page_allocator.h | 0 .../page_allocator_constants.h | 0 .../page_allocator_internal.h | 0 .../page_allocator_internals_fuchsia.h | 0 .../page_allocator_internals_posix.h | 0 .../page_allocator_internals_win.h | 0 .../partition_allocator/partition_alloc.h | 0 .../partition_alloc_constants.h | 0 .../partition_alloc_forward.h | 0 .../partition_allocator/partition_bucket.h | 0 .../partition_allocator/partition_cookie.h | 0 .../partition_direct_map_extent.h | 0 .../partition_freelist_entry.h | 0 .../partition_allocator/partition_oom.h | 0 .../partition_allocator/partition_page.h | 0 .../partition_allocator/partition_root_base.h | 0 .../allocator/partition_allocator/random.h | 0 .../allocator/partition_allocator/spin_lock.h | 0 .../base/allocator/winheap_stubs_win.h | 0 .../android/android_hardware_buffer_compat.h | 0 .../base/android/android_image_reader_abi.h | 0 .../android/android_image_reader_compat.h | 0 .../webrtc}/base/android/apk_assets.h | 0 .../android/application_status_listener.h | 0 .../webrtc}/base/android/base_jni_onload.h | 0 .../webrtc}/base/android/build_info.h | 0 .../webrtc}/base/android/bundle_utils.h | 0 .../webrtc}/base/android/callback_android.h | 0 .../android/child_process_binding_types.h | 0 .../webrtc}/base/android/content_uri_utils.h | 0 .../base/android/early_trace_event_binding.h | 0 .../webrtc}/base/android/event_log.h | 0 .../base/android/int_string_callback.h | 0 .../base/android/java_exception_reporter.h | 0 .../base/android/java_handler_thread.h | 0 .../base/android/java_heap_dump_generator.h | 0 .../webrtc}/base/android/java_runtime.h | 0 .../webrtc}/base/android/jni_android.h | 0 .../webrtc}/base/android/jni_array.h | 0 .../jni_generator/jni_generator_helper.h | 0 .../android/jni_generator/sample_for_tests.h | 0 .../webrtc}/base/android/jni_int_wrapper.h | 0 .../webrtc}/base/android/jni_registrar.h | 0 .../webrtc}/base/android/jni_string.h | 0 .../webrtc}/base/android/jni_utils.h | 0 .../webrtc}/base/android/jni_weak_ref.h | 0 .../android/library_loader/anchor_functions.h | 0 .../library_loader/library_loader_hooks.h | 0 .../library_loader/library_prefetcher.h | 0 .../base/android/linker/legacy_linker_jni.h | 0 .../webrtc}/base/android/linker/linker_jni.h | 0 .../base/android/linker/modern_linker_jni.h | 0 .../webrtc}/base/android/locale_utils.h | 0 .../memory_pressure_listener_android.h | 0 .../orderfile/orderfile_instrumentation.h | 0 .../webrtc}/base/android/path_utils.h | 0 .../base/android/reached_addresses_bitset.h | 0 .../base/android/reached_code_profiler.h | 0 .../scoped_hardware_buffer_fence_sync.h | 0 .../android/scoped_hardware_buffer_handle.h | 0 .../webrtc}/base/android/scoped_java_ref.h | 0 .../webrtc}/base/android/sys_utils.h | 0 .../task_scheduler/post_task_android.h | 0 .../task_scheduler/task_runner_android.h | 0 .../webrtc}/base/android/timezone_utils.h | 0 .../base/android/trace_event_binding.h | 0 .../base/android/unguessable_token_android.h | 0 {webrtc => include/webrtc}/base/at_exit.h | 0 .../webrtc}/base/atomic_ref_count.h | 0 .../webrtc}/base/atomic_sequence_num.h | 0 {webrtc => include/webrtc}/base/atomicops.h | 0 .../atomicops_internals_atomicword_compat.h | 0 .../base/atomicops_internals_portable.h | 0 .../base/atomicops_internals_x86_msvc.h | 0 {webrtc => include/webrtc}/base/auto_reset.h | 0 .../webrtc}/base/barrier_closure.h | 0 {webrtc => include/webrtc}/base/base64.h | 0 {webrtc => include/webrtc}/base/base64url.h | 0 {webrtc => include/webrtc}/base/base_export.h | 0 {webrtc => include/webrtc}/base/base_paths.h | 0 .../webrtc}/base/base_paths_android.h | 0 .../webrtc}/base/base_paths_fuchsia.h | 0 .../webrtc}/base/base_paths_mac.h | 0 .../webrtc}/base/base_paths_posix.h | 0 .../webrtc}/base/base_paths_win.h | 0 .../webrtc}/base/base_switches.h | 0 {webrtc => include/webrtc}/base/big_endian.h | 0 {webrtc => include/webrtc}/base/bind.h | 0 .../webrtc}/base/bind_helpers.h | 0 .../webrtc}/base/bind_internal.h | 0 {webrtc => include/webrtc}/base/bit_cast.h | 0 {webrtc => include/webrtc}/base/bits.h | 0 {webrtc => include/webrtc}/base/build_time.h | 0 {webrtc => include/webrtc}/base/callback.h | 0 .../webrtc}/base/callback_forward.h | 0 .../webrtc}/base/callback_helpers.h | 0 .../webrtc}/base/callback_internal.h | 0 .../webrtc}/base/callback_list.h | 0 .../webrtc}/base/cancelable_callback.h | 0 {webrtc => include/webrtc}/base/check.h | 0 {webrtc => include/webrtc}/base/check_op.h | 0 .../webrtc}/base/command_line.h | 0 .../webrtc}/base/compiler_specific.h | 0 .../webrtc}/base/component_export.h | 0 .../webrtc}/base/containers/adapters.h | 0 .../webrtc}/base/containers/buffer_iterator.h | 0 .../base/containers/checked_iterators.h | 0 .../webrtc}/base/containers/checked_range.h | 0 .../webrtc}/base/containers/circular_deque.h | 0 .../webrtc}/base/containers/flat_map.h | 0 .../webrtc}/base/containers/flat_set.h | 0 .../webrtc}/base/containers/flat_tree.h | 0 .../webrtc}/base/containers/id_map.h | 0 .../webrtc}/base/containers/intrusive_heap.h | 0 .../webrtc}/base/containers/linked_list.h | 0 .../webrtc}/base/containers/mru_cache.h | 0 .../webrtc}/base/containers/queue.h | 0 .../webrtc}/base/containers/ring_buffer.h | 0 .../webrtc}/base/containers/small_map.h | 0 .../webrtc}/base/containers/span.h | 0 .../webrtc}/base/containers/stack.h | 0 .../webrtc}/base/containers/stack_container.h | 0 .../base/containers/unique_ptr_adapters.h | 0 .../webrtc}/base/containers/util.h | 0 .../webrtc}/base/containers/vector_buffer.h | 0 {webrtc => include/webrtc}/base/cpu.h | 0 .../webrtc}/base/critical_closure.h | 0 .../base/deferred_sequenced_task_runner.h | 0 .../webrtc}/base/enterprise_util.h | 0 {webrtc => include/webrtc}/base/environment.h | 0 .../webrtc}/base/export_template.h | 0 .../webrtc}/base/feature_list.h | 0 .../webrtc}/base/file_descriptor_posix.h | 0 .../webrtc}/base/file_descriptor_store.h | 0 .../webrtc}/base/file_version_info.h | 0 .../webrtc}/base/file_version_info_mac.h | 0 .../webrtc}/base/file_version_info_win.h | 0 .../webrtc}/base/files/dir_reader_fallback.h | 0 .../webrtc}/base/files/dir_reader_linux.h | 0 .../webrtc}/base/files/dir_reader_posix.h | 0 {webrtc => include/webrtc}/base/files/file.h | 0 .../files/file_descriptor_watcher_posix.h | 0 .../webrtc}/base/files/file_enumerator.h | 0 .../webrtc}/base/files/file_path.h | 0 .../webrtc}/base/files/file_path_watcher.h | 0 .../base/files/file_path_watcher_fsevents.h | 0 .../base/files/file_path_watcher_kqueue.h | 0 .../webrtc}/base/files/file_proxy.h | 0 .../webrtc}/base/files/file_tracing.h | 0 .../webrtc}/base/files/file_util.h | 0 .../base/files/important_file_writer.h | 0 .../webrtc}/base/files/memory_mapped_file.h | 0 .../webrtc}/base/files/platform_file.h | 0 .../webrtc}/base/files/scoped_file.h | 0 .../webrtc}/base/files/scoped_temp_dir.h | 0 .../webrtc}/base/format_macros.h | 0 .../webrtc}/base/fuchsia/default_context.h | 0 .../webrtc}/base/fuchsia/default_job.h | 0 .../webrtc}/base/fuchsia/file_utils.h | 0 .../base/fuchsia/filtered_service_directory.h | 0 .../webrtc}/base/fuchsia/fuchsia_logging.h | 0 .../base/fuchsia/intl_profile_watcher.h | 0 .../base/fuchsia/scoped_service_binding.h | 0 .../fuchsia/service_directory_test_base.h | 0 .../base/fuchsia/service_provider_impl.h | 0 .../webrtc}/base/fuchsia/startup_context.h | 0 .../test_component_context_for_process.h | 0 .../base/fuchsia/test_interface_impl.h | 0 .../webrtc}/base/gtest_prod_util.h | 0 {webrtc => include/webrtc}/base/guid.h | 0 {webrtc => include/webrtc}/base/hash/hash.h | 0 .../webrtc}/base/hash/legacy_hash.h | 0 {webrtc => include/webrtc}/base/hash/md5.h | 0 .../webrtc}/base/hash/md5_boringssl.h | 0 .../webrtc}/base/hash/md5_constexpr.h | 0 .../base/hash/md5_constexpr_internal.h | 0 .../webrtc}/base/hash/md5_nacl.h | 0 {webrtc => include/webrtc}/base/hash/sha1.h | 0 .../webrtc}/base/i18n/base_i18n_export.h | 0 .../webrtc}/base/i18n/base_i18n_switches.h | 0 .../webrtc}/base/i18n/break_iterator.h | 0 .../webrtc}/base/i18n/case_conversion.h | 0 .../webrtc}/base/i18n/char_iterator.h | 0 .../webrtc}/base/i18n/character_encoding.h | 0 .../webrtc}/base/i18n/encoding_detection.h | 0 .../webrtc}/base/i18n/file_util_icu.h | 0 .../webrtc}/base/i18n/i18n_constants.h | 0 .../base/i18n/icu_string_conversions.h | 0 .../webrtc}/base/i18n/icu_util.h | 0 .../webrtc}/base/i18n/message_formatter.h | 0 .../webrtc}/base/i18n/number_formatting.h | 0 {webrtc => include/webrtc}/base/i18n/rtl.h | 0 .../base/i18n/streaming_utf8_validator.h | 0 .../webrtc}/base/i18n/string_compare.h | 0 .../webrtc}/base/i18n/string_search.h | 0 .../webrtc}/base/i18n/time_formatting.h | 0 .../webrtc}/base/i18n/timezone.h | 0 .../webrtc}/base/i18n/unicodestring.h | 0 .../webrtc}/base/i18n/utf8_validator_tables.h | 0 .../webrtc}/base/immediate_crash.h | 0 .../webrtc}/base/ios/block_types.h | 0 .../webrtc}/base/ios/crb_protocol_observers.h | 0 .../webrtc}/base/ios/device_util.h | 0 .../webrtc}/base/ios/ios_util.h | 0 .../webrtc}/base/ios/ns_error_util.h | 0 .../webrtc}/base/ios/scoped_critical_action.h | 0 .../webrtc}/base/ios/weak_nsobject.h | 0 .../webrtc}/base/json/json_common.h | 0 .../base/json/json_file_value_serializer.h | 0 .../webrtc}/base/json/json_parser.h | 0 .../webrtc}/base/json/json_reader.h | 0 .../base/json/json_string_value_serializer.h | 0 .../webrtc}/base/json/json_value_converter.h | 0 .../webrtc}/base/json/json_writer.h | 0 .../webrtc}/base/json/string_escape.h | 0 .../webrtc}/base/lazy_instance.h | 0 .../webrtc}/base/lazy_instance_helpers.h | 0 {webrtc => include/webrtc}/base/linux_util.h | 0 {webrtc => include/webrtc}/base/location.h | 0 {webrtc => include/webrtc}/base/logging.h | 0 {webrtc => include/webrtc}/base/logging_win.h | 0 .../webrtc}/base/mac/authorization_util.h | 0 .../webrtc}/base/mac/bundle_locations.h | 0 .../webrtc}/base/mac/call_with_eh_frame.h | 0 .../webrtc}/base/mac/dispatch_source_mach.h | 0 .../webrtc}/base/mac/foundation_util.h | 0 .../webrtc}/base/mac/launch_services_util.h | 0 {webrtc => include/webrtc}/base/mac/launchd.h | 0 .../webrtc}/base/mac/mac_logging.h | 0 .../webrtc}/base/mac/mac_util.h | 0 .../webrtc}/base/mac/mach_logging.h | 0 .../webrtc}/base/mac/mach_port_rendezvous.h | 0 .../base/mac/objc_release_properties.h | 0 .../webrtc}/base/mac/os_crash_dumps.h | 0 .../webrtc}/base/mac/scoped_aedesc.h | 0 .../base/mac/scoped_authorizationref.h | 0 .../webrtc}/base/mac/scoped_block.h | 0 .../base/mac/scoped_cffiledescriptorref.h | 0 .../webrtc}/base/mac/scoped_cftyperef.h | 0 .../webrtc}/base/mac/scoped_dispatch_object.h | 0 .../base/mac/scoped_ionotificationportref.h | 0 .../webrtc}/base/mac/scoped_ioobject.h | 0 .../base/mac/scoped_ioplugininterface.h | 0 .../webrtc}/base/mac/scoped_launch_data.h | 0 .../base/mac/scoped_mach_msg_destroy.h | 0 .../webrtc}/base/mac/scoped_mach_port.h | 0 .../webrtc}/base/mac/scoped_mach_vm.h | 0 .../base/mac/scoped_nsautorelease_pool.h | 0 .../webrtc}/base/mac/scoped_nsobject.h | 0 .../base/mac/scoped_objc_class_swizzler.h | 0 .../webrtc}/base/mac/scoped_sending_event.h | 0 .../webrtc}/base/mac/scoped_typeref.h | 0 .../base/mac/sdk_forward_declarations.h | 0 {webrtc => include/webrtc}/base/macros.h | 0 .../webrtc}/base/memory/aligned_memory.h | 0 .../webrtc}/base/memory/checked_ptr.h | 0 .../webrtc}/base/memory/discardable_memory.h | 0 .../memory/discardable_memory_allocator.h | 0 .../base/memory/discardable_memory_internal.h | 0 .../base/memory/discardable_shared_memory.h | 0 .../webrtc}/base/memory/free_deleter.h | 0 ..._free_discardable_memory_allocator_posix.h | 0 .../madv_free_discardable_memory_posix.h | 0 .../base/memory/memory_pressure_listener.h | 0 .../base/memory/memory_pressure_monitor.h | 0 .../memory/platform_shared_memory_region.h | 0 .../webrtc}/base/memory/ptr_util.h | 0 .../raw_scoped_refptr_mismatch_checker.h | 0 .../memory/read_only_shared_memory_region.h | 0 .../webrtc}/base/memory/ref_counted.h | 0 .../memory/ref_counted_delete_on_sequence.h | 0 .../webrtc}/base/memory/ref_counted_memory.h | 0 .../webrtc}/base/memory/scoped_policy.h | 0 .../webrtc}/base/memory/scoped_refptr.h | 0 .../webrtc}/base/memory/shared_memory_hooks.h | 0 .../base/memory/shared_memory_mapping.h | 0 .../memory/shared_memory_security_policy.h | 0 .../base/memory/shared_memory_tracker.h | 0 .../webrtc}/base/memory/singleton.h | 0 .../base/memory/unsafe_shared_memory_region.h | 0 .../webrtc}/base/memory/weak_ptr.h | 0 .../memory/writable_shared_memory_region.h | 0 .../webrtc}/base/message_loop/message_loop.h | 0 .../base/message_loop/message_loop_current.h | 0 .../webrtc}/base/message_loop/message_pump.h | 0 .../base/message_loop/message_pump_android.h | 0 .../base/message_loop/message_pump_default.h | 0 .../base/message_loop/message_pump_for_io.h | 0 .../base/message_loop/message_pump_for_ui.h | 0 .../base/message_loop/message_pump_fuchsia.h | 0 .../base/message_loop/message_pump_glib.h | 0 .../base/message_loop/message_pump_io_ios.h | 0 .../base/message_loop/message_pump_kqueue.h | 0 .../base/message_loop/message_pump_libevent.h | 0 .../base/message_loop/message_pump_mac.h | 0 .../base/message_loop/message_pump_type.h | 0 .../base/message_loop/message_pump_win.h | 0 .../webrtc}/base/message_loop/timer_slack.h | 0 .../watchable_io_message_pump_posix.h | 0 .../base/message_loop/work_id_provider.h | 0 .../webrtc}/base/metrics/bucket_ranges.h | 0 .../webrtc}/base/metrics/crc32.h | 0 .../webrtc}/base/metrics/dummy_histogram.h | 0 .../webrtc}/base/metrics/field_trial.h | 0 .../metrics/field_trial_param_associator.h | 0 .../webrtc}/base/metrics/field_trial_params.h | 0 .../webrtc}/base/metrics/histogram.h | 0 .../webrtc}/base/metrics/histogram_base.h | 0 .../metrics/histogram_delta_serialization.h | 0 .../base/metrics/histogram_flattener.h | 0 .../base/metrics/histogram_functions.h | 0 .../webrtc}/base/metrics/histogram_macros.h | 0 .../base/metrics/histogram_macros_internal.h | 0 .../base/metrics/histogram_macros_local.h | 0 .../webrtc}/base/metrics/histogram_samples.h | 0 .../base/metrics/histogram_snapshot_manager.h | 0 .../webrtc}/base/metrics/metrics_hashes.h | 0 .../metrics/persistent_histogram_allocator.h | 0 .../metrics/persistent_histogram_storage.h | 0 .../metrics/persistent_memory_allocator.h | 0 .../base/metrics/persistent_sample_map.h | 0 .../base/metrics/record_histogram_checker.h | 0 .../webrtc}/base/metrics/sample_map.h | 0 .../webrtc}/base/metrics/sample_vector.h | 0 .../base/metrics/single_sample_metrics.h | 0 .../webrtc}/base/metrics/sparse_histogram.h | 0 .../base/metrics/statistics_recorder.h | 0 .../webrtc}/base/metrics/ukm_source_id.h | 0 .../webrtc}/base/metrics/user_metrics.h | 0 .../base/metrics/user_metrics_action.h | 0 .../webrtc}/base/native_library.h | 0 .../webrtc}/base/nix/mime_util_xdg.h | 0 .../webrtc}/base/nix/xdg_util.h | 0 .../webrtc}/base/no_destructor.h | 0 {webrtc => include/webrtc}/base/notreached.h | 0 .../webrtc}/base/numerics/checked_math.h | 0 .../webrtc}/base/numerics/checked_math_impl.h | 0 .../webrtc}/base/numerics/clamped_math.h | 0 .../webrtc}/base/numerics/clamped_math_impl.h | 0 .../webrtc}/base/numerics/math_constants.h | 0 .../webrtc}/base/numerics/ranges.h | 0 .../webrtc}/base/numerics/safe_conversions.h | 0 .../base/numerics/safe_conversions_arm_impl.h | 0 .../base/numerics/safe_conversions_impl.h | 0 .../webrtc}/base/numerics/safe_math.h | 0 .../base/numerics/safe_math_arm_impl.h | 0 .../base/numerics/safe_math_clang_gcc_impl.h | 0 .../base/numerics/safe_math_shared_impl.h | 0 .../webrtc}/base/observer_list.h | 0 .../webrtc}/base/observer_list_internal.h | 0 .../webrtc}/base/observer_list_threadsafe.h | 0 .../webrtc}/base/observer_list_types.h | 0 .../webrtc}/base/one_shot_event.h | 0 {webrtc => include/webrtc}/base/optional.h | 0 .../webrtc}/base/os_compat_android.h | 0 .../webrtc}/base/os_compat_nacl.h | 0 .../webrtc}/base/parameter_pack.h | 0 .../webrtc}/base/path_service.h | 0 .../webrtc}/base/pending_task.h | 0 {webrtc => include/webrtc}/base/pickle.h | 0 .../webrtc}/base/posix/can_lower_nice_to.h | 0 .../webrtc}/base/posix/eintr_wrapper.h | 0 .../base/posix/file_descriptor_shuffle.h | 0 .../webrtc}/base/posix/global_descriptors.h | 0 .../webrtc}/base/posix/safe_strerror.h | 0 .../webrtc}/base/posix/unix_domain_socket.h | 0 ...post_task_and_reply_with_result_internal.h | 0 .../base/power_monitor/power_monitor.h | 0 .../power_monitor_device_source.h | 0 .../base/power_monitor/power_monitor_source.h | 0 .../base/power_monitor/power_observer.h | 0 .../base/process/environment_internal.h | 0 .../webrtc}/base/process/internal_aix.h | 0 .../webrtc}/base/process/internal_linux.h | 0 .../webrtc}/base/process/kill.h | 0 .../webrtc}/base/process/launch.h | 0 .../webrtc}/base/process/memory.h | 0 .../base/process/memory_unittest_mac.h | 0 .../webrtc}/base/process/port_provider_mac.h | 0 .../webrtc}/base/process/process.h | 0 .../webrtc}/base/process/process_handle.h | 0 .../webrtc}/base/process/process_info.h | 0 .../webrtc}/base/process/process_iterator.h | 0 .../webrtc}/base/process/process_metrics.h | 0 .../base/process/process_metrics_iocounters.h | 0 .../webrtc}/base/profiler/arm_cfi_table.h | 0 .../base/profiler/chrome_unwinder_android.h | 0 .../webrtc}/base/profiler/frame.h | 0 .../webrtc}/base/profiler/metadata_recorder.h | 0 .../webrtc}/base/profiler/module_cache.h | 0 .../webrtc}/base/profiler/native_unwinder.h | 0 .../base/profiler/native_unwinder_android.h | 0 .../base/profiler/native_unwinder_mac.h | 0 .../base/profiler/native_unwinder_win.h | 0 .../webrtc}/base/profiler/profile_builder.h | 0 .../webrtc}/base/profiler/register_context.h | 0 .../webrtc}/base/profiler/sample_metadata.h | 0 .../profiler/sampling_profiler_thread_token.h | 0 .../webrtc}/base/profiler/stack_buffer.h | 0 .../webrtc}/base/profiler/stack_copier.h | 0 .../base/profiler/stack_copier_signal.h | 0 .../base/profiler/stack_copier_suspend.h | 0 .../webrtc}/base/profiler/stack_sampler.h | 0 .../base/profiler/stack_sampler_impl.h | 0 .../base/profiler/stack_sampling_profiler.h | 0 .../stack_sampling_profiler_test_util.h | 0 .../profiler/suspendable_thread_delegate.h | 0 .../suspendable_thread_delegate_mac.h | 0 .../suspendable_thread_delegate_win.h | 0 .../webrtc}/base/profiler/thread_delegate.h | 0 .../base/profiler/thread_delegate_posix.h | 0 .../webrtc}/base/profiler/unwinder.h | 0 .../profiler/unwindstack_internal_android.h | 0 .../profiler/win32_stack_frame_unwinder.h | 0 {webrtc => include/webrtc}/base/rand_util.h | 0 {webrtc => include/webrtc}/base/run_loop.h | 0 .../lock_free_address_hash_set.h | 0 .../poisson_allocation_sampler.h | 0 .../sampling_heap_profiler.h | 0 .../webrtc}/base/scoped_clear_last_error.h | 0 .../webrtc}/base/scoped_generic.h | 0 .../webrtc}/base/scoped_native_library.h | 0 .../webrtc}/base/scoped_observer.h | 0 .../webrtc}/base/sequence_checker.h | 0 .../webrtc}/base/sequence_checker_impl.h | 0 .../webrtc}/base/sequence_token.h | 0 .../webrtc}/base/sequenced_task_runner.h | 0 .../base/sequenced_task_runner_helpers.h | 0 .../webrtc}/base/single_thread_task_runner.h | 0 {webrtc => include/webrtc}/base/stl_util.h | 0 .../webrtc}/base/strings/char_traits.h | 0 .../base/strings/latin1_string_conversions.h | 0 .../webrtc}/base/strings/nullable_string16.h | 0 .../webrtc}/base/strings/pattern.h | 0 .../webrtc}/base/strings/safe_sprintf.h | 0 .../webrtc}/base/strings/strcat.h | 0 .../webrtc}/base/strings/string16.h | 0 .../base/strings/string_number_conversions.h | 0 .../webrtc}/base/strings/string_piece.h | 0 .../base/strings/string_piece_forward.h | 0 .../webrtc}/base/strings/string_split.h | 0 .../webrtc}/base/strings/string_tokenizer.h | 0 .../webrtc}/base/strings/string_util.h | 0 .../webrtc}/base/strings/string_util_posix.h | 0 .../webrtc}/base/strings/string_util_win.h | 0 .../webrtc}/base/strings/stringize_macros.h | 0 .../webrtc}/base/strings/stringprintf.h | 0 .../base/strings/sys_string_conversions.h | 0 .../strings/utf_offset_string_conversions.h | 0 .../strings/utf_string_conversion_utils.h | 0 .../base/strings/utf_string_conversions.h | 0 .../webrtc}/base/supports_user_data.h | 0 {webrtc => include/webrtc}/base/sync_socket.h | 0 .../base/synchronization/atomic_flag.h | 0 .../base/synchronization/condition_variable.h | 0 .../webrtc}/base/synchronization/lock.h | 0 .../webrtc}/base/synchronization/lock_impl.h | 0 .../base/synchronization/waitable_event.h | 0 .../synchronization/waitable_event_watcher.h | 0 .../webrtc}/base/sys_byteorder.h | 0 .../webrtc}/base/syslog_logging.h | 0 .../webrtc}/base/system/sys_info.h | 0 .../webrtc}/base/system/sys_info_internal.h | 0 .../webrtc}/base/system/system_monitor.h | 0 .../base/task/cancelable_task_tracker.h | 0 .../webrtc}/base/task/common/checked_lock.h | 0 .../base/task/common/checked_lock_impl.h | 0 .../webrtc}/base/task/common/intrusive_heap.h | 0 .../base/task/common/operations_controller.h | 0 .../task/common/scoped_defer_task_posting.h | 0 .../webrtc}/base/task/common/task_annotator.h | 0 .../base/task/lazy_thread_pool_task_runner.h | 0 .../webrtc}/base/task/post_job.h | 0 .../webrtc}/base/task/post_task.h | 0 ...ped_set_task_priority_for_current_thread.h | 0 .../sequence_manager/associated_thread_id.h | 0 .../task/sequence_manager/atomic_flag_set.h | 0 .../task/sequence_manager/enqueue_order.h | 0 .../enqueue_order_generator.h | 0 .../lazily_deallocated_deque.h | 0 .../base/task/sequence_manager/lazy_now.h | 0 .../task/sequence_manager/real_time_domain.h | 0 .../task/sequence_manager/sequence_manager.h | 0 .../sequence_manager/sequence_manager_impl.h | 0 .../sequence_manager/sequenced_task_source.h | 0 .../base/task/sequence_manager/task_queue.h | 0 .../task/sequence_manager/task_queue_impl.h | 0 .../sequence_manager/task_queue_selector.h | 0 .../task_queue_selector_logic.h | 0 .../sequence_manager/task_time_observer.h | 0 .../base/task/sequence_manager/tasks.h | 0 .../task/sequence_manager/test/fake_task.h | 0 .../sequence_manager/test/mock_time_domain.h | 0 .../test/mock_time_message_pump.h | 0 .../test/sequence_manager_for_test.h | 0 .../sequence_manager/test/test_task_queue.h | 0 .../test/test_task_time_observer.h | 0 .../task/sequence_manager/thread_controller.h | 0 .../sequence_manager/thread_controller_impl.h | 0 ...thread_controller_with_message_pump_impl.h | 0 .../base/task/sequence_manager/time_domain.h | 0 .../task/sequence_manager/work_deduplicator.h | 0 .../base/task/sequence_manager/work_queue.h | 0 .../task/sequence_manager/work_queue_sets.h | 0 .../webrtc}/base/task/simple_task_executor.h | 0 .../base/task/single_thread_task_executor.h | 0 .../single_thread_task_runner_thread_mode.h | 0 .../webrtc}/base/task/task_executor.h | 0 .../webrtc}/base/task/task_features.h | 0 .../webrtc}/base/task/task_observer.h | 0 .../webrtc}/base/task/task_traits.h | 0 .../webrtc}/base/task/task_traits_extension.h | 0 .../base/task/test_task_traits_extension.h | 0 .../webrtc}/base/task/thread_pool.h | 0 .../task/thread_pool/can_run_policy_test.h | 0 .../task/thread_pool/delayed_task_manager.h | 0 .../task/thread_pool/environment_config.h | 0 .../task/thread_pool/initialization_util.h | 0 .../base/task/thread_pool/job_task_source.h | 0 .../thread_pool/pooled_parallel_task_runner.h | 0 .../pooled_sequenced_task_runner.h | 0 ...pooled_single_thread_task_runner_manager.h | 0 .../thread_pool/pooled_task_runner_delegate.h | 0 .../base/task/thread_pool/priority_queue.h | 0 .../webrtc}/base/task/thread_pool/sequence.h | 0 .../base/task/thread_pool/sequence_sort_key.h | 0 .../base/task/thread_pool/service_thread.h | 0 .../webrtc}/base/task/thread_pool/task.h | 0 .../base/task/thread_pool/task_source.h | 0 .../base/task/thread_pool/task_tracker.h | 0 .../task/thread_pool/task_tracker_posix.h | 0 .../base/task/thread_pool/test_task_factory.h | 0 .../base/task/thread_pool/test_utils.h | 0 .../base/task/thread_pool/thread_group.h | 0 .../base/task/thread_pool/thread_group_impl.h | 0 .../task/thread_pool/thread_group_native.h | 0 .../thread_pool/thread_group_native_mac.h | 0 .../thread_pool/thread_group_native_win.h | 0 .../base/task/thread_pool/thread_pool_impl.h | 0 .../task/thread_pool/thread_pool_instance.h | 0 .../base/task/thread_pool/tracked_ref.h | 0 .../base/task/thread_pool/worker_thread.h | 0 .../task/thread_pool/worker_thread_observer.h | 0 .../task/thread_pool/worker_thread_stack.h | 0 {webrtc => include/webrtc}/base/task_runner.h | 0 .../webrtc}/base/task_runner_util.h | 0 .../webrtc}/base/template_util.h | 0 .../android/java_handler_thread_helpers.h | 0 .../webrtc}/base/test/android/url_utils.h | 0 .../webrtc}/base/test/bind_test_util.h | 0 .../webrtc}/base/test/clang_profiling.h | 0 .../webrtc}/base/test/copy_only_int.h | 0 .../webrtc}/base/test/fontconfig_util_linux.h | 0 .../base/test/gmock_callback_support.h | 0 .../webrtc}/base/test/gmock_move_support.h | 0 .../webrtc}/base/test/gtest_util.h | 0 .../test/gtest_xml_unittest_result_printer.h | 0 .../webrtc}/base/test/gtest_xml_util.h | 0 .../webrtc}/base/test/icu_test_util.h | 0 .../test/ios/google_test_runner_delegate.h | 0 .../webrtc}/base/test/ios/wait_util.h | 0 .../base/test/launcher/test_launcher.h | 0 .../test/launcher/test_launcher_nacl_nonsfi.h | 0 .../test/launcher/test_launcher_test_utils.h | 0 .../base/test/launcher/test_launcher_tracer.h | 0 .../webrtc}/base/test/launcher/test_result.h | 0 .../base/test/launcher/test_results_tracker.h | 0 .../base/test/launcher/unit_test_launcher.h | 0 .../webrtc}/base/test/malloc_wrapper.h | 0 .../base/test/metrics/histogram_enum_reader.h | 0 .../base/test/metrics/histogram_tester.h | 0 .../base/test/metrics/user_action_tester.h | 0 .../webrtc}/base/test/mock_callback.h | 0 .../base/test/mock_chrome_application_mac.h | 0 .../base/test/mock_devices_changed_observer.h | 0 .../webrtc}/base/test/mock_entropy_provider.h | 0 .../webrtc}/base/test/mock_log.h | 0 .../webrtc}/base/test/move_only_int.h | 0 .../webrtc}/base/test/multiprocess_test.h | 0 .../base/test/native_library_test_utils.h | 0 .../webrtc}/base/test/null_task_runner.h | 0 .../webrtc}/base/test/perf_log.h | 0 .../webrtc}/base/test/perf_test_suite.h | 0 .../webrtc}/base/test/perf_time_logger.h | 0 .../base/test/power_monitor_test_base.h | 0 .../webrtc}/base/test/scoped_command_line.h | 0 .../scoped_environment_variable_override.h | 0 .../webrtc}/base/test/scoped_feature_list.h | 0 .../test/scoped_field_trial_list_resetter.h | 0 .../webrtc}/base/test/scoped_locale.h | 0 .../base/test/scoped_mock_clock_override.h | 0 ...coped_mock_time_message_loop_task_runner.h | 0 .../base/test/scoped_os_info_override_win.h | 0 .../webrtc}/base/test/scoped_path_override.h | 0 .../base/test/scoped_run_loop_timeout.h | 0 .../sequenced_task_runner_test_template.h | 0 .../webrtc}/base/test/simple_test_clock.h | 0 .../base/test/simple_test_tick_clock.h | 0 .../webrtc}/base/test/spin_wait.h | 0 .../webrtc}/base/test/task_environment.h | 0 .../base/test/task_runner_test_template.h | 0 .../test/test_discardable_memory_allocator.h | 0 .../webrtc}/base/test/test_file_util.h | 0 .../webrtc}/base/test/test_io_thread.h | 0 .../webrtc}/base/test/test_listener_ios.h | 0 .../webrtc}/base/test/test_message_loop.h | 0 .../base/test/test_mock_time_task_runner.h | 0 .../webrtc}/base/test/test_pending_task.h | 0 .../webrtc}/base/test/test_reg_util_win.h | 0 .../base/test/test_shared_memory_util.h | 0 .../webrtc}/base/test/test_shortcut_win.h | 0 .../base/test/test_simple_task_runner.h | 0 .../webrtc}/base/test/test_suite.h | 0 .../webrtc}/base/test/test_support_android.h | 0 .../webrtc}/base/test/test_support_ios.h | 0 .../webrtc}/base/test/test_switches.h | 0 .../webrtc}/base/test/test_timeouts.h | 0 .../webrtc}/base/test/test_waitable_event.h | 0 .../webrtc}/base/test/thread_test_helper.h | 0 .../webrtc}/base/test/trace_event_analyzer.h | 0 .../webrtc}/base/test/trace_to_file.h | 0 .../webrtc}/base/test/values_test_util.h | 0 .../webrtc}/base/test/with_feature_override.h | 0 .../webrtc}/base/third_party/cityhash/city.h | 0 .../third_party/cityhash_v103/src/city_v103.h | 0 .../double-conversion/bignum-dtoa.h | 0 .../double-conversion/bignum.h | 0 .../double-conversion/cached-powers.h | 0 .../double-conversion/diy-fp.h | 0 .../double-conversion/double-conversion.h | 0 .../double-conversion/double-to-string.h | 0 .../double-conversion/fast-dtoa.h | 0 .../double-conversion/fixed-dtoa.h | 0 .../double-conversion/ieee.h | 0 .../double-conversion/string-to-double.h | 0 .../double-conversion/strtod.h | 0 .../double-conversion/utils.h | 0 .../dynamic_annotations/dynamic_annotations.h | 0 .../webrtc}/base/third_party/icu/icu_utf.h | 0 .../base/third_party/libevent/aix/config.h | 0 .../third_party/libevent/aix/event-config.h | 0 .../third_party/libevent/android/config.h | 0 .../libevent/android/event-config.h | 0 .../libevent/compat/sys/_libevent_time.h | 0 .../third_party/libevent/compat/sys/queue.h | 0 .../webrtc}/base/third_party/libevent/evdns.h | 0 .../base/third_party/libevent/event-config.h | 0 .../third_party/libevent/event-internal.h | 0 .../webrtc}/base/third_party/libevent/event.h | 0 .../base/third_party/libevent/evhttp.h | 0 .../third_party/libevent/evrpc-internal.h | 0 .../webrtc}/base/third_party/libevent/evrpc.h | 0 .../base/third_party/libevent/evsignal.h | 0 .../base/third_party/libevent/evutil.h | 0 .../third_party/libevent/freebsd/config.h | 0 .../libevent/freebsd/event-config.h | 0 .../base/third_party/libevent/http-internal.h | 0 .../base/third_party/libevent/linux/config.h | 0 .../third_party/libevent/linux/event-config.h | 0 .../webrtc}/base/third_party/libevent/log.h | 0 .../base/third_party/libevent/mac/config.h | 0 .../third_party/libevent/mac/event-config.h | 0 .../base/third_party/libevent/min_heap.h | 0 .../third_party/libevent/nacl_nonsfi/config.h | 0 .../libevent/nacl_nonsfi/event-config.h | 0 .../third_party/libevent/solaris/config.h | 0 .../libevent/solaris/event-config.h | 0 .../third_party/libevent/strlcpy-internal.h | 0 .../base/third_party/libevent/test/regress.h | 0 .../webrtc}/base/third_party/nspr/prtime.h | 0 .../base/third_party/symbolize/config.h | 0 .../base/third_party/symbolize/demangle.h | 0 .../base/third_party/symbolize/glog/logging.h | 0 .../third_party/symbolize/glog/raw_logging.h | 0 .../base/third_party/symbolize/symbolize.h | 0 .../base/third_party/symbolize/utilities.h | 0 .../base/third_party/valgrind/memcheck.h | 0 .../base/third_party/valgrind/valgrind.h | 0 .../base/third_party/xdg_mime/xdgmime.h | 0 .../base/third_party/xdg_mime/xdgmimealias.h | 0 .../base/third_party/xdg_mime/xdgmimecache.h | 0 .../base/third_party/xdg_mime/xdgmimeglob.h | 0 .../base/third_party/xdg_mime/xdgmimeicon.h | 0 .../base/third_party/xdg_mime/xdgmimeint.h | 0 .../base/third_party/xdg_mime/xdgmimemagic.h | 0 .../base/third_party/xdg_mime/xdgmimeparent.h | 0 .../xdg_user_dirs/xdg_user_dir_lookup.h | 0 .../webrtc}/base/thread_annotations.h | 0 .../webrtc}/base/threading/hang_watcher.h | 0 .../webrtc}/base/threading/platform_thread.h | 0 .../platform_thread_internal_posix.h | 0 .../base/threading/platform_thread_win.h | 0 .../base/threading/post_task_and_reply_impl.h | 0 .../base/threading/scoped_blocking_call.h | 0 .../threading/scoped_blocking_call_internal.h | 0 .../base/threading/scoped_thread_priority.h | 0 .../webrtc}/base/threading/sequence_bound.h | 0 .../threading/sequence_local_storage_map.h | 0 .../threading/sequence_local_storage_slot.h | 0 .../threading/sequenced_task_runner_handle.h | 0 .../webrtc}/base/threading/simple_thread.h | 0 .../webrtc}/base/threading/thread.h | 0 .../webrtc}/base/threading/thread_checker.h | 0 .../base/threading/thread_checker_impl.h | 0 .../base/threading/thread_collision_warner.h | 0 .../base/threading/thread_id_name_manager.h | 0 .../webrtc}/base/threading/thread_local.h | 0 .../base/threading/thread_local_internal.h | 0 .../base/threading/thread_local_storage.h | 0 .../base/threading/thread_restrictions.h | 0 .../threading/thread_task_runner_handle.h | 0 .../webrtc}/base/threading/watchdog.h | 0 {webrtc => include/webrtc}/base/time/clock.h | 0 .../webrtc}/base/time/default_clock.h | 0 .../webrtc}/base/time/default_tick_clock.h | 0 .../webrtc}/base/time/tick_clock.h | 0 {webrtc => include/webrtc}/base/time/time.h | 0 .../webrtc}/base/time/time_override.h | 0 .../webrtc}/base/time/time_to_iso8601.h | 0 .../webrtc}/base/time/time_win_features.h | 0 .../webrtc}/base/timer/elapsed_timer.h | 0 .../webrtc}/base/timer/hi_res_timer_manager.h | 0 .../webrtc}/base/timer/lap_timer.h | 0 .../webrtc}/base/timer/mock_timer.h | 0 {webrtc => include/webrtc}/base/timer/timer.h | 0 {webrtc => include/webrtc}/base/token.h | 0 .../base/trace_event/auto_open_close_event.h | 0 .../webrtc}/base/trace_event/blame_context.h | 0 .../base/trace_event/builtin_categories.h | 0 .../base/trace_event/category_registry.h | 0 .../base/trace_event/cfi_backtrace_android.h | 0 .../trace_event/common/trace_event_common.h | 0 .../trace_event/cpufreq_monitor_android.h | 0 .../base/trace_event/event_name_filter.h | 0 .../webrtc}/base/trace_event/heap_profiler.h | 0 .../heap_profiler_allocation_context.h | 0 ...heap_profiler_allocation_context_tracker.h | 0 .../trace_event/heap_profiler_event_filter.h | 0 .../java_heap_dump_provider_android.h | 0 .../webrtc}/base/trace_event/log_message.h | 0 .../base/trace_event/malloc_dump_provider.h | 0 .../base/trace_event/memory_allocator_dump.h | 0 .../trace_event/memory_allocator_dump_guid.h | 0 .../base/trace_event/memory_dump_manager.h | 0 .../memory_dump_manager_test_utils.h | 0 .../base/trace_event/memory_dump_provider.h | 0 .../trace_event/memory_dump_provider_info.h | 0 .../trace_event/memory_dump_request_args.h | 0 .../base/trace_event/memory_dump_scheduler.h | 0 .../memory_infra_background_allowlist.h | 0 .../base/trace_event/memory_usage_estimator.h | 0 .../base/trace_event/process_memory_dump.h | 0 .../trace_event/thread_instruction_count.h | 0 .../base/trace_event/trace_arguments.h | 0 .../webrtc}/base/trace_event/trace_buffer.h | 0 .../webrtc}/base/trace_event/trace_category.h | 0 .../webrtc}/base/trace_event/trace_config.h | 0 .../trace_config_category_filter.h | 0 .../trace_config_memory_test_util.h | 0 .../webrtc}/base/trace_event/trace_event.h | 0 .../trace_event/trace_event_etw_export_win.h | 0 .../base/trace_event/trace_event_filter.h | 0 .../trace_event_filter_test_utils.h | 0 .../base/trace_event/trace_event_impl.h | 0 .../trace_event/trace_event_memory_overhead.h | 0 .../webrtc}/base/trace_event/trace_log.h | 0 .../webrtc}/base/trace_event/traced_value.h | 0 .../webrtc}/base/trace_event/tracing_agent.h | 0 {webrtc => include/webrtc}/base/traits_bag.h | 0 {webrtc => include/webrtc}/base/tuple.h | 0 .../webrtc}/base/unguessable_token.h | 0 .../base/updateable_sequenced_task_runner.h | 0 .../fake_memory_pressure_monitor.h | 0 .../memory_pressure/memory_pressure_voter.h | 0 .../multi_source_memory_pressure_monitor.h | 0 .../system_memory_pressure_evaluator.h | 0 ...ystem_memory_pressure_evaluator_chromeos.h | 0 ...system_memory_pressure_evaluator_fuchsia.h | 0 .../system_memory_pressure_evaluator_mac.h | 0 .../system_memory_pressure_evaluator_win.h | 0 .../base/util/timer/wall_clock_timer.h | 0 .../webrtc}/base/util/type_safety/id_type.h | 0 .../webrtc}/base/util/type_safety/pass_key.h | 0 .../base/util/type_safety/strong_alias.h | 0 .../webrtc}/base/util/values/values_util.h | 0 .../webrtc}/base/value_conversions.h | 0 .../webrtc}/base/value_iterators.h | 0 {webrtc => include/webrtc}/base/values.h | 0 {webrtc => include/webrtc}/base/version.h | 0 {webrtc => include/webrtc}/base/vlog.h | 0 .../webrtc}/base/win/async_operation.h | 0 {webrtc => include/webrtc}/base/win/atl.h | 0 .../webrtc}/base/win/com_init_check_hook.h | 0 .../webrtc}/base/win/com_init_util.h | 0 .../webrtc}/base/win/core_winrt_util.h | 0 .../webrtc}/base/win/current_module.h | 0 .../win/embedded_i18n/language_selector.h | 0 .../webrtc}/base/win/enum_variant.h | 0 .../webrtc}/base/win/event_trace_consumer.h | 0 .../webrtc}/base/win/event_trace_controller.h | 0 .../webrtc}/base/win/event_trace_provider.h | 0 .../webrtc}/base/win/hstring_compare.h | 0 .../webrtc}/base/win/hstring_reference.h | 0 {webrtc => include/webrtc}/base/win/i18n.h | 0 .../webrtc}/base/win/iat_patch_function.h | 0 {webrtc => include/webrtc}/base/win/map.h | 0 .../webrtc}/base/win/message_window.h | 0 .../webrtc}/base/win/object_watcher.h | 0 .../webrtc}/base/win/patch_util.h | 0 .../webrtc}/base/win/pe_image.h | 0 .../webrtc}/base/win/post_async_results.h | 0 .../webrtc}/base/win/process_startup_helper.h | 0 .../webrtc}/base/win/propvarutil.h | 0 .../webrtc}/base/win/reference.h | 0 .../webrtc}/base/win/registry.h | 0 .../webrtc}/base/win/resource_util.h | 0 .../webrtc}/base/win/scoped_bstr.h | 0 .../webrtc}/base/win/scoped_co_mem.h | 0 .../webrtc}/base/win/scoped_com_initializer.h | 0 .../webrtc}/base/win/scoped_gdi_object.h | 0 .../webrtc}/base/win/scoped_handle.h | 0 .../webrtc}/base/win/scoped_handle_verifier.h | 0 .../webrtc}/base/win/scoped_hdc.h | 0 .../webrtc}/base/win/scoped_hglobal.h | 0 .../webrtc}/base/win/scoped_hstring.h | 0 .../base/win/scoped_process_information.h | 0 .../webrtc}/base/win/scoped_propvariant.h | 0 .../webrtc}/base/win/scoped_safearray.h | 0 .../webrtc}/base/win/scoped_select_object.h | 0 .../webrtc}/base/win/scoped_variant.h | 0 .../win/scoped_windows_thread_environment.h | 0 .../base/win/scoped_winrt_initializer.h | 0 {webrtc => include/webrtc}/base/win/shlwapi.h | 0 .../webrtc}/base/win/shortcut.h | 0 .../webrtc}/base/win/sphelper.h | 0 .../webrtc}/base/win/startup_information.h | 0 .../webrtc}/base/win/static_constants.h | 0 .../webrtc}/base/win/typed_event_handler.h | 0 {webrtc => include/webrtc}/base/win/vector.h | 0 .../webrtc}/base/win/win_util.h | 0 .../webrtc}/base/win/wincrypt_shim.h | 0 .../webrtc}/base/win/windows_full.h | 0 .../webrtc}/base/win/windows_types.h | 0 .../webrtc}/base/win/windows_version.h | 0 .../webrtc}/base/win/windowsx_shim.h | 0 .../base/win/winrt_foundation_helpers.h | 0 .../webrtc}/base/win/winrt_storage_util.h | 0 {webrtc => include/webrtc}/base/win/wmi.h | 0 .../webrtc}/base/win/wrapped_window_proc.h | 0 .../call/adaptation/encoder_settings.h | 0 .../webrtc}/call/adaptation/resource.h | 0 .../resource_adaptation_processor.h | 0 .../resource_adaptation_processor_interface.h | 0 .../test/fake_frame_rate_provider.h | 0 .../call/adaptation/test/fake_resource.h | 0 .../adaptation/video_source_restrictions.h | 0 .../call/adaptation/video_stream_adapter.h | 0 .../adaptation/video_stream_input_state.h | 0 .../video_stream_input_state_provider.h | 0 .../webrtc}/call/audio_receive_stream.h | 0 .../webrtc}/call/audio_send_stream.h | 0 .../webrtc}/call/audio_sender.h | 0 {webrtc => include/webrtc}/call/audio_state.h | 0 .../webrtc}/call/bitrate_allocator.h | 0 {webrtc => include/webrtc}/call/call.h | 0 {webrtc => include/webrtc}/call/call_config.h | 0 .../webrtc}/call/call_factory.h | 0 .../webrtc}/call/degraded_call.h | 0 .../webrtc}/call/fake_network_pipe.h | 0 .../webrtc}/call/flexfec_receive_stream.h | 0 .../call/flexfec_receive_stream_impl.h | 0 .../webrtc}/call/packet_receiver.h | 0 .../webrtc}/call/rampup_tests.h | 0 .../webrtc}/call/receive_time_calculator.h | 0 .../webrtc}/call/rtcp_demuxer.h | 0 .../webrtc}/call/rtcp_packet_sink_interface.h | 0 .../webrtc}/call/rtp_bitrate_configurator.h | 0 {webrtc => include/webrtc}/call/rtp_config.h | 0 {webrtc => include/webrtc}/call/rtp_demuxer.h | 0 .../webrtc}/call/rtp_packet_sink_interface.h | 0 .../webrtc}/call/rtp_payload_params.h | 0 .../webrtc}/call/rtp_rtcp_demuxer_helper.h | 0 .../call/rtp_stream_receiver_controller.h | 0 ...rtp_stream_receiver_controller_interface.h | 0 .../call/rtp_transport_controller_send.h | 0 .../rtp_transport_controller_send_interface.h | 0 .../webrtc}/call/rtp_video_sender.h | 0 .../webrtc}/call/rtp_video_sender_interface.h | 0 .../webrtc}/call/rtx_receive_stream.h | 0 .../webrtc}/call/simulated_network.h | 0 .../webrtc}/call/simulated_packet_receiver.h | 0 .../webrtc}/call/ssrc_binding_observer.h | 0 {webrtc => include/webrtc}/call/syncable.h | 0 .../call/test/mock_audio_send_stream.h | 0 .../call/test/mock_bitrate_allocator.h | 0 .../test/mock_rtp_packet_sink_interface.h | 0 .../test/mock_rtp_transport_controller_send.h | 0 .../webrtc}/call/video_receive_stream.h | 0 .../webrtc}/call/video_send_stream.h | 0 {webrtc => include/webrtc}/common_types.h | 0 .../common_video/frame_rate_estimator.h | 0 .../generic_frame_info.h | 0 .../common_video/h264/h264_bitstream_parser.h | 0 .../webrtc}/common_video/h264/h264_common.h | 0 .../webrtc}/common_video/h264/pps_parser.h | 0 .../common_video/h264/profile_level_id.h | 0 .../webrtc}/common_video/h264/sps_parser.h | 0 .../common_video/h264/sps_vui_rewriter.h | 0 .../common_video/include/bitrate_adjuster.h | 0 .../common_video/include/i420_buffer_pool.h | 0 .../include/incoming_video_stream.h | 0 .../include/quality_limitation_reason.h | 0 .../common_video/include/video_frame.h | 0 .../common_video/include/video_frame_buffer.h | 0 .../libyuv/include/webrtc_libyuv.h | 0 .../webrtc}/common_video/test/utilities.h | 0 .../common_video/video_render_frames.h | 0 {webrtc => include/webrtc}/jni.h | 0 .../rtc_event_log/encoder/blob_encoding.h | 0 .../rtc_event_log/encoder/delta_encoding.h | 0 .../encoder/rtc_event_log_encoder.h | 0 .../encoder/rtc_event_log_encoder_common.h | 0 .../encoder/rtc_event_log_encoder_legacy.h | 0 .../rtc_event_log_encoder_new_format.h | 0 .../logging/rtc_event_log/encoder/var_int.h | 0 .../events/rtc_event_alr_state.h | 0 .../rtc_event_audio_network_adaptation.h | 0 .../events/rtc_event_audio_playout.h | 0 .../rtc_event_audio_receive_stream_config.h | 0 .../rtc_event_audio_send_stream_config.h | 0 .../events/rtc_event_bwe_update_delay_based.h | 0 .../events/rtc_event_bwe_update_loss_based.h | 0 .../events/rtc_event_dtls_transport_state.h | 0 .../events/rtc_event_dtls_writable_state.h | 0 .../events/rtc_event_generic_ack_received.h | 0 .../rtc_event_generic_packet_received.h | 0 .../events/rtc_event_generic_packet_sent.h | 0 .../events/rtc_event_ice_candidate_pair.h | 0 .../rtc_event_ice_candidate_pair_config.h | 0 .../events/rtc_event_probe_cluster_created.h | 0 .../events/rtc_event_probe_result_failure.h | 0 .../events/rtc_event_probe_result_success.h | 0 .../events/rtc_event_remote_estimate.h | 0 .../events/rtc_event_route_change.h | 0 .../events/rtc_event_rtcp_packet_incoming.h | 0 .../events/rtc_event_rtcp_packet_outgoing.h | 0 .../events/rtc_event_rtp_packet_incoming.h | 0 .../events/rtc_event_rtp_packet_outgoing.h | 0 .../rtc_event_video_receive_stream_config.h | 0 .../rtc_event_video_send_stream_config.h | 0 .../rtc_event_log/fake_rtc_event_log.h | 0 .../fake_rtc_event_log_factory.h | 0 .../logging/rtc_event_log/ice_logger.h | 0 .../logging/rtc_event_log/logged_events.h | 0 .../rtc_event_log/mock/mock_rtc_event_log.h | 0 .../output/rtc_event_log_output_file.h | 0 .../rtc_event_log/rtc_event_log_impl.h | 0 .../rtc_event_log/rtc_event_log_parser.h | 0 .../rtc_event_log_unittest_helper.h | 0 .../rtc_event_log/rtc_event_processor.h | 0 .../logging/rtc_event_log/rtc_stream_config.h | 0 .../media/base/adapted_video_track_source.h | 0 .../webrtc}/media/base/audio_source.h | 0 {webrtc => include/webrtc}/media/base/codec.h | 0 .../webrtc}/media/base/delayable.h | 0 .../webrtc}/media/base/fake_frame_source.h | 0 .../webrtc}/media/base/fake_media_engine.h | 0 .../media/base/fake_network_interface.h | 0 .../webrtc}/media/base/fake_rtp.h | 0 .../webrtc}/media/base/fake_video_renderer.h | 0 .../media/base/h264_profile_level_id.h | 0 .../webrtc}/media/base/media_channel.h | 0 .../webrtc}/media/base/media_config.h | 0 .../webrtc}/media/base/media_constants.h | 0 .../webrtc}/media/base/media_engine.h | 0 .../webrtc}/media/base/rid_description.h | 0 .../webrtc}/media/base/rtp_data_engine.h | 0 .../webrtc}/media/base/rtp_utils.h | 0 .../webrtc}/media/base/sdp_fmtp_utils.h | 0 .../webrtc}/media/base/stream_params.h | 0 .../webrtc}/media/base/test_utils.h | 0 .../webrtc}/media/base/turn_utils.h | 0 .../webrtc}/media/base/video_adapter.h | 0 .../webrtc}/media/base/video_broadcaster.h | 0 .../webrtc}/media/base/video_common.h | 0 .../webrtc}/media/base/video_source_base.h | 0 .../webrtc}/media/base/vp9_profile.h | 0 .../webrtc}/media/engine/adm_helpers.h | 0 .../webrtc}/media/engine/constants.h | 0 .../media/engine/encoder_simulcast_proxy.h | 0 .../media/engine/fake_video_codec_factory.h | 0 .../webrtc}/media/engine/fake_webrtc_call.h | 0 .../media/engine/fake_webrtc_video_engine.h | 0 .../media/engine/internal_decoder_factory.h | 0 .../media/engine/internal_encoder_factory.h | 0 .../media/engine/multiplex_codec_factory.h | 0 .../media/engine/null_webrtc_video_engine.h | 0 .../media/engine/payload_type_mapper.h | 0 .../webrtc}/media/engine/simulcast.h | 0 .../media/engine/simulcast_encoder_adapter.h | 0 .../media/engine/unhandled_packets_buffer.h | 0 .../media/engine/webrtc_media_engine.h | 0 .../engine/webrtc_media_engine_defaults.h | 0 .../media/engine/webrtc_video_engine.h | 0 .../media/engine/webrtc_voice_engine.h | 0 .../webrtc}/media/sctp/sctp_transport.h | 0 .../media/sctp/sctp_transport_internal.h | 0 .../audio_coding/acm2/acm_receive_test.h | 0 .../modules/audio_coding/acm2/acm_receiver.h | 0 .../modules/audio_coding/acm2/acm_remixing.h | 0 .../modules/audio_coding/acm2/acm_resampler.h | 0 .../modules/audio_coding/acm2/acm_send_test.h | 0 .../audio_coding/acm2/call_statistics.h | 0 .../audio_network_adaptor_impl.h | 0 .../bitrate_controller.h | 0 .../channel_controller.h | 0 .../audio_network_adaptor/controller.h | 0 .../controller_manager.h | 0 .../audio_network_adaptor/debug_dump_writer.h | 0 .../audio_network_adaptor/dtx_controller.h | 0 .../audio_network_adaptor/event_log_writer.h | 0 .../fec_controller_plr_based.h | 0 .../frame_length_controller.h | 0 .../include/audio_network_adaptor.h | 0 .../include/audio_network_adaptor_config.h | 0 .../mock/mock_audio_network_adaptor.h | 0 .../mock/mock_controller.h | 0 .../mock/mock_controller_manager.h | 0 .../mock/mock_debug_dump_writer.h | 0 .../util/threshold_curve.h | 0 .../audio_coding/codecs/audio_decoder.h | 0 .../audio_coding/codecs/audio_encoder.h | 0 .../codecs/cng/audio_encoder_cng.h | 0 .../audio_coding/codecs/cng/webrtc_cng.h | 0 .../codecs/g711/audio_decoder_pcm.h | 0 .../codecs/g711/audio_encoder_pcm.h | 0 .../audio_coding/codecs/g711/g711_interface.h | 0 .../codecs/g722/audio_decoder_g722.h | 0 .../codecs/g722/audio_encoder_g722.h | 0 .../audio_coding/codecs/g722/g722_interface.h | 0 .../audio_coding/codecs/ilbc/abs_quant.h | 0 .../audio_coding/codecs/ilbc/abs_quant_loop.h | 0 .../codecs/ilbc/audio_decoder_ilbc.h | 0 .../codecs/ilbc/audio_encoder_ilbc.h | 0 .../codecs/ilbc/augmented_cb_corr.h | 0 .../audio_coding/codecs/ilbc/bw_expand.h | 0 .../audio_coding/codecs/ilbc/cb_construct.h | 0 .../audio_coding/codecs/ilbc/cb_mem_energy.h | 0 .../codecs/ilbc/cb_mem_energy_augmentation.h | 0 .../codecs/ilbc/cb_mem_energy_calc.h | 0 .../audio_coding/codecs/ilbc/cb_search.h | 0 .../audio_coding/codecs/ilbc/cb_search_core.h | 0 .../codecs/ilbc/cb_update_best_index.h | 0 .../audio_coding/codecs/ilbc/chebyshev.h | 0 .../audio_coding/codecs/ilbc/comp_corr.h | 0 .../audio_coding/codecs/ilbc/constants.h | 0 .../codecs/ilbc/create_augmented_vec.h | 0 .../modules/audio_coding/codecs/ilbc/decode.h | 0 .../codecs/ilbc/decode_residual.h | 0 .../codecs/ilbc/decoder_interpolate_lsf.h | 0 .../audio_coding/codecs/ilbc/defines.h | 0 .../modules/audio_coding/codecs/ilbc/do_plc.h | 0 .../modules/audio_coding/codecs/ilbc/encode.h | 0 .../audio_coding/codecs/ilbc/energy_inverse.h | 0 .../audio_coding/codecs/ilbc/enh_upsample.h | 0 .../audio_coding/codecs/ilbc/enhancer.h | 0 .../codecs/ilbc/enhancer_interface.h | 0 .../codecs/ilbc/filtered_cb_vecs.h | 0 .../audio_coding/codecs/ilbc/frame_classify.h | 0 .../audio_coding/codecs/ilbc/gain_dequant.h | 0 .../audio_coding/codecs/ilbc/gain_quant.h | 0 .../audio_coding/codecs/ilbc/get_cd_vec.h | 0 .../audio_coding/codecs/ilbc/get_lsp_poly.h | 0 .../audio_coding/codecs/ilbc/get_sync_seq.h | 0 .../audio_coding/codecs/ilbc/hp_input.h | 0 .../audio_coding/codecs/ilbc/hp_output.h | 0 .../modules/audio_coding/codecs/ilbc/ilbc.h | 0 .../audio_coding/codecs/ilbc/index_conv_dec.h | 0 .../audio_coding/codecs/ilbc/index_conv_enc.h | 0 .../audio_coding/codecs/ilbc/init_decode.h | 0 .../audio_coding/codecs/ilbc/init_encode.h | 0 .../audio_coding/codecs/ilbc/interpolate.h | 0 .../codecs/ilbc/interpolate_samples.h | 0 .../audio_coding/codecs/ilbc/lpc_encode.h | 0 .../audio_coding/codecs/ilbc/lsf_check.h | 0 .../codecs/ilbc/lsf_interpolate_to_poly_dec.h | 0 .../codecs/ilbc/lsf_interpolate_to_poly_enc.h | 0 .../audio_coding/codecs/ilbc/lsf_to_lsp.h | 0 .../audio_coding/codecs/ilbc/lsf_to_poly.h | 0 .../audio_coding/codecs/ilbc/lsp_to_lsf.h | 0 .../audio_coding/codecs/ilbc/my_corr.h | 0 .../codecs/ilbc/nearest_neighbor.h | 0 .../audio_coding/codecs/ilbc/pack_bits.h | 0 .../audio_coding/codecs/ilbc/poly_to_lsf.h | 0 .../audio_coding/codecs/ilbc/poly_to_lsp.h | 0 .../audio_coding/codecs/ilbc/refiner.h | 0 .../codecs/ilbc/simple_interpolate_lsf.h | 0 .../codecs/ilbc/simple_lpc_analysis.h | 0 .../codecs/ilbc/simple_lsf_dequant.h | 0 .../codecs/ilbc/simple_lsf_quant.h | 0 .../modules/audio_coding/codecs/ilbc/smooth.h | 0 .../codecs/ilbc/smooth_out_data.h | 0 .../audio_coding/codecs/ilbc/sort_sq.h | 0 .../audio_coding/codecs/ilbc/split_vq.h | 0 .../codecs/ilbc/state_construct.h | 0 .../audio_coding/codecs/ilbc/state_search.h | 0 .../audio_coding/codecs/ilbc/swap_bytes.h | 0 .../audio_coding/codecs/ilbc/unpack_bits.h | 0 .../modules/audio_coding/codecs/ilbc/vq3.h | 0 .../modules/audio_coding/codecs/ilbc/vq4.h | 0 .../audio_coding/codecs/ilbc/window32_w32.h | 0 .../audio_coding/codecs/ilbc/xcorr_coef.h | 0 .../codecs/isac/audio_decoder_isac_t.h | 0 .../codecs/isac/audio_decoder_isac_t_impl.h | 0 .../codecs/isac/audio_encoder_isac_t.h | 0 .../codecs/isac/audio_encoder_isac_t_impl.h | 0 .../audio_coding/codecs/isac/bandwidth_info.h | 0 .../isac/fix/include/audio_decoder_isacfix.h | 0 .../isac/fix/include/audio_encoder_isacfix.h | 0 .../codecs/isac/fix/include/isacfix.h | 0 .../codecs/isac/fix/source/arith_routins.h | 0 .../isac/fix/source/bandwidth_estimator.h | 0 .../codecs/isac/fix/source/codec.h | 0 .../codecs/isac/fix/source/entropy_coding.h | 0 .../audio_coding/codecs/isac/fix/source/fft.h | 0 .../isac/fix/source/filterbank_internal.h | 0 .../isac/fix/source/filterbank_tables.h | 0 .../codecs/isac/fix/source/isac_fix_type.h | 0 .../isac/fix/source/lpc_masking_model.h | 0 .../codecs/isac/fix/source/lpc_tables.h | 0 .../codecs/isac/fix/source/pitch_estimator.h | 0 .../isac/fix/source/pitch_gain_tables.h | 0 .../codecs/isac/fix/source/pitch_lag_tables.h | 0 .../codecs/isac/fix/source/settings.h | 0 .../fix/source/spectrum_ar_model_tables.h | 0 .../codecs/isac/fix/source/structs.h | 0 .../isac/main/include/audio_decoder_isac.h | 0 .../isac/main/include/audio_encoder_isac.h | 0 .../codecs/isac/main/include/isac.h | 0 .../codecs/isac/main/source/arith_routines.h | 0 .../isac/main/source/bandwidth_estimator.h | 0 .../codecs/isac/main/source/codec.h | 0 .../codecs/isac/main/source/crc.h | 0 .../codecs/isac/main/source/encode_lpc_swb.h | 0 .../codecs/isac/main/source/entropy_coding.h | 0 .../isac/main/source/filter_functions.h | 0 .../codecs/isac/main/source/isac_float_type.h | 0 .../codecs/isac/main/source/isac_vad.h | 0 .../codecs/isac/main/source/lpc_analysis.h | 0 .../isac/main/source/lpc_gain_swb_tables.h | 0 .../isac/main/source/lpc_shape_swb12_tables.h | 0 .../isac/main/source/lpc_shape_swb16_tables.h | 0 .../codecs/isac/main/source/lpc_tables.h | 0 .../isac/main/source/os_specific_inline.h | 0 .../codecs/isac/main/source/pitch_estimator.h | 0 .../codecs/isac/main/source/pitch_filter.h | 0 .../isac/main/source/pitch_gain_tables.h | 0 .../isac/main/source/pitch_lag_tables.h | 0 .../codecs/isac/main/source/settings.h | 0 .../main/source/spectrum_ar_model_tables.h | 0 .../codecs/isac/main/source/structs.h | 0 .../codecs/isac/main/util/utility.h | 0 .../codecs/legacy_encoded_audio_frame.h | 0 .../codecs/opus/audio_coder_opus_common.h | 0 .../audio_decoder_multi_channel_opus_impl.h | 0 .../codecs/opus/audio_decoder_opus.h | 0 .../audio_encoder_multi_channel_opus_impl.h | 0 .../codecs/opus/audio_encoder_opus.h | 0 .../audio_coding/codecs/opus/opus_inst.h | 0 .../audio_coding/codecs/opus/opus_interface.h | 0 .../codecs/opus/test/audio_ring_buffer.h | 0 .../audio_coding/codecs/opus/test/blocker.h | 0 .../codecs/opus/test/lapped_transform.h | 0 .../codecs/pcm16b/audio_decoder_pcm16b.h | 0 .../codecs/pcm16b/audio_encoder_pcm16b.h | 0 .../audio_coding/codecs/pcm16b/pcm16b.h | 0 .../codecs/pcm16b/pcm16b_common.h | 0 .../codecs/red/audio_encoder_copy_red.h | 0 .../codecs/tools/audio_codec_speed_test.h | 0 .../include/audio_coding_module.h | 0 .../include/audio_coding_module_typedefs.h | 0 .../modules/audio_coding/neteq/accelerate.h | 0 .../audio_coding/neteq/audio_multi_vector.h | 0 .../modules/audio_coding/neteq/audio_vector.h | 0 .../audio_coding/neteq/background_noise.h | 0 .../audio_coding/neteq/buffer_level_filter.h | 0 .../audio_coding/neteq/comfort_noise.h | 0 .../audio_coding/neteq/cross_correlation.h | 0 .../audio_coding/neteq/decision_logic.h | 0 .../audio_coding/neteq/decoder_database.h | 0 .../neteq/default_neteq_factory.h | 0 .../audio_coding/neteq/delay_manager.h | 0 .../modules/audio_coding/neteq/dsp_helper.h | 0 .../modules/audio_coding/neteq/dtmf_buffer.h | 0 .../audio_coding/neteq/dtmf_tone_generator.h | 0 .../modules/audio_coding/neteq/expand.h | 0 .../audio_coding/neteq/expand_uma_logger.h | 0 .../modules/audio_coding/neteq/histogram.h | 0 .../modules/audio_coding/neteq/merge.h | 0 .../neteq/mock/mock_decoder_database.h | 0 .../neteq/mock/mock_dtmf_buffer.h | 0 .../neteq/mock/mock_dtmf_tone_generator.h | 0 .../audio_coding/neteq/mock/mock_expand.h | 0 .../audio_coding/neteq/mock/mock_histogram.h | 0 .../neteq/mock/mock_neteq_controller.h | 0 .../neteq/mock/mock_packet_buffer.h | 0 .../neteq/mock/mock_red_payload_splitter.h | 0 .../neteq/mock/mock_statistics_calculator.h | 0 .../modules/audio_coding/neteq/nack_tracker.h | 0 .../modules/audio_coding/neteq/neteq_impl.h | 0 .../modules/audio_coding/neteq/normal.h | 0 .../modules/audio_coding/neteq/packet.h | 0 .../audio_coding/neteq/packet_buffer.h | 0 .../audio_coding/neteq/post_decode_vad.h | 0 .../audio_coding/neteq/preemptive_expand.h | 0 .../audio_coding/neteq/random_vector.h | 0 .../audio_coding/neteq/red_payload_splitter.h | 0 .../neteq/statistics_calculator.h | 0 .../modules/audio_coding/neteq/sync_buffer.h | 0 .../neteq/test/neteq_decoding_test.h | 0 .../audio_coding/neteq/test/result_sink.h | 0 .../modules/audio_coding/neteq/time_stretch.h | 0 .../audio_coding/neteq/timestamp_scaler.h | 0 .../audio_coding/neteq/tools/audio_checksum.h | 0 .../audio_coding/neteq/tools/audio_loop.h | 0 .../audio_coding/neteq/tools/audio_sink.h | 0 .../neteq/tools/constant_pcm_packet_source.h | 0 .../neteq/tools/encode_neteq_input.h | 0 .../neteq/tools/fake_decode_from_file.h | 0 .../initial_packet_inserter_neteq_input.h | 0 .../neteq/tools/input_audio_file.h | 0 .../neteq/tools/neteq_delay_analyzer.h | 0 .../neteq/tools/neteq_event_log_input.h | 0 .../audio_coding/neteq/tools/neteq_input.h | 0 .../neteq/tools/neteq_packet_source_input.h | 0 .../neteq/tools/neteq_performance_test.h | 0 .../neteq/tools/neteq_quality_test.h | 0 .../neteq/tools/neteq_replacement_input.h | 0 .../neteq/tools/neteq_stats_getter.h | 0 .../neteq/tools/neteq_stats_plotter.h | 0 .../audio_coding/neteq/tools/neteq_test.h | 0 .../neteq/tools/neteq_test_factory.h | 0 .../neteq/tools/output_audio_file.h | 0 .../neteq/tools/output_wav_file.h | 0 .../modules/audio_coding/neteq/tools/packet.h | 0 .../audio_coding/neteq/tools/packet_source.h | 0 .../neteq/tools/resample_input_audio_file.h | 0 .../neteq/tools/rtc_event_log_source.h | 0 .../neteq/tools/rtp_file_source.h | 0 .../audio_coding/neteq/tools/rtp_generator.h | 0 .../modules/audio_coding/test/Channel.h | 0 .../audio_coding/test/EncodeDecodeTest.h | 0 .../modules/audio_coding/test/PCMFile.h | 0 .../audio_coding/test/PacketLossTest.h | 0 .../modules/audio_coding/test/RTPFile.h | 0 .../modules/audio_coding/test/TestAllCodecs.h | 0 .../modules/audio_coding/test/TestRedFec.h | 0 .../modules/audio_coding/test/TestStereo.h | 0 .../modules/audio_coding/test/TestVADDTX.h | 0 .../audio_coding/test/TwoWayCommunication.h | 0 .../modules/audio_coding/test/iSACTest.h | 0 .../modules/audio_coding/test/opus_test.h | 0 .../audio_device/android/aaudio_player.h | 0 .../audio_device/android/aaudio_recorder.h | 0 .../audio_device/android/aaudio_wrapper.h | 0 .../audio_device/android/audio_common.h | 0 .../android/audio_device_template.h | 0 .../audio_device/android/audio_manager.h | 0 .../audio_device/android/audio_record_jni.h | 0 .../audio_device/android/audio_track_jni.h | 0 .../modules/audio_device/android/build_info.h | 0 .../audio_device/android/ensure_initialized.h | 0 .../audio_device/android/opensles_common.h | 0 .../audio_device/android/opensles_player.h | 0 .../audio_device/android/opensles_recorder.h | 0 .../audio_device/audio_device_buffer.h | 0 .../audio_device/audio_device_config.h | 0 .../audio_device/audio_device_generic.h | 0 .../modules/audio_device/audio_device_impl.h | 0 .../modules/audio_device/audio_device_name.h | 0 .../audio_device/dummy/audio_device_dummy.h | 0 .../audio_device/dummy/file_audio_device.h | 0 .../dummy/file_audio_device_factory.h | 0 .../modules/audio_device/fine_audio_buffer.h | 0 .../audio_device/include/audio_device.h | 0 .../include/audio_device_data_observer.h | 0 .../include/audio_device_default.h | 0 .../include/audio_device_defines.h | 0 .../include/audio_device_factory.h | 0 .../audio_device/include/fake_audio_device.h | 0 .../audio_device/include/mock_audio_device.h | 0 .../include/mock_audio_transport.h | 0 .../audio_device/include/test_audio_device.h | 0 .../linux/alsasymboltable_linux.h | 0 .../linux/audio_device_alsa_linux.h | 0 .../linux/audio_device_pulse_linux.h | 0 .../linux/audio_mixer_manager_alsa_linux.h | 0 .../linux/audio_mixer_manager_pulse_linux.h | 0 .../linux/latebindingsymboltable_linux.h | 0 .../linux/pulseaudiosymboltable_linux.h | 0 .../audio_device/mac/audio_device_mac.h | 0 .../mac/audio_mixer_manager_mac.h | 0 .../audio_device/mock_audio_device_buffer.h | 0 .../audio_device/win/audio_device_core_win.h | 0 .../win/audio_device_module_win.h | 0 .../audio_device/win/core_audio_base_win.h | 0 .../audio_device/win/core_audio_input_win.h | 0 .../audio_device/win/core_audio_output_win.h | 0 .../audio_device/win/core_audio_utility_win.h | 0 .../audio_mixer/audio_frame_manipulator.h | 0 .../modules/audio_mixer/audio_mixer_impl.h | 0 .../default_output_rate_calculator.h | 0 .../modules/audio_mixer/frame_combiner.h | 0 .../audio_mixer/gain_change_calculator.h | 0 .../audio_mixer/output_rate_calculator.h | 0 .../modules/audio_mixer/sine_wave_generator.h | 0 .../aec3/adaptive_fir_filter.h | 0 .../aec3/adaptive_fir_filter_erl.h | 0 .../audio_processing/aec3/aec3_common.h | 0 .../modules/audio_processing/aec3/aec3_fft.h | 0 .../modules/audio_processing/aec3/aec_state.h | 0 .../audio_processing/aec3/alignment_mixer.h | 0 .../aec3/api_call_jitter_metrics.h | 0 .../audio_processing/aec3/block_buffer.h | 0 .../aec3/block_delay_buffer.h | 0 .../audio_processing/aec3/block_framer.h | 0 .../audio_processing/aec3/block_processor.h | 0 .../aec3/block_processor_metrics.h | 0 .../aec3/clockdrift_detector.h | 0 .../aec3/coarse_filter_update_gain.h | 0 .../aec3/comfort_noise_generator.h | 0 .../modules/audio_processing/aec3/decimator.h | 0 .../audio_processing/aec3/delay_estimate.h | 0 .../aec3/dominant_nearend_detector.h | 0 .../aec3/downsampled_render_buffer.h | 0 .../audio_processing/aec3/echo_audibility.h | 0 .../audio_processing/aec3/echo_canceller3.h | 0 .../aec3/echo_path_delay_estimator.h | 0 .../aec3/echo_path_variability.h | 0 .../audio_processing/aec3/echo_remover.h | 0 .../aec3/echo_remover_metrics.h | 0 .../audio_processing/aec3/erl_estimator.h | 0 .../audio_processing/aec3/erle_estimator.h | 0 .../audio_processing/aec3/fft_buffer.h | 0 .../modules/audio_processing/aec3/fft_data.h | 0 .../audio_processing/aec3/filter_analyzer.h | 0 .../audio_processing/aec3/frame_blocker.h | 0 .../aec3/fullband_erle_estimator.h | 0 .../audio_processing/aec3/matched_filter.h | 0 .../aec3/matched_filter_lag_aggregator.h | 0 .../aec3/mock/mock_block_processor.h | 0 .../aec3/mock/mock_echo_remover.h | 0 .../aec3/mock/mock_render_delay_buffer.h | 0 .../aec3/mock/mock_render_delay_controller.h | 0 .../audio_processing/aec3/moving_average.h | 0 .../audio_processing/aec3/nearend_detector.h | 0 .../aec3/refined_filter_update_gain.h | 0 .../audio_processing/aec3/render_buffer.h | 0 .../aec3/render_delay_buffer.h | 0 .../aec3/render_delay_controller.h | 0 .../aec3/render_delay_controller_metrics.h | 0 .../aec3/render_signal_analyzer.h | 0 .../aec3/residual_echo_estimator.h | 0 .../aec3/reverb_decay_estimator.h | 0 .../aec3/reverb_frequency_response.h | 0 .../audio_processing/aec3/reverb_model.h | 0 .../aec3/reverb_model_estimator.h | 0 .../aec3/signal_dependent_erle_estimator.h | 0 .../audio_processing/aec3/spectrum_buffer.h | 0 .../aec3/stationarity_estimator.h | 0 .../aec3/subband_erle_estimator.h | 0 .../aec3/subband_nearend_detector.h | 0 .../audio_processing/aec3/subtractor.h | 0 .../audio_processing/aec3/subtractor_output.h | 0 .../aec3/subtractor_output_analyzer.h | 0 .../aec3/suppression_filter.h | 0 .../audio_processing/aec3/suppression_gain.h | 0 .../audio_processing/aec3/vector_math.h | 0 .../aec_dump/aec_dump_factory.h | 0 .../audio_processing/aec_dump/aec_dump_impl.h | 0 .../aec_dump/capture_stream_info.h | 0 .../audio_processing/aec_dump/mock_aec_dump.h | 0 .../aec_dump/write_to_file_task.h | 0 .../modules/audio_processing/aecm/aecm_core.h | 0 .../audio_processing/aecm/aecm_defines.h | 0 .../aecm/echo_control_mobile.h | 0 .../modules/audio_processing/agc/agc.h | 0 .../audio_processing/agc/agc_manager_direct.h | 0 .../audio_processing/agc/gain_control.h | 0 .../audio_processing/agc/gain_map_internal.h | 0 .../audio_processing/agc/legacy/analog_agc.h | 0 .../audio_processing/agc/legacy/digital_agc.h | 0 .../agc/legacy/gain_control.h | 0 .../audio_processing/agc/loudness_histogram.h | 0 .../modules/audio_processing/agc/mock_agc.h | 0 .../modules/audio_processing/agc/utility.h | 0 .../audio_processing/agc2/adaptive_agc.h | 0 .../agc2/adaptive_digital_gain_applier.h | 0 .../agc2/adaptive_mode_level_estimator.h | 0 .../agc2/adaptive_mode_level_estimator_agc.h | 0 .../audio_processing/agc2/agc2_common.h | 0 .../agc2/agc2_testing_common.h | 0 .../audio_processing/agc2/biquad_filter.h | 0 .../agc2/compute_interpolated_gain_curve.h | 0 .../audio_processing/agc2/down_sampler.h | 0 .../agc2/fixed_digital_level_estimator.h | 0 .../audio_processing/agc2/gain_applier.h | 0 .../agc2/interpolated_gain_curve.h | 0 .../modules/audio_processing/agc2/limiter.h | 0 .../agc2/limiter_db_gain_curve.h | 0 .../agc2/noise_level_estimator.h | 0 .../agc2/noise_spectrum_estimator.h | 0 .../agc2/rnn_vad/auto_correlation.h | 0 .../audio_processing/agc2/rnn_vad/common.h | 0 .../agc2/rnn_vad/features_extraction.h | 0 .../agc2/rnn_vad/lp_residual.h | 0 .../agc2/rnn_vad/pitch_info.h | 0 .../agc2/rnn_vad/pitch_search.h | 0 .../agc2/rnn_vad/pitch_search_internal.h | 0 .../agc2/rnn_vad/ring_buffer.h | 0 .../audio_processing/agc2/rnn_vad/rnn.h | 0 .../agc2/rnn_vad/sequence_buffer.h | 0 .../agc2/rnn_vad/spectral_features.h | 0 .../agc2/rnn_vad/spectral_features_internal.h | 0 .../agc2/rnn_vad/symmetric_matrix_buffer.h | 0 .../agc2/rnn_vad/test_utils.h | 0 .../agc2/saturation_protector.h | 0 .../audio_processing/agc2/signal_classifier.h | 0 .../audio_processing/agc2/vad_with_level.h | 0 .../agc2/vector_float_frame.h | 0 .../modules/audio_processing/audio_buffer.h | 0 .../audio_processing/audio_processing_impl.h | 0 .../webrtc}/modules/audio_processing/common.h | 0 .../echo_control_mobile_impl.h | 0 .../echo_detector/circular_buffer.h | 0 .../echo_detector/mean_variance_estimator.h | 0 .../echo_detector/moving_max.h | 0 .../normalized_covariance_estimator.h | 0 .../audio_processing/gain_control_impl.h | 0 .../audio_processing/gain_controller2.h | 0 .../audio_processing/high_pass_filter.h | 0 .../audio_processing/include/aec_dump.h | 0 .../include/audio_frame_proxies.h | 0 .../include/audio_frame_view.h | 0 .../include/audio_processing.h | 0 .../include/audio_processing_statistics.h | 0 .../modules/audio_processing/include/config.h | 0 .../include/mock_audio_processing.h | 0 .../audio_processing/level_estimator.h | 0 .../logging/apm_data_dumper.h | 0 .../modules/audio_processing/ns/fast_math.h | 0 .../modules/audio_processing/ns/histograms.h | 0 .../audio_processing/ns/noise_estimator.h | 0 .../audio_processing/ns/noise_suppressor.h | 0 .../modules/audio_processing/ns/ns_common.h | 0 .../modules/audio_processing/ns/ns_config.h | 0 .../modules/audio_processing/ns/ns_fft.h | 0 .../audio_processing/ns/prior_signal_model.h | 0 .../ns/prior_signal_model_estimator.h | 0 .../ns/quantile_noise_estimator.h | 0 .../audio_processing/ns/signal_model.h | 0 .../ns/signal_model_estimator.h | 0 .../ns/speech_probability_estimator.h | 0 .../audio_processing/ns/suppression_params.h | 0 .../audio_processing/ns/wiener_filter.h | 0 .../optionally_built_submodule_creators.h | 0 .../render_queue_item_verifier.h | 0 .../audio_processing/residual_echo_detector.h | 0 .../modules/audio_processing/rms_level.h | 0 .../audio_processing/splitting_filter.h | 0 .../test/aec_dump_based_simulator.h | 0 .../test/api_call_statistics.h | 0 .../test/audio_buffer_tools.h | 0 .../audio_processing_builder_for_testing.h | 0 .../test/audio_processing_simulator.h | 0 .../test/audioproc_float_impl.h | 0 .../test/bitexactness_tools.h | 0 .../test/conversational_speech/config.h | 0 .../conversational_speech/mock_wavreader.h | 0 .../mock_wavreader_factory.h | 0 .../conversational_speech/multiend_call.h | 0 .../test/conversational_speech/simulator.h | 0 .../test/conversational_speech/timing.h | 0 .../wavreader_abstract_factory.h | 0 .../conversational_speech/wavreader_factory.h | 0 .../wavreader_interface.h | 0 .../test/debug_dump_replayer.h | 0 .../test/echo_canceller_test_tools.h | 0 .../audio_processing/test/echo_control_mock.h | 0 .../test/fake_recording_device.h | 0 .../audio_processing/test/performance_timer.h | 0 .../audio_processing/test/protobuf_utils.h | 0 .../test/runtime_setting_util.h | 0 .../audio_processing/test/simulator_buffers.h | 0 .../audio_processing/test/test_utils.h | 0 .../test/wav_based_simulator.h | 0 .../audio_processing/three_band_filter_bank.h | 0 .../audio_processing/transient/common.h | 0 .../transient/daubechies_8_wavelet_coeffs.h | 0 .../transient/dyadic_decimator.h | 0 .../audio_processing/transient/file_utils.h | 0 .../transient/moving_moments.h | 0 .../transient/transient_detector.h | 0 .../transient/transient_suppressor.h | 0 .../transient/transient_suppressor_impl.h | 0 .../transient/windows_private.h | 0 .../audio_processing/transient/wpd_node.h | 0 .../audio_processing/transient/wpd_tree.h | 0 .../audio_processing/typing_detection.h | 0 .../utility/cascaded_biquad_filter.h | 0 .../utility/delay_estimator.h | 0 .../utility/delay_estimator_internal.h | 0 .../utility/delay_estimator_wrapper.h | 0 .../audio_processing/utility/pffft_wrapper.h | 0 .../modules/audio_processing/vad/common.h | 0 .../modules/audio_processing/vad/gmm.h | 0 .../audio_processing/vad/noise_gmm_tables.h | 0 .../audio_processing/vad/pitch_based_vad.h | 0 .../audio_processing/vad/pitch_internal.h | 0 .../audio_processing/vad/pole_zero_filter.h | 0 .../audio_processing/vad/standalone_vad.h | 0 .../audio_processing/vad/vad_audio_proc.h | 0 .../vad/vad_audio_proc_internal.h | 0 .../vad/vad_circular_buffer.h | 0 .../vad/voice_activity_detector.h | 0 .../audio_processing/vad/voice_gmm_tables.h | 0 .../audio_processing/voice_detection.h | 0 .../goog_cc/acknowledged_bitrate_estimator.h | 0 ...acknowledged_bitrate_estimator_interface.h | 0 .../goog_cc/alr_detector.h | 0 .../goog_cc/bitrate_estimator.h | 0 .../congestion_window_pushback_controller.h | 0 .../goog_cc/delay_based_bwe.h | 0 .../goog_cc/delay_based_bwe_unittest_helper.h | 0 .../delay_increase_detector_interface.h | 0 .../goog_cc/goog_cc_network_control.h | 0 .../goog_cc/link_capacity_estimator.h | 0 .../goog_cc/loss_based_bandwidth_estimation.h | 0 .../goog_cc/probe_bitrate_estimator.h | 0 .../goog_cc/probe_controller.h | 0 .../goog_cc/robust_throughput_estimator.h | 0 .../goog_cc/send_side_bandwidth_estimation.h | 0 .../goog_cc/test/goog_cc_printer.h | 0 .../goog_cc/trendline_estimator.h | 0 .../receive_side_congestion_controller.h | 0 .../pcc/bitrate_controller.h | 0 .../pcc/monitor_interval.h | 0 .../congestion_controller/pcc/pcc_factory.h | 0 .../pcc/pcc_network_controller.h | 0 .../congestion_controller/pcc/rtt_tracker.h | 0 .../pcc/utility_function.h | 0 .../rtp/control_handler.h | 0 .../rtp/transport_feedback_adapter.h | 0 .../rtp/transport_feedback_demuxer.h | 0 .../blank_detector_desktop_capturer_wrapper.h | 0 .../capture_result_desktop_capturer_wrapper.h | 0 .../desktop_capture/cropped_desktop_frame.h | 0 .../cropping_window_capturer.h | 0 .../desktop_and_cursor_composer.h | 0 .../desktop_capture/desktop_capture_options.h | 0 .../desktop_capture/desktop_capture_types.h | 0 .../desktop_capture/desktop_capturer.h | 0 .../desktop_capturer_differ_wrapper.h | 0 .../desktop_capturer_wrapper.h | 0 .../modules/desktop_capture/desktop_frame.h | 0 .../desktop_capture/desktop_frame_generator.h | 0 .../desktop_capture/desktop_frame_rotation.h | 0 .../desktop_capture/desktop_frame_win.h | 0 .../desktop_capture/desktop_geometry.h | 0 .../modules/desktop_capture/desktop_region.h | 0 .../modules/desktop_capture/differ_block.h | 0 .../desktop_capture/differ_vector_sse2.h | 0 .../desktop_capture/fake_desktop_capturer.h | 0 .../fallback_desktop_capturer_wrapper.h | 0 .../full_screen_application_handler.h | 0 .../full_screen_window_detector.h | 0 .../linux/base_capturer_pipewire.h | 0 .../linux/mouse_cursor_monitor_x11.h | 0 .../linux/screen_capturer_pipewire.h | 0 .../linux/screen_capturer_x11.h | 0 .../desktop_capture/linux/shared_x_display.h | 0 .../linux/window_capturer_pipewire.h | 0 .../linux/window_capturer_x11.h | 0 .../desktop_capture/linux/window_finder_x11.h | 0 .../desktop_capture/linux/window_list_utils.h | 0 .../desktop_capture/linux/x_atom_cache.h | 0 .../desktop_capture/linux/x_error_trap.h | 0 .../linux/x_server_pixel_buffer.h | 0 .../desktop_capture/linux/x_window_property.h | 0 .../mac/desktop_configuration.h | 0 .../mac/desktop_configuration_monitor.h | 0 .../mac/desktop_frame_cgimage.h | 0 .../mac/desktop_frame_iosurface.h | 0 .../mac/desktop_frame_provider.h | 0 .../mac/full_screen_mac_application_handler.h | 0 .../desktop_capture/mac/screen_capturer_mac.h | 0 .../desktop_capture/mac/window_list_utils.h | 0 .../mock_desktop_capturer_callback.h | 0 .../modules/desktop_capture/mouse_cursor.h | 0 .../desktop_capture/mouse_cursor_monitor.h | 0 .../desktop_capture/resolution_tracker.h | 0 .../modules/desktop_capture/rgba_color.h | 0 .../screen_capture_frame_queue.h | 0 .../desktop_capture/screen_capturer_helper.h | 0 .../modules/desktop_capture/screen_drawer.h | 0 .../screen_drawer_lock_posix.h | 0 .../desktop_capture/shared_desktop_frame.h | 0 .../modules/desktop_capture/shared_memory.h | 0 .../modules/desktop_capture/test_utils.h | 0 .../modules/desktop_capture/win/cursor.h | 0 .../win/cursor_unittest_resources.h | 0 .../modules/desktop_capture/win/d3d_device.h | 0 .../modules/desktop_capture/win/desktop.h | 0 .../win/display_configuration_monitor.h | 0 .../win/dxgi_adapter_duplicator.h | 0 .../desktop_capture/win/dxgi_context.h | 0 .../win/dxgi_duplicator_controller.h | 0 .../modules/desktop_capture/win/dxgi_frame.h | 0 .../win/dxgi_output_duplicator.h | 0 .../desktop_capture/win/dxgi_texture.h | 0 .../win/dxgi_texture_mapping.h | 0 .../win/dxgi_texture_staging.h | 0 .../win/full_screen_win_application_handler.h | 0 .../desktop_capture/win/scoped_gdi_object.h | 0 .../win/scoped_thread_desktop.h | 0 .../win/screen_capture_utils.h | 0 .../win/screen_capturer_win_directx.h | 0 .../win/screen_capturer_win_gdi.h | 0 .../win/screen_capturer_win_magnifier.h | 0 .../win/selected_window_context.h | 0 .../win/window_capture_utils.h | 0 .../modules/desktop_capture/window_finder.h | 0 .../desktop_capture/window_finder_mac.h | 0 .../desktop_capture/window_finder_win.h | 0 .../webrtc}/modules/include/module.h | 0 .../modules/include/module_common_types.h | 0 .../include/module_common_types_public.h | 0 .../modules/include/module_fec_types.h | 0 .../webrtc}/modules/pacing/bitrate_prober.h | 0 .../webrtc}/modules/pacing/interval_budget.h | 0 .../webrtc}/modules/pacing/paced_sender.h | 0 .../modules/pacing/pacing_controller.h | 0 .../webrtc}/modules/pacing/packet_router.h | 0 .../modules/pacing/round_robin_packet_queue.h | 0 .../webrtc}/modules/pacing/rtp_packet_pacer.h | 0 .../modules/pacing/task_queue_paced_sender.h | 0 .../aimd_rate_control.h | 0 .../include/bwe_defines.h | 0 .../include/remote_bitrate_estimator.h | 0 .../remote_bitrate_estimator/inter_arrival.h | 0 .../overuse_detector.h | 0 .../overuse_estimator.h | 0 .../remote_bitrate_estimator_abs_send_time.h | 0 .../remote_bitrate_estimator_single_stream.h | 0 ...remote_bitrate_estimator_unittest_helper.h | 0 .../remote_estimator_proxy.h | 0 .../test/bwe_test_logging.h | 0 .../remote_bitrate_estimator/tools/bwe_rtp.h | 0 .../rtp_rtcp/include/flexfec_receiver.h | 0 .../modules/rtp_rtcp/include/flexfec_sender.h | 0 .../rtp_rtcp/include/receive_statistics.h | 0 .../include/remote_ntp_time_estimator.h | 0 .../rtp_rtcp/include/report_block_data.h | 0 .../rtp_rtcp/include/rtcp_statistics.h | 0 .../modules/rtp_rtcp/include/rtp_cvo.h | 0 .../include/rtp_header_extension_map.h | 0 .../rtp_rtcp/include/rtp_packet_sender.h | 0 .../modules/rtp_rtcp/include/rtp_rtcp.h | 0 .../rtp_rtcp/include/rtp_rtcp_defines.h | 0 .../rtp_rtcp/include/ulpfec_receiver.h | 0 .../mocks/mock_recovered_packet_receiver.h | 0 .../mocks/mock_rtcp_bandwidth_observer.h | 0 .../rtp_rtcp/mocks/mock_rtcp_rtt_stats.h | 0 .../modules/rtp_rtcp/mocks/mock_rtp_rtcp.h | 0 .../source/absolute_capture_time_receiver.h | 0 .../source/absolute_capture_time_sender.h | 0 .../webrtc}/modules/rtp_rtcp/source/byte_io.h | 0 .../source/create_video_rtp_depacketizer.h | 0 .../modules/rtp_rtcp/source/dtmf_queue.h | 0 .../source/fec_private_tables_bursty.h | 0 .../source/fec_private_tables_random.h | 0 .../modules/rtp_rtcp/source/fec_test_helper.h | 0 .../source/flexfec_header_reader_writer.h | 0 .../source/forward_error_correction.h | 0 .../forward_error_correction_internal.h | 0 .../rtp_rtcp/source/packet_loss_stats.h | 0 .../rtp_rtcp/source/receive_statistics_impl.h | 0 .../modules/rtp_rtcp/source/rtcp_nack_stats.h | 0 .../modules/rtp_rtcp/source/rtcp_packet.h | 0 .../modules/rtp_rtcp/source/rtcp_packet/app.h | 0 .../modules/rtp_rtcp/source/rtcp_packet/bye.h | 0 .../source/rtcp_packet/common_header.h | 0 .../source/rtcp_packet/compound_packet.h | 0 .../rtp_rtcp/source/rtcp_packet/dlrr.h | 0 .../rtcp_packet/extended_jitter_report.h | 0 .../source/rtcp_packet/extended_reports.h | 0 .../modules/rtp_rtcp/source/rtcp_packet/fir.h | 0 .../source/rtcp_packet/loss_notification.h | 0 .../rtp_rtcp/source/rtcp_packet/nack.h | 0 .../modules/rtp_rtcp/source/rtcp_packet/pli.h | 0 .../rtp_rtcp/source/rtcp_packet/psfb.h | 0 .../source/rtcp_packet/rapid_resync_request.h | 0 .../source/rtcp_packet/receiver_report.h | 0 .../rtp_rtcp/source/rtcp_packet/remb.h | 0 .../source/rtcp_packet/remote_estimate.h | 0 .../source/rtcp_packet/report_block.h | 0 .../rtp_rtcp/source/rtcp_packet/rrtr.h | 0 .../rtp_rtcp/source/rtcp_packet/rtpfb.h | 0 .../rtp_rtcp/source/rtcp_packet/sdes.h | 0 .../source/rtcp_packet/sender_report.h | 0 .../source/rtcp_packet/target_bitrate.h | 0 .../rtp_rtcp/source/rtcp_packet/tmmb_item.h | 0 .../rtp_rtcp/source/rtcp_packet/tmmbn.h | 0 .../rtp_rtcp/source/rtcp_packet/tmmbr.h | 0 .../source/rtcp_packet/transport_feedback.h | 0 .../modules/rtp_rtcp/source/rtcp_receiver.h | 0 .../modules/rtp_rtcp/source/rtcp_sender.h | 0 .../rtp_rtcp/source/rtcp_transceiver.h | 0 .../rtp_rtcp/source/rtcp_transceiver_config.h | 0 .../rtp_rtcp/source/rtcp_transceiver_impl.h | 0 .../rtp_dependency_descriptor_extension.h | 0 .../source/rtp_dependency_descriptor_reader.h | 0 .../source/rtp_dependency_descriptor_writer.h | 0 .../source/rtp_descriptor_authentication.h | 0 .../modules/rtp_rtcp/source/rtp_format.h | 0 .../modules/rtp_rtcp/source/rtp_format_h264.h | 0 .../source/rtp_format_video_generic.h | 0 .../modules/rtp_rtcp/source/rtp_format_vp8.h | 0 .../source/rtp_format_vp8_test_helper.h | 0 .../modules/rtp_rtcp/source/rtp_format_vp9.h | 0 .../source/rtp_generic_frame_descriptor.h | 0 .../rtp_generic_frame_descriptor_extension.h | 0 .../source/rtp_header_extension_size.h | 0 .../rtp_rtcp/source/rtp_header_extensions.h | 0 .../modules/rtp_rtcp/source/rtp_packet.h | 0 .../rtp_rtcp/source/rtp_packet_history.h | 0 .../rtp_rtcp/source/rtp_packet_received.h | 0 .../rtp_rtcp/source/rtp_packet_to_send.h | 0 .../rtp_rtcp/source/rtp_packetizer_av1.h | 0 .../modules/rtp_rtcp/source/rtp_rtcp_config.h | 0 .../modules/rtp_rtcp/source/rtp_rtcp_impl.h | 0 .../modules/rtp_rtcp/source/rtp_sender.h | 0 .../rtp_rtcp/source/rtp_sender_audio.h | 0 .../rtp_rtcp/source/rtp_sender_egress.h | 0 .../rtp_rtcp/source/rtp_sender_video.h | 0 ..._sender_video_frame_transformer_delegate.h | 0 .../rtp_rtcp/source/rtp_sequence_number_map.h | 0 .../modules/rtp_rtcp/source/rtp_utility.h | 0 .../rtp_rtcp/source/rtp_video_header.h | 0 .../modules/rtp_rtcp/source/source_tracker.h | 0 .../modules/rtp_rtcp/source/time_util.h | 0 .../modules/rtp_rtcp/source/tmmbr_help.h | 0 .../rtp_rtcp/source/ulpfec_generator.h | 0 .../source/ulpfec_header_reader_writer.h | 0 .../rtp_rtcp/source/ulpfec_receiver_impl.h | 0 .../rtp_rtcp/source/video_fec_generator.h | 0 .../rtp_rtcp/source/video_rtp_depacketizer.h | 0 .../source/video_rtp_depacketizer_av1.h | 0 .../source/video_rtp_depacketizer_generic.h | 0 .../source/video_rtp_depacketizer_h264.h | 0 .../source/video_rtp_depacketizer_raw.h | 0 .../source/video_rtp_depacketizer_vp8.h | 0 .../source/video_rtp_depacketizer_vp9.h | 0 .../testFec/average_residual_loss_xor_codes.h | 0 .../webrtc}/modules/third_party/fft/fft.h | 0 .../webrtc}/modules/third_party/g711/g711.h | 0 .../modules/third_party/g722/g722_enc_dec.h | 0 .../third_party/portaudio/pa_memorybarrier.h | 0 .../third_party/portaudio/pa_ringbuffer.h | 0 .../modules/utility/include/helpers_android.h | 0 .../modules/utility/include/jvm_android.h | 0 .../include/mock/mock_process_thread.h | 0 .../modules/utility/include/process_thread.h | 0 .../utility/source/process_thread_impl.h | 0 .../modules/video_capture/device_info_impl.h | 0 .../video_capture/linux/device_info_linux.h | 0 .../video_capture/linux/video_capture_linux.h | 0 .../modules/video_capture/video_capture.h | 0 .../video_capture/video_capture_config.h | 0 .../video_capture/video_capture_defines.h | 0 .../video_capture/video_capture_factory.h | 0 .../video_capture/video_capture_impl.h | 0 .../video_capture/windows/device_info_ds.h | 0 .../video_capture/windows/help_functions_ds.h | 0 .../video_capture/windows/sink_filter_ds.h | 0 .../video_capture/windows/video_capture_ds.h | 0 .../modules/video_coding/codec_timer.h | 0 .../codecs/av1/libaom_av1_decoder.h | 0 .../codecs/av1/libaom_av1_encoder.h | 0 .../codecs/h264/h264_color_space.h | 0 .../codecs/h264/h264_decoder_impl.h | 0 .../codecs/h264/h264_encoder_impl.h | 0 .../video_coding/codecs/h264/include/h264.h | 0 .../codecs/h264/include/h264_globals.h | 0 .../codecs/interface/common_constants.h | 0 .../include/augmented_video_frame_buffer.h | 0 .../include/multiplex_decoder_adapter.h | 0 .../include/multiplex_encoder_adapter.h | 0 .../multiplex_encoded_image_packer.h | 0 .../test/android_codec_factory_helper.h | 0 .../codecs/test/objc_codec_factory_helper.h | 0 .../codecs/test/video_codec_unittest.h | 0 .../test/videocodec_test_fixture_impl.h | 0 .../codecs/test/videocodec_test_stats_impl.h | 0 .../video_coding/codecs/test/videoprocessor.h | 0 .../codecs/vp8/default_temporal_layers.h | 0 .../vp8/include/temporal_layers_checker.h | 0 .../video_coding/codecs/vp8/include/vp8.h | 0 .../codecs/vp8/include/vp8_globals.h | 0 .../codecs/vp8/libvpx_interface.h | 0 .../codecs/vp8/libvpx_vp8_decoder.h | 0 .../codecs/vp8/libvpx_vp8_encoder.h | 0 .../codecs/vp8/screenshare_layers.h | 0 .../video_coding/codecs/vp8/temporal_layers.h | 0 .../codecs/vp8/test/mock_libvpx_interface.h | 0 .../video_coding/codecs/vp9/include/vp9.h | 0 .../codecs/vp9/include/vp9_globals.h | 0 .../video_coding/codecs/vp9/svc_config.h | 0 .../codecs/vp9/svc_rate_allocator.h | 0 .../codecs/vp9/vp9_frame_buffer_pool.h | 0 .../video_coding/codecs/vp9/vp9_impl.h | 0 .../modules/video_coding/decoder_database.h | 0 .../modules/video_coding/decoding_state.h | 0 .../modules/video_coding/encoded_frame.h | 0 .../modules/video_coding/event_wrapper.h | 0 .../video_coding/fec_controller_default.h | 0 .../modules/video_coding/fec_rate_table.h | 0 .../modules/video_coding/frame_buffer.h | 0 .../modules/video_coding/frame_buffer2.h | 0 .../frame_dependencies_calculator.h | 0 .../modules/video_coding/frame_object.h | 0 .../modules/video_coding/generic_decoder.h | 0 .../video_coding/h264_sprop_parameter_sets.h | 0 .../video_coding/h264_sps_pps_tracker.h | 0 .../webrtc}/modules/video_coding/histogram.h | 0 .../include/video_codec_initializer.h | 0 .../include/video_codec_interface.h | 0 .../video_coding/include/video_coding.h | 0 .../include/video_coding_defines.h | 0 .../video_coding/include/video_error_codes.h | 0 .../modules/video_coding/inter_frame_delay.h | 0 .../modules/video_coding/internal_defines.h | 0 .../modules/video_coding/jitter_buffer.h | 0 .../video_coding/jitter_buffer_common.h | 0 .../modules/video_coding/jitter_estimator.h | 0 .../loss_notification_controller.h | 0 .../modules/video_coding/media_opt_util.h | 0 .../modules/video_coding/nack_module.h | 0 .../webrtc}/modules/video_coding/packet.h | 0 .../modules/video_coding/packet_buffer.h | 0 .../webrtc}/modules/video_coding/receiver.h | 0 .../video_coding/rtp_frame_reference_finder.h | 0 .../webrtc}/modules/video_coding/rtt_filter.h | 0 .../modules/video_coding/session_info.h | 0 .../video_coding/test/stream_generator.h | 0 .../modules/video_coding/timestamp_map.h | 0 .../webrtc}/modules/video_coding/timing.h | 0 .../video_coding/unique_timestamp_counter.h | 0 .../utility/decoded_frames_history.h | 0 .../video_coding/utility/frame_dropper.h | 0 .../utility/framerate_controller.h | 0 .../video_coding/utility/ivf_file_reader.h | 0 .../video_coding/utility/ivf_file_writer.h | 0 .../video_coding/utility/quality_scaler.h | 0 .../utility/simulcast_rate_allocator.h | 0 .../utility/simulcast_test_fixture_impl.h | 0 .../video_coding/utility/simulcast_utility.h | 0 .../video_coding/utility/vp8_header_parser.h | 0 .../utility/vp9_uncompressed_header_parser.h | 0 .../modules/video_coding/video_coding_impl.h | 0 .../modules/video_coding/video_receiver2.h | 0 .../video_processing/util/denoiser_filter.h | 0 .../video_processing/util/denoiser_filter_c.h | 0 .../util/denoiser_filter_neon.h | 0 .../util/denoiser_filter_sse2.h | 0 .../video_processing/util/noise_estimation.h | 0 .../video_processing/util/skin_detection.h | 0 .../modules/video_processing/video_denoiser.h | 0 .../webrtc}/p2p/base/async_stun_tcp_socket.h | 0 .../p2p/base/basic_async_resolver_factory.h | 0 .../webrtc}/p2p/base/basic_ice_controller.h | 0 .../p2p/base/basic_packet_socket_factory.h | 0 .../p2p/base/candidate_pair_interface.h | 0 .../webrtc}/p2p/base/connection.h | 0 .../webrtc}/p2p/base/connection_info.h | 0 .../p2p/base/default_ice_transport_factory.h | 0 .../webrtc}/p2p/base/dtls_transport.h | 0 .../webrtc}/p2p/base/dtls_transport_factory.h | 0 .../p2p/base/dtls_transport_internal.h | 0 .../webrtc}/p2p/base/fake_dtls_transport.h | 0 .../webrtc}/p2p/base/fake_ice_transport.h | 0 .../webrtc}/p2p/base/fake_packet_transport.h | 0 .../webrtc}/p2p/base/fake_port_allocator.h | 0 .../base/ice_controller_factory_interface.h | 0 .../p2p/base/ice_controller_interface.h | 0 .../p2p/base/ice_credentials_iterator.h | 0 .../webrtc}/p2p/base/ice_transport_internal.h | 0 .../webrtc}/p2p/base/mdns_message.h | 0 .../webrtc}/p2p/base/mock_async_resolver.h | 0 .../webrtc}/p2p/base/mock_ice_transport.h | 0 .../webrtc}/p2p/base/p2p_constants.h | 0 .../webrtc}/p2p/base/p2p_transport_channel.h | 0 .../p2p_transport_channel_ice_field_trials.h | 0 .../p2p/base/packet_transport_internal.h | 0 {webrtc => include/webrtc}/p2p/base/port.h | 0 .../webrtc}/p2p/base/port_allocator.h | 0 .../webrtc}/p2p/base/port_interface.h | 0 .../webrtc}/p2p/base/pseudo_tcp.h | 0 .../webrtc}/p2p/base/regathering_controller.h | 0 .../webrtc}/p2p/base/stun_port.h | 0 .../webrtc}/p2p/base/stun_request.h | 0 .../webrtc}/p2p/base/stun_server.h | 0 .../webrtc}/p2p/base/tcp_port.h | 0 .../webrtc}/p2p/base/test_stun_server.h | 0 .../webrtc}/p2p/base/test_turn_customizer.h | 0 .../webrtc}/p2p/base/test_turn_server.h | 0 .../webrtc}/p2p/base/transport_description.h | 0 .../p2p/base/transport_description_factory.h | 0 .../webrtc}/p2p/base/transport_info.h | 0 .../webrtc}/p2p/base/turn_port.h | 0 .../webrtc}/p2p/base/turn_server.h | 0 .../webrtc}/p2p/base/udp_port.h | 0 .../webrtc}/p2p/client/basic_port_allocator.h | 0 .../p2p/client/relay_port_factory_interface.h | 0 .../webrtc}/p2p/client/turn_port_factory.h | 0 .../webrtc}/p2p/stunprober/stun_prober.h | 0 .../webrtc}/pc/audio_rtp_receiver.h | 0 {webrtc => include/webrtc}/pc/audio_track.h | 0 {webrtc => include/webrtc}/pc/channel.h | 0 .../webrtc}/pc/channel_interface.h | 0 .../webrtc}/pc/channel_manager.h | 0 .../pc/composite_data_channel_transport.h | 0 .../webrtc}/pc/composite_rtp_transport.h | 0 {webrtc => include/webrtc}/pc/data_channel.h | 0 .../webrtc}/pc/data_channel_controller.h | 0 .../webrtc}/pc/datagram_rtp_transport.h | 0 .../webrtc}/pc/dtls_srtp_transport.h | 0 .../webrtc}/pc/dtls_transport.h | 0 {webrtc => include/webrtc}/pc/dtmf_sender.h | 0 {webrtc => include/webrtc}/pc/external_hmac.h | 0 .../webrtc}/pc/ice_server_parsing.h | 0 {webrtc => include/webrtc}/pc/ice_transport.h | 0 .../webrtc}/pc/jitter_buffer_delay.h | 0 .../pc/jitter_buffer_delay_interface.h | 0 .../webrtc}/pc/jitter_buffer_delay_proxy.h | 0 .../webrtc}/pc/jsep_transport.h | 0 .../webrtc}/pc/jsep_transport_controller.h | 0 .../webrtc}/pc/local_audio_source.h | 0 .../webrtc}/pc/media_protocol_names.h | 0 {webrtc => include/webrtc}/pc/media_session.h | 0 {webrtc => include/webrtc}/pc/media_stream.h | 0 .../webrtc}/pc/media_stream_observer.h | 0 .../webrtc}/pc/media_stream_track.h | 0 .../webrtc}/pc/peer_connection.h | 0 .../webrtc}/pc/peer_connection_factory.h | 0 .../webrtc}/pc/peer_connection_internal.h | 0 .../webrtc}/pc/peer_connection_wrapper.h | 0 .../webrtc}/pc/remote_audio_source.h | 0 .../webrtc}/pc/rtc_stats_collector.h | 0 .../webrtc}/pc/rtc_stats_traversal.h | 0 .../webrtc}/pc/rtcp_mux_filter.h | 0 .../webrtc}/pc/rtp_media_utils.h | 0 .../webrtc}/pc/rtp_parameters_conversion.h | 0 {webrtc => include/webrtc}/pc/rtp_receiver.h | 0 {webrtc => include/webrtc}/pc/rtp_sender.h | 0 .../webrtc}/pc/rtp_transceiver.h | 0 {webrtc => include/webrtc}/pc/rtp_transport.h | 0 .../webrtc}/pc/rtp_transport_internal.h | 0 .../webrtc}/pc/sctp_data_channel_transport.h | 0 .../webrtc}/pc/sctp_transport.h | 0 {webrtc => include/webrtc}/pc/sctp_utils.h | 0 .../webrtc}/pc/sdp_serializer.h | 0 {webrtc => include/webrtc}/pc/sdp_utils.h | 0 .../webrtc}/pc/session_description.h | 0 .../webrtc}/pc/simulcast_description.h | 0 {webrtc => include/webrtc}/pc/srtp_filter.h | 0 {webrtc => include/webrtc}/pc/srtp_session.h | 0 .../webrtc}/pc/srtp_transport.h | 0 .../webrtc}/pc/stats_collector.h | 0 .../webrtc}/pc/stream_collection.h | 0 .../pc/test/android_test_initializer.h | 0 .../pc/test/fake_audio_capture_module.h | 0 .../pc/test/fake_data_channel_provider.h | 0 .../pc/test/fake_peer_connection_base.h | 0 .../pc/test/fake_peer_connection_for_stats.h | 0 .../pc/test/fake_periodic_video_source.h | 0 .../test/fake_periodic_video_track_source.h | 0 .../pc/test/fake_rtc_certificate_generator.h | 0 .../webrtc}/pc/test/fake_sctp_transport.h | 0 .../pc/test/fake_video_track_renderer.h | 0 .../webrtc}/pc/test/fake_video_track_source.h | 0 ...me_generator_capturer_video_track_source.h | 0 .../webrtc}/pc/test/mock_channel_interface.h | 0 .../webrtc}/pc/test/mock_data_channel.h | 0 .../webrtc}/pc/test/mock_delayable.h | 0 .../pc/test/mock_peer_connection_observers.h | 0 .../pc/test/mock_rtp_receiver_internal.h | 0 .../pc/test/mock_rtp_sender_internal.h | 0 .../pc/test/peer_connection_test_wrapper.h | 0 .../webrtc}/pc/test/rtc_stats_obtainer.h | 0 .../webrtc}/pc/test/rtp_transport_test_util.h | 0 .../webrtc}/pc/test/srtp_test_util.h | 0 .../webrtc}/pc/test/test_sdp_strings.h | 0 .../webrtc}/pc/track_media_info_map.h | 0 .../webrtc}/pc/transport_stats.h | 0 {webrtc => include/webrtc}/pc/used_ids.h | 0 .../webrtc}/pc/video_rtp_receiver.h | 0 .../webrtc}/pc/video_rtp_track_source.h | 0 {webrtc => include/webrtc}/pc/video_track.h | 0 .../webrtc}/pc/video_track_source.h | 0 {webrtc => include/webrtc}/pc/webrtc_sdp.h | 0 .../pc/webrtc_session_description_factory.h | 0 .../webrtc}/rtc_base/arraysize.h | 0 .../webrtc}/rtc_base/async_invoker.h | 0 .../webrtc}/rtc_base/async_invoker_inl.h | 0 .../webrtc}/rtc_base/async_packet_socket.h | 0 .../rtc_base/async_resolver_interface.h | 0 .../webrtc}/rtc_base/async_socket.h | 0 .../webrtc}/rtc_base/async_tcp_socket.h | 0 .../webrtc}/rtc_base/async_udp_socket.h | 0 .../webrtc}/rtc_base/atomic_ops.h | 0 {webrtc => include/webrtc}/rtc_base/bind.h | 0 .../webrtc}/rtc_base/bit_buffer.h | 0 .../webrtc}/rtc_base/bounded_inline_vector.h | 0 .../rtc_base/bounded_inline_vector_impl.h | 0 {webrtc => include/webrtc}/rtc_base/buffer.h | 0 .../webrtc}/rtc_base/buffer_queue.h | 0 .../webrtc}/rtc_base/byte_buffer.h | 0 .../webrtc}/rtc_base/byte_order.h | 0 .../webrtc}/rtc_base/callback.h | 0 {webrtc => include/webrtc}/rtc_base/checks.h | 0 .../webrtc}/rtc_base/compile_assert_c.h | 0 .../webrtc}/rtc_base/constructor_magic.h | 0 .../webrtc}/rtc_base/copy_on_write_buffer.h | 0 .../webrtc}/rtc_base/cpu_time.h | 0 {webrtc => include/webrtc}/rtc_base/crc32.h | 0 .../webrtc}/rtc_base/critical_section.h | 0 .../webrtc}/rtc_base/crypt_string.h | 0 .../webrtc}/rtc_base/data_rate_limiter.h | 0 .../webrtc}/rtc_base/deprecation.h | 0 {webrtc => include/webrtc}/rtc_base/dscp.h | 0 {webrtc => include/webrtc}/rtc_base/event.h | 0 .../webrtc}/rtc_base/event_tracer.h | 0 .../rtc_base/experiments/alr_experiment.h | 0 .../balanced_degradation_settings.h | 0 .../experiments/cpu_speed_experiment.h | 0 .../rtc_base/experiments/field_trial_list.h | 0 .../rtc_base/experiments/field_trial_parser.h | 0 .../rtc_base/experiments/field_trial_units.h | 0 .../jitter_upper_bound_experiment.h | 0 .../experiments/keyframe_interval_settings.h | 0 .../min_video_bitrate_experiment.h | 0 .../normalize_simulcast_size_experiment.h | 0 .../experiments/quality_rampup_experiment.h | 0 .../experiments/quality_scaler_settings.h | 0 .../experiments/quality_scaling_experiment.h | 0 .../experiments/rate_control_settings.h | 0 .../experiments/rtt_mult_experiment.h | 0 .../stable_target_rate_experiment.h | 0 .../experiments/struct_parameters_parser.h | 0 .../webrtc}/rtc_base/fake_clock.h | 0 .../webrtc}/rtc_base/fake_mdns_responder.h | 0 .../webrtc}/rtc_base/fake_network.h | 0 .../webrtc}/rtc_base/fake_ssl_identity.h | 0 .../webrtc}/rtc_base/file_rotating_stream.h | 0 .../webrtc}/rtc_base/firewall_socket_server.h | 0 .../webrtc}/rtc_base/format_macros.h | 0 .../webrtc}/rtc_base/gtest_prod_util.h | 0 {webrtc => include/webrtc}/rtc_base/gunit.h | 0 {webrtc => include/webrtc}/rtc_base/helpers.h | 0 .../webrtc}/rtc_base/http_common.h | 0 .../webrtc}/rtc_base/ifaddrs_android.h | 0 .../webrtc}/rtc_base/ifaddrs_converter.h | 0 .../webrtc}/rtc_base/ignore_wundef.h | 0 .../webrtc}/rtc_base/ip_address.h | 0 .../webrtc}/rtc_base/keep_ref_until_done.h | 0 .../webrtc}/rtc_base/location.h | 0 .../webrtc}/rtc_base/log_sinks.h | 0 {webrtc => include/webrtc}/rtc_base/logging.h | 0 .../rtc_base/mdns_responder_interface.h | 0 .../webrtc}/rtc_base/memory/aligned_malloc.h | 0 .../webrtc}/rtc_base/memory/fifo_buffer.h | 0 .../webrtc}/rtc_base/memory_stream.h | 0 .../webrtc}/rtc_base/memory_usage.h | 0 .../webrtc}/rtc_base/message_buffer_reader.h | 0 .../webrtc}/rtc_base/message_digest.h | 0 .../webrtc}/rtc_base/message_handler.h | 0 .../webrtc}/rtc_base/nat_server.h | 0 .../webrtc}/rtc_base/nat_socket_factory.h | 0 .../webrtc}/rtc_base/nat_types.h | 0 .../webrtc}/rtc_base/net_helper.h | 0 .../webrtc}/rtc_base/net_helpers.h | 0 {webrtc => include/webrtc}/rtc_base/network.h | 0 .../webrtc}/rtc_base/network/sent_packet.h | 0 .../webrtc}/rtc_base/network_constants.h | 0 .../webrtc}/rtc_base/network_monitor.h | 0 .../webrtc}/rtc_base/network_route.h | 0 .../webrtc}/rtc_base/null_socket_server.h | 0 .../webrtc}/rtc_base/numerics/divide_round.h | 0 .../event_based_exponential_moving_average.h | 0 .../rtc_base/numerics/event_rate_counter.h | 0 .../webrtc}/rtc_base/numerics/exp_filter.h | 0 .../numerics/histogram_percentile_counter.h | 0 .../webrtc}/rtc_base/numerics/math_utils.h | 0 .../webrtc}/rtc_base/numerics/mod_ops.h | 0 .../rtc_base/numerics/moving_average.h | 0 .../rtc_base/numerics/moving_max_counter.h | 0 .../rtc_base/numerics/moving_median_filter.h | 0 .../rtc_base/numerics/percentile_filter.h | 0 .../rtc_base/numerics/running_statistics.h | 0 .../webrtc}/rtc_base/numerics/safe_compare.h | 0 .../rtc_base/numerics/safe_conversions.h | 0 .../rtc_base/numerics/safe_conversions_impl.h | 0 .../webrtc}/rtc_base/numerics/safe_minmax.h | 0 .../rtc_base/numerics/sample_counter.h | 0 .../webrtc}/rtc_base/numerics/sample_stats.h | 0 .../rtc_base/numerics/samples_stats_counter.h | 0 .../rtc_base/numerics/sequence_number_util.h | 0 .../webrtc}/rtc_base/one_time_event.h | 0 {webrtc => include/webrtc}/rtc_base/openssl.h | 0 .../webrtc}/rtc_base/openssl_adapter.h | 0 .../webrtc}/rtc_base/openssl_certificate.h | 0 .../webrtc}/rtc_base/openssl_digest.h | 0 .../webrtc}/rtc_base/openssl_identity.h | 0 .../webrtc}/rtc_base/openssl_session_cache.h | 0 .../webrtc}/rtc_base/openssl_stream_adapter.h | 0 .../webrtc}/rtc_base/openssl_utility.h | 0 .../webrtc}/rtc_base/operations_chain.h | 0 .../webrtc}/rtc_base/physical_socket_server.h | 0 .../webrtc}/rtc_base/platform_thread.h | 0 .../webrtc}/rtc_base/platform_thread_types.h | 0 .../webrtc}/rtc_base/protobuf_utils.h | 0 .../webrtc}/rtc_base/proxy_info.h | 0 .../webrtc}/rtc_base/proxy_server.h | 0 .../webrtc}/rtc_base/race_checker.h | 0 {webrtc => include/webrtc}/rtc_base/random.h | 0 .../webrtc}/rtc_base/rate_limiter.h | 0 .../webrtc}/rtc_base/rate_statistics.h | 0 .../webrtc}/rtc_base/rate_tracker.h | 0 .../webrtc}/rtc_base/ref_count.h | 0 .../webrtc}/rtc_base/ref_counted_object.h | 0 .../webrtc}/rtc_base/ref_counter.h | 0 .../webrtc}/rtc_base/rolling_accumulator.h | 0 .../webrtc}/rtc_base/rtc_certificate.h | 0 .../rtc_base/rtc_certificate_generator.h | 0 .../webrtc}/rtc_base/sanitizer.h | 0 .../webrtc}/rtc_base/server_socket_adapters.h | 0 .../webrtc}/rtc_base/signal_thread.h | 0 .../webrtc}/rtc_base/sigslot_repeater.h | 0 .../webrtc}/rtc_base/sigslot_tester.h | 0 {webrtc => include/webrtc}/rtc_base/socket.h | 0 .../webrtc}/rtc_base/socket_adapters.h | 0 .../webrtc}/rtc_base/socket_address.h | 0 .../webrtc}/rtc_base/socket_address_pair.h | 0 .../webrtc}/rtc_base/socket_factory.h | 0 .../webrtc}/rtc_base/socket_server.h | 0 .../webrtc}/rtc_base/socket_stream.h | 0 .../webrtc}/rtc_base/socket_unittest.h | 0 .../webrtc}/rtc_base/ssl_adapter.h | 0 .../webrtc}/rtc_base/ssl_certificate.h | 0 .../webrtc}/rtc_base/ssl_fingerprint.h | 0 .../webrtc}/rtc_base/ssl_identity.h | 0 .../webrtc}/rtc_base/ssl_roots.h | 0 .../webrtc}/rtc_base/ssl_stream_adapter.h | 0 {webrtc => include/webrtc}/rtc_base/stream.h | 0 .../webrtc}/rtc_base/string_encode.h | 0 .../webrtc}/rtc_base/string_to_number.h | 0 .../webrtc}/rtc_base/string_utils.h | 0 .../webrtc}/rtc_base/stringize_macros.h | 0 .../rtc_base/strings/audio_format_to_string.h | 0 .../webrtc}/rtc_base/strings/json.h | 0 .../webrtc}/rtc_base/strings/string_builder.h | 0 .../webrtc}/rtc_base/strings/string_format.h | 0 .../webrtc}/rtc_base/swap_queue.h | 0 .../rtc_base/synchronization/rw_lock_posix.h | 0 .../rtc_base/synchronization/rw_lock_win.h | 0 .../synchronization/rw_lock_wrapper.h | 0 .../synchronization/sequence_checker.h | 0 .../rtc_base/synchronization/yield_policy.h | 0 .../webrtc}/rtc_base/system/arch.h | 0 .../webrtc}/rtc_base/system/asm_defines.h | 0 .../webrtc}/rtc_base/system/cocoa_threading.h | 0 .../webrtc}/rtc_base/system/file_wrapper.h | 0 .../webrtc}/rtc_base/system/gcd_helpers.h | 0 .../webrtc}/rtc_base/system/ignore_warnings.h | 0 .../webrtc}/rtc_base/system/inline.h | 0 .../webrtc}/rtc_base/system/rtc_export.h | 0 .../rtc_base/system/rtc_export_template.h | 0 .../webrtc}/rtc_base/system/thread_registry.h | 0 .../webrtc}/rtc_base/system/unused.h | 0 .../warn_current_thread_is_deadlocked.h | 0 .../webrtc}/rtc_base/task_queue.h | 0 .../webrtc}/rtc_base/task_queue_for_test.h | 0 .../webrtc}/rtc_base/task_queue_gcd.h | 0 .../webrtc}/rtc_base/task_queue_libevent.h | 0 .../webrtc}/rtc_base/task_queue_stdlib.h | 0 .../webrtc}/rtc_base/task_queue_win.h | 0 .../task_utils/pending_task_safety_flag.h | 0 .../rtc_base/task_utils/repeating_task.h | 0 .../rtc_base/task_utils/to_queued_task.h | 0 .../webrtc}/rtc_base/test_base64.h | 0 .../rtc_base/test_certificate_verifier.h | 0 .../webrtc}/rtc_base/test_client.h | 0 .../webrtc}/rtc_base/test_echo_server.h | 0 .../webrtc}/rtc_base/test_utils.h | 0 .../rtc_base/third_party/base64/base64.h | 0 .../rtc_base/third_party/sigslot/sigslot.h | 0 {webrtc => include/webrtc}/rtc_base/thread.h | 0 .../webrtc}/rtc_base/thread_annotations.h | 0 .../webrtc}/rtc_base/thread_checker.h | 0 .../webrtc}/rtc_base/thread_message.h | 0 .../rtc_base/time/timestamp_extrapolator.h | 0 .../webrtc}/rtc_base/time_utils.h | 0 .../webrtc}/rtc_base/timestamp_aligner.h | 0 .../webrtc}/rtc_base/trace_event.h | 0 .../webrtc}/rtc_base/type_traits.h | 0 .../webrtc}/rtc_base/unique_id_generator.h | 0 .../webrtc}/rtc_base/units/unit_base.h | 0 .../webrtc}/rtc_base/virtual_socket_server.h | 0 .../webrtc}/rtc_base/weak_ptr.h | 0 .../webrtc}/rtc_base/win/windows_version.h | 0 {webrtc => include/webrtc}/rtc_base/win32.h | 0 .../webrtc}/rtc_base/win32_socket_init.h | 0 .../webrtc}/rtc_base/win32_socket_server.h | 0 .../webrtc}/rtc_base/win32_window.h | 0 .../webrtc}/rtc_base/zero_memory.h | 0 .../webrtc}/system_wrappers/include/clock.h | 0 .../include/cpu_features_wrapper.h | 0 .../system_wrappers/include/cpu_info.h | 0 .../system_wrappers/include/field_trial.h | 0 .../webrtc}/system_wrappers/include/metrics.h | 0 .../system_wrappers/include/ntp_time.h | 0 .../include/rtp_to_ntp_estimator.h | 0 .../webrtc}/system_wrappers/include/sleep.h | 0 webrtc/absl/BUILD.bazel | 60 - webrtc/absl/CMakeLists.txt | 37 - webrtc/absl/abseil.podspec.gen.py | 229 - webrtc/absl/algorithm/BUILD.bazel | 91 - webrtc/absl/algorithm/BUILD.gn | 43 - webrtc/absl/algorithm/CMakeLists.txt | 69 - webrtc/absl/base/BUILD.bazel | 779 -- webrtc/absl/base/BUILD.gn | 307 - webrtc/absl/base/CMakeLists.txt | 700 -- webrtc/absl/base/internal/spinlock_akaros.inc | 35 - webrtc/absl/base/internal/spinlock_linux.inc | 66 - webrtc/absl/base/internal/spinlock_posix.inc | 46 - webrtc/absl/base/internal/spinlock_win32.inc | 37 - webrtc/absl/compiler_config_setting.bzl | 38 - webrtc/absl/container/BUILD.bazel | 916 --- webrtc/absl/container/BUILD.gn | 372 - webrtc/absl/container/CMakeLists.txt | 900 --- webrtc/absl/copts/AbseilConfigureCopts.cmake | 67 - webrtc/absl/copts/GENERATED_AbseilCopts.cmake | 213 - webrtc/absl/copts/GENERATED_copts.bzl | 214 - webrtc/absl/copts/configure_copts.bzl | 78 - webrtc/absl/copts/copts.py | 200 - webrtc/absl/copts/generate_copts.py | 109 - webrtc/absl/debugging/BUILD.bazel | 341 - webrtc/absl/debugging/BUILD.gn | 164 - webrtc/absl/debugging/CMakeLists.txt | 333 - .../internal/stacktrace_aarch64-inl.inc | 196 - .../debugging/internal/stacktrace_arm-inl.inc | 134 - .../internal/stacktrace_generic-inl.inc | 108 - .../internal/stacktrace_powerpc-inl.inc | 248 - .../internal/stacktrace_unimplemented-inl.inc | 24 - .../internal/stacktrace_win32-inl.inc | 93 - .../debugging/internal/stacktrace_x86-inl.inc | 346 - webrtc/absl/debugging/symbolize_elf.inc | 1482 ---- .../debugging/symbolize_unimplemented.inc | 40 - webrtc/absl/debugging/symbolize_win32.inc | 81 - webrtc/absl/flags/BUILD.bazel | 491 -- webrtc/absl/flags/BUILD.gn | 218 - webrtc/absl/flags/CMakeLists.txt | 435 -- webrtc/absl/functional/BUILD.bazel | 93 - webrtc/absl/functional/BUILD.gn | 25 - webrtc/absl/functional/CMakeLists.txt | 72 - webrtc/absl/hash/BUILD.bazel | 122 - webrtc/absl/hash/BUILD.gn | 74 - webrtc/absl/hash/CMakeLists.txt | 116 - webrtc/absl/memory/BUILD.bazel | 65 - webrtc/absl/memory/BUILD.gn | 24 - webrtc/absl/memory/CMakeLists.txt | 55 - webrtc/absl/meta/BUILD.bazel | 48 - webrtc/absl/meta/BUILD.gn | 20 - webrtc/absl/meta/CMakeLists.txt | 50 - webrtc/absl/numeric/BUILD.bazel | 73 - webrtc/absl/numeric/BUILD.gn | 18 - webrtc/absl/numeric/CMakeLists.txt | 60 - webrtc/absl/numeric/int128_have_intrinsic.inc | 302 - webrtc/absl/numeric/int128_no_intrinsic.inc | 308 - webrtc/absl/random/BUILD.bazel | 498 -- webrtc/absl/random/BUILD.gn | 84 - webrtc/absl/random/CMakeLists.txt | 1205 --- webrtc/absl/random/internal/BUILD.bazel | 736 -- webrtc/absl/random/internal/BUILD.gn | 268 - webrtc/absl/random/internal/randen-keys.inc | 207 - webrtc/absl/status/BUILD.bazel | 66 - webrtc/absl/status/BUILD.gn | 29 - webrtc/absl/status/CMakeLists.txt | 53 - webrtc/absl/strings/BUILD.bazel | 772 -- webrtc/absl/strings/BUILD.gn | 217 - webrtc/absl/strings/CMakeLists.txt | 593 -- webrtc/absl/strings/testdata/getline-1.txt | 3 - webrtc/absl/strings/testdata/getline-2.txt | 1 - webrtc/absl/synchronization/BUILD.bazel | 285 - webrtc/absl/synchronization/BUILD.gn | 91 - webrtc/absl/synchronization/CMakeLists.txt | 214 - .../internal/mutex_nonprod.inc | 261 - webrtc/absl/time/BUILD.bazel | 124 - webrtc/absl/time/BUILD.gn | 49 - webrtc/absl/time/CMakeLists.txt | 127 - webrtc/absl/time/internal/cctz/BUILD.bazel | 166 - webrtc/absl/time/internal/cctz/BUILD.gn | 46 - .../internal/cctz/testdata/README.zoneinfo | 37 - .../absl/time/internal/cctz/testdata/version | 1 - .../cctz/testdata/zoneinfo/Africa/Abidjan | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Accra | Bin 816 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Addis_Ababa | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Algiers | Bin 735 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Asmara | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Asmera | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Bamako | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Bangui | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Banjul | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Bissau | Bin 194 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Blantyre | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Brazzaville | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Bujumbura | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Cairo | Bin 1955 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Casablanca | Bin 2429 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Ceuta | Bin 2036 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Conakry | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Dakar | Bin 148 -> 0 bytes .../testdata/zoneinfo/Africa/Dar_es_Salaam | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Djibouti | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Douala | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/El_Aaiun | Bin 2295 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Freetown | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Gaborone | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Harare | Bin 149 -> 0 bytes .../testdata/zoneinfo/Africa/Johannesburg | Bin 246 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Juba | Bin 653 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Kampala | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Khartoum | Bin 679 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Kigali | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Kinshasa | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Lagos | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Libreville | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Lome | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Luanda | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Lubumbashi | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Lusaka | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Malabo | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Maputo | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Maseru | Bin 246 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Mbabane | Bin 246 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Mogadishu | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Monrovia | Bin 208 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Nairobi | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Ndjamena | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Niamey | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Nouakchott | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Ouagadougou | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Porto-Novo | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Sao_Tome | Bin 254 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Timbuktu | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Tripoli | Bin 625 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Tunis | Bin 689 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Windhoek | Bin 955 -> 0 bytes .../cctz/testdata/zoneinfo/America/Adak | Bin 2356 -> 0 bytes .../cctz/testdata/zoneinfo/America/Anchorage | Bin 2371 -> 0 bytes .../cctz/testdata/zoneinfo/America/Anguilla | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Antigua | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Araguaina | Bin 884 -> 0 bytes .../zoneinfo/America/Argentina/Buenos_Aires | Bin 1076 -> 0 bytes .../zoneinfo/America/Argentina/Catamarca | Bin 1076 -> 0 bytes .../zoneinfo/America/Argentina/ComodRivadavia | Bin 1076 -> 0 bytes .../zoneinfo/America/Argentina/Cordoba | Bin 1076 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Jujuy | Bin 1048 -> 0 bytes .../zoneinfo/America/Argentina/La_Rioja | Bin 1090 -> 0 bytes .../zoneinfo/America/Argentina/Mendoza | Bin 1076 -> 0 bytes .../zoneinfo/America/Argentina/Rio_Gallegos | Bin 1076 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Salta | Bin 1048 -> 0 bytes .../zoneinfo/America/Argentina/San_Juan | Bin 1090 -> 0 bytes .../zoneinfo/America/Argentina/San_Luis | Bin 1102 -> 0 bytes .../zoneinfo/America/Argentina/Tucuman | Bin 1104 -> 0 bytes .../zoneinfo/America/Argentina/Ushuaia | Bin 1076 -> 0 bytes .../cctz/testdata/zoneinfo/America/Aruba | Bin 186 -> 0 bytes .../cctz/testdata/zoneinfo/America/Asuncion | Bin 2044 -> 0 bytes .../cctz/testdata/zoneinfo/America/Atikokan | Bin 336 -> 0 bytes .../cctz/testdata/zoneinfo/America/Atka | Bin 2356 -> 0 bytes .../cctz/testdata/zoneinfo/America/Bahia | Bin 1024 -> 0 bytes .../testdata/zoneinfo/America/Bahia_Banderas | Bin 1546 -> 0 bytes .../cctz/testdata/zoneinfo/America/Barbados | Bin 314 -> 0 bytes .../cctz/testdata/zoneinfo/America/Belem | Bin 576 -> 0 bytes .../cctz/testdata/zoneinfo/America/Belize | Bin 948 -> 0 bytes .../testdata/zoneinfo/America/Blanc-Sablon | Bin 298 -> 0 bytes .../cctz/testdata/zoneinfo/America/Boa_Vista | Bin 632 -> 0 bytes .../cctz/testdata/zoneinfo/America/Bogota | Bin 246 -> 0 bytes .../cctz/testdata/zoneinfo/America/Boise | Bin 2394 -> 0 bytes .../testdata/zoneinfo/America/Buenos_Aires | Bin 1076 -> 0 bytes .../testdata/zoneinfo/America/Cambridge_Bay | Bin 2084 -> 0 bytes .../testdata/zoneinfo/America/Campo_Grande | Bin 1444 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cancun | Bin 782 -> 0 bytes .../cctz/testdata/zoneinfo/America/Caracas | Bin 264 -> 0 bytes .../cctz/testdata/zoneinfo/America/Catamarca | Bin 1076 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cayenne | Bin 198 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cayman | Bin 182 -> 0 bytes .../cctz/testdata/zoneinfo/America/Chicago | Bin 3576 -> 0 bytes .../cctz/testdata/zoneinfo/America/Chihuahua | Bin 1484 -> 0 bytes .../testdata/zoneinfo/America/Coral_Harbour | Bin 336 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cordoba | Bin 1076 -> 0 bytes .../cctz/testdata/zoneinfo/America/Costa_Rica | Bin 316 -> 0 bytes .../cctz/testdata/zoneinfo/America/Creston | Bin 208 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cuiaba | Bin 1416 -> 0 bytes .../cctz/testdata/zoneinfo/America/Curacao | Bin 186 -> 0 bytes .../testdata/zoneinfo/America/Danmarkshavn | Bin 698 -> 0 bytes .../cctz/testdata/zoneinfo/America/Dawson | Bin 1600 -> 0 bytes .../testdata/zoneinfo/America/Dawson_Creek | Bin 1050 -> 0 bytes .../cctz/testdata/zoneinfo/America/Denver | Bin 2444 -> 0 bytes .../cctz/testdata/zoneinfo/America/Detroit | Bin 2230 -> 0 bytes .../cctz/testdata/zoneinfo/America/Dominica | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Edmonton | Bin 2332 -> 0 bytes .../cctz/testdata/zoneinfo/America/Eirunepe | Bin 656 -> 0 bytes .../testdata/zoneinfo/America/El_Salvador | Bin 224 -> 0 bytes .../cctz/testdata/zoneinfo/America/Ensenada | Bin 2342 -> 0 bytes .../testdata/zoneinfo/America/Fort_Nelson | Bin 2240 -> 0 bytes .../cctz/testdata/zoneinfo/America/Fort_Wayne | Bin 1666 -> 0 bytes .../cctz/testdata/zoneinfo/America/Fortaleza | Bin 716 -> 0 bytes .../cctz/testdata/zoneinfo/America/Glace_Bay | Bin 2192 -> 0 bytes .../cctz/testdata/zoneinfo/America/Godthab | Bin 1878 -> 0 bytes .../cctz/testdata/zoneinfo/America/Goose_Bay | Bin 3210 -> 0 bytes .../cctz/testdata/zoneinfo/America/Grand_Turk | Bin 1848 -> 0 bytes .../cctz/testdata/zoneinfo/America/Grenada | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guadeloupe | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guatemala | Bin 280 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guayaquil | Bin 246 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guyana | Bin 236 -> 0 bytes .../cctz/testdata/zoneinfo/America/Halifax | Bin 3424 -> 0 bytes .../cctz/testdata/zoneinfo/America/Havana | Bin 2416 -> 0 bytes .../cctz/testdata/zoneinfo/America/Hermosillo | Bin 416 -> 0 bytes .../zoneinfo/America/Indiana/Indianapolis | Bin 1666 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Knox | Bin 2428 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Marengo | Bin 1722 -> 0 bytes .../zoneinfo/America/Indiana/Petersburg | Bin 1904 -> 0 bytes .../zoneinfo/America/Indiana/Tell_City | Bin 1684 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Vevay | Bin 1414 -> 0 bytes .../zoneinfo/America/Indiana/Vincennes | Bin 1694 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Winamac | Bin 1778 -> 0 bytes .../testdata/zoneinfo/America/Indianapolis | Bin 1666 -> 0 bytes .../cctz/testdata/zoneinfo/America/Inuvik | Bin 1894 -> 0 bytes .../cctz/testdata/zoneinfo/America/Iqaluit | Bin 2032 -> 0 bytes .../cctz/testdata/zoneinfo/America/Jamaica | Bin 482 -> 0 bytes .../cctz/testdata/zoneinfo/America/Jujuy | Bin 1048 -> 0 bytes .../cctz/testdata/zoneinfo/America/Juneau | Bin 2353 -> 0 bytes .../zoneinfo/America/Kentucky/Louisville | Bin 2772 -> 0 bytes .../zoneinfo/America/Kentucky/Monticello | Bin 2352 -> 0 bytes .../cctz/testdata/zoneinfo/America/Knox_IN | Bin 2428 -> 0 bytes .../cctz/testdata/zoneinfo/America/Kralendijk | Bin 186 -> 0 bytes .../cctz/testdata/zoneinfo/America/La_Paz | Bin 232 -> 0 bytes .../cctz/testdata/zoneinfo/America/Lima | Bin 406 -> 0 bytes .../testdata/zoneinfo/America/Los_Angeles | Bin 2836 -> 0 bytes .../cctz/testdata/zoneinfo/America/Louisville | Bin 2772 -> 0 bytes .../testdata/zoneinfo/America/Lower_Princes | Bin 186 -> 0 bytes .../cctz/testdata/zoneinfo/America/Maceio | Bin 744 -> 0 bytes .../cctz/testdata/zoneinfo/America/Managua | Bin 430 -> 0 bytes .../cctz/testdata/zoneinfo/America/Manaus | Bin 604 -> 0 bytes .../cctz/testdata/zoneinfo/America/Marigot | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Martinique | Bin 232 -> 0 bytes .../cctz/testdata/zoneinfo/America/Matamoros | Bin 1390 -> 0 bytes .../cctz/testdata/zoneinfo/America/Mazatlan | Bin 1526 -> 0 bytes .../cctz/testdata/zoneinfo/America/Mendoza | Bin 1076 -> 0 bytes .../cctz/testdata/zoneinfo/America/Menominee | Bin 2274 -> 0 bytes .../cctz/testdata/zoneinfo/America/Merida | Bin 1422 -> 0 bytes .../cctz/testdata/zoneinfo/America/Metlakatla | Bin 1423 -> 0 bytes .../testdata/zoneinfo/America/Mexico_City | Bin 1584 -> 0 bytes .../cctz/testdata/zoneinfo/America/Miquelon | Bin 1666 -> 0 bytes .../cctz/testdata/zoneinfo/America/Moncton | Bin 3154 -> 0 bytes .../cctz/testdata/zoneinfo/America/Monterrey | Bin 1390 -> 0 bytes .../cctz/testdata/zoneinfo/America/Montevideo | Bin 1510 -> 0 bytes .../cctz/testdata/zoneinfo/America/Montreal | Bin 3494 -> 0 bytes .../cctz/testdata/zoneinfo/America/Montserrat | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Nassau | Bin 2258 -> 0 bytes .../cctz/testdata/zoneinfo/America/New_York | Bin 3536 -> 0 bytes .../cctz/testdata/zoneinfo/America/Nipigon | Bin 2122 -> 0 bytes .../cctz/testdata/zoneinfo/America/Nome | Bin 2367 -> 0 bytes .../cctz/testdata/zoneinfo/America/Noronha | Bin 716 -> 0 bytes .../zoneinfo/America/North_Dakota/Beulah | Bin 2380 -> 0 bytes .../zoneinfo/America/North_Dakota/Center | Bin 2380 -> 0 bytes .../zoneinfo/America/North_Dakota/New_Salem | Bin 2380 -> 0 bytes .../cctz/testdata/zoneinfo/America/Nuuk | Bin 1878 -> 0 bytes .../cctz/testdata/zoneinfo/America/Ojinaga | Bin 1484 -> 0 bytes .../cctz/testdata/zoneinfo/America/Panama | Bin 182 -> 0 bytes .../testdata/zoneinfo/America/Pangnirtung | Bin 2094 -> 0 bytes .../cctz/testdata/zoneinfo/America/Paramaribo | Bin 262 -> 0 bytes .../cctz/testdata/zoneinfo/America/Phoenix | Bin 328 -> 0 bytes .../testdata/zoneinfo/America/Port-au-Prince | Bin 1434 -> 0 bytes .../testdata/zoneinfo/America/Port_of_Spain | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Porto_Acre | Bin 628 -> 0 bytes .../testdata/zoneinfo/America/Porto_Velho | Bin 576 -> 0 bytes .../testdata/zoneinfo/America/Puerto_Rico | Bin 246 -> 0 bytes .../testdata/zoneinfo/America/Punta_Arenas | Bin 1902 -> 0 bytes .../testdata/zoneinfo/America/Rainy_River | Bin 2122 -> 0 bytes .../testdata/zoneinfo/America/Rankin_Inlet | Bin 1892 -> 0 bytes .../cctz/testdata/zoneinfo/America/Recife | Bin 716 -> 0 bytes .../cctz/testdata/zoneinfo/America/Regina | Bin 980 -> 0 bytes .../cctz/testdata/zoneinfo/America/Resolute | Bin 1892 -> 0 bytes .../cctz/testdata/zoneinfo/America/Rio_Branco | Bin 628 -> 0 bytes .../cctz/testdata/zoneinfo/America/Rosario | Bin 1076 -> 0 bytes .../testdata/zoneinfo/America/Santa_Isabel | Bin 2342 -> 0 bytes .../cctz/testdata/zoneinfo/America/Santarem | Bin 602 -> 0 bytes .../cctz/testdata/zoneinfo/America/Santiago | Bin 2529 -> 0 bytes .../testdata/zoneinfo/America/Santo_Domingo | Bin 458 -> 0 bytes .../cctz/testdata/zoneinfo/America/Sao_Paulo | Bin 1444 -> 0 bytes .../testdata/zoneinfo/America/Scoresbysund | Bin 1916 -> 0 bytes .../cctz/testdata/zoneinfo/America/Shiprock | Bin 2444 -> 0 bytes .../cctz/testdata/zoneinfo/America/Sitka | Bin 2329 -> 0 bytes .../testdata/zoneinfo/America/St_Barthelemy | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Johns | Bin 3655 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Kitts | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Lucia | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Thomas | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Vincent | Bin 148 -> 0 bytes .../testdata/zoneinfo/America/Swift_Current | Bin 560 -> 0 bytes .../testdata/zoneinfo/America/Tegucigalpa | Bin 252 -> 0 bytes .../cctz/testdata/zoneinfo/America/Thule | Bin 1502 -> 0 bytes .../testdata/zoneinfo/America/Thunder_Bay | Bin 2202 -> 0 bytes .../cctz/testdata/zoneinfo/America/Tijuana | Bin 2342 -> 0 bytes .../cctz/testdata/zoneinfo/America/Toronto | Bin 3494 -> 0 bytes .../cctz/testdata/zoneinfo/America/Tortola | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Vancouver | Bin 2892 -> 0 bytes .../cctz/testdata/zoneinfo/America/Virgin | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/America/Whitehorse | Bin 1600 -> 0 bytes .../cctz/testdata/zoneinfo/America/Winnipeg | Bin 2868 -> 0 bytes .../cctz/testdata/zoneinfo/America/Yakutat | Bin 2305 -> 0 bytes .../testdata/zoneinfo/America/Yellowknife | Bin 1966 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Casey | Bin 297 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Davis | Bin 297 -> 0 bytes .../zoneinfo/Antarctica/DumontDUrville | Bin 194 -> 0 bytes .../testdata/zoneinfo/Antarctica/Macquarie | Bin 1520 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Mawson | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/McMurdo | Bin 2437 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Palmer | Bin 1418 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Rothera | Bin 164 -> 0 bytes .../testdata/zoneinfo/Antarctica/South_Pole | Bin 2437 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Syowa | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Troll | Bin 1162 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Vostok | Bin 165 -> 0 bytes .../testdata/zoneinfo/Arctic/Longyearbyen | Bin 2228 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aden | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Almaty | Bin 997 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Amman | Bin 1853 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Anadyr | Bin 1188 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Aqtau | Bin 983 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Aqtobe | Bin 1011 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ashgabat | Bin 619 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ashkhabad | Bin 619 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Atyrau | Bin 991 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Baghdad | Bin 983 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Bahrain | Bin 199 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Baku | Bin 1227 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Bangkok | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Barnaul | Bin 1221 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Beirut | Bin 2154 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Bishkek | Bin 983 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Brunei | Bin 203 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Calcutta | Bin 285 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Chita | Bin 1221 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Choibalsan | Bin 949 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Chongqing | Bin 561 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Chungking | Bin 561 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Colombo | Bin 372 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Dacca | Bin 337 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Damascus | Bin 2294 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Dhaka | Bin 337 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dili | Bin 227 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Dubai | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Dushanbe | Bin 591 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Famagusta | Bin 2028 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Gaza | Bin 2316 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Harbin | Bin 561 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Hebron | Bin 2344 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh | Bin 351 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Hong_Kong | Bin 1203 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hovd | Bin 891 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Irkutsk | Bin 1243 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Istanbul | Bin 1947 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Jakarta | Bin 355 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Jayapura | Bin 221 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Jerusalem | Bin 2288 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kabul | Bin 208 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kamchatka | Bin 1166 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Karachi | Bin 379 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kashgar | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kathmandu | Bin 212 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Katmandu | Bin 212 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Khandyga | Bin 1271 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kolkata | Bin 285 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Krasnoyarsk | Bin 1207 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kuala_Lumpur | Bin 383 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kuching | Bin 483 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kuwait | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Macao | Bin 1227 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Macau | Bin 1227 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Magadan | Bin 1222 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Makassar | Bin 254 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Manila | Bin 328 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Muscat | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Nicosia | Bin 2002 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Novokuznetsk | Bin 1165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Novosibirsk | Bin 1221 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Omsk | Bin 1207 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Oral | Bin 1005 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Phnom_Penh | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Pontianak | Bin 353 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Pyongyang | Bin 237 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Qatar | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Qostanay | Bin 1011 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Qyzylorda | Bin 1025 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Rangoon | Bin 268 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Riyadh | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Saigon | Bin 351 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Sakhalin | Bin 1202 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Samarkand | Bin 577 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Seoul | Bin 617 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Shanghai | Bin 561 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Singapore | Bin 383 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Srednekolymsk | Bin 1208 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Taipei | Bin 761 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Tashkent | Bin 591 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Tbilisi | Bin 1035 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Tehran | Bin 2582 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Tel_Aviv | Bin 2288 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Thimbu | Bin 203 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Thimphu | Bin 203 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Tokyo | Bin 309 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Tomsk | Bin 1221 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ujung_Pandang | Bin 254 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ulaanbaatar | Bin 891 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ulan_Bator | Bin 891 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Urumqi | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ust-Nera | Bin 1252 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Vientiane | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Vladivostok | Bin 1208 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Yakutsk | Bin 1207 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Yangon | Bin 268 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Yekaterinburg | Bin 1243 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Yerevan | Bin 1151 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Azores | Bin 3484 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Bermuda | Bin 1978 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Canary | Bin 1897 -> 0 bytes .../testdata/zoneinfo/Atlantic/Cape_Verde | Bin 270 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Faeroe | Bin 1815 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Faroe | Bin 1815 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Jan_Mayen | Bin 2228 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Madeira | Bin 3475 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Reykjavik | Bin 1162 -> 0 bytes .../testdata/zoneinfo/Atlantic/South_Georgia | Bin 164 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/St_Helena | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Stanley | Bin 1214 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/ACT | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Adelaide | Bin 2222 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Brisbane | Bin 433 -> 0 bytes .../testdata/zoneinfo/Australia/Broken_Hill | Bin 2243 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Canberra | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Currie | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Darwin | Bin 304 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Eucla | Bin 484 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Hobart | Bin 2316 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/LHI | Bin 1860 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Lindeman | Bin 489 -> 0 bytes .../testdata/zoneinfo/Australia/Lord_Howe | Bin 1860 -> 0 bytes .../testdata/zoneinfo/Australia/Melbourne | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/NSW | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/North | Bin 304 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Perth | Bin 460 -> 0 bytes .../testdata/zoneinfo/Australia/Queensland | Bin 433 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/South | Bin 2222 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Sydney | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Tasmania | Bin 2316 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Victoria | Bin 2204 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/West | Bin 460 -> 0 bytes .../testdata/zoneinfo/Australia/Yancowinna | Bin 2243 -> 0 bytes .../cctz/testdata/zoneinfo/Brazil/Acre | Bin 628 -> 0 bytes .../cctz/testdata/zoneinfo/Brazil/DeNoronha | Bin 716 -> 0 bytes .../cctz/testdata/zoneinfo/Brazil/East | Bin 1444 -> 0 bytes .../cctz/testdata/zoneinfo/Brazil/West | Bin 604 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/CET | Bin 2094 -> 0 bytes .../internal/cctz/testdata/zoneinfo/CST6CDT | Bin 2310 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Atlantic | Bin 3424 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Central | Bin 2868 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Eastern | Bin 3494 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Mountain | Bin 2332 -> 0 bytes .../testdata/zoneinfo/Canada/Newfoundland | Bin 3655 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Pacific | Bin 2892 -> 0 bytes .../testdata/zoneinfo/Canada/Saskatchewan | Bin 980 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Yukon | Bin 1600 -> 0 bytes .../cctz/testdata/zoneinfo/Chile/Continental | Bin 2529 -> 0 bytes .../cctz/testdata/zoneinfo/Chile/EasterIsland | Bin 2233 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Cuba | Bin 2416 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/EET | Bin 1908 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/EST | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/EST5EDT | Bin 2310 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Egypt | Bin 1955 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Eire | Bin 3492 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+0 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+1 | Bin 116 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT+10 | Bin 117 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT+11 | Bin 117 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT+12 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+2 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+3 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+4 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+5 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+6 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+7 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+8 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+9 | Bin 116 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-0 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-1 | Bin 117 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT-10 | Bin 118 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT-11 | Bin 118 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT-12 | Bin 118 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT-13 | Bin 118 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/GMT-14 | Bin 118 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-2 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-3 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-4 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-5 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-6 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-7 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-8 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-9 | Bin 117 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT0 | Bin 114 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/Greenwich | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/UCT | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/UTC | Bin 114 -> 0 bytes .../cctz/testdata/zoneinfo/Etc/Universal | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/Zulu | Bin 114 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Amsterdam | Bin 2910 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Andorra | Bin 1742 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Astrakhan | Bin 1165 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Athens | Bin 2262 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Belfast | Bin 3648 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Belgrade | Bin 1920 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Berlin | Bin 2298 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Bratislava | Bin 2301 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Brussels | Bin 2933 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Bucharest | Bin 2184 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Budapest | Bin 2368 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Busingen | Bin 1909 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Chisinau | Bin 2390 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Copenhagen | Bin 2137 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Dublin | Bin 3492 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Gibraltar | Bin 3052 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Guernsey | Bin 3648 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Helsinki | Bin 1900 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Isle_of_Man | Bin 3648 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Istanbul | Bin 1947 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Jersey | Bin 3648 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Kaliningrad | Bin 1493 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Kiev | Bin 2088 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Kirov | Bin 1153 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Lisbon | Bin 3469 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Ljubljana | Bin 1920 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/London | Bin 3648 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Luxembourg | Bin 2946 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Madrid | Bin 2614 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Malta | Bin 2620 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Mariehamn | Bin 1900 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Minsk | Bin 1321 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Monaco | Bin 2944 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Moscow | Bin 1535 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Nicosia | Bin 2002 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Oslo | Bin 2228 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Paris | Bin 2962 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Podgorica | Bin 1920 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Prague | Bin 2301 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Riga | Bin 2198 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Rome | Bin 2641 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Samara | Bin 1215 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/San_Marino | Bin 2641 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Sarajevo | Bin 1920 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Saratov | Bin 1183 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Simferopol | Bin 1453 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Skopje | Bin 1920 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Sofia | Bin 2077 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Stockholm | Bin 1909 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Tallinn | Bin 2148 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Tirane | Bin 2084 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Tiraspol | Bin 2390 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Ulyanovsk | Bin 1267 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Uzhgorod | Bin 2050 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Vaduz | Bin 1909 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Vatican | Bin 2641 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Vienna | Bin 2200 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Vilnius | Bin 2162 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Volgograd | Bin 1165 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Warsaw | Bin 2654 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Zagreb | Bin 1920 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Zaporozhye | Bin 2106 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Zurich | Bin 1909 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Factory | Bin 116 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/GB | Bin 3648 -> 0 bytes .../internal/cctz/testdata/zoneinfo/GB-Eire | Bin 3648 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/GMT | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/GMT+0 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/GMT-0 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/GMT0 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Greenwich | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/HST | Bin 115 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Hongkong | Bin 1203 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Iceland | Bin 1162 -> 0 bytes .../testdata/zoneinfo/Indian/Antananarivo | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Chagos | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Christmas | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Cocos | Bin 174 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Comoro | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Kerguelen | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Mahe | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Maldives | Bin 199 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Mauritius | Bin 241 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Mayotte | Bin 251 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Reunion | Bin 165 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Iran | Bin 2582 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Israel | Bin 2288 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Jamaica | Bin 482 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Japan | Bin 309 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Kwajalein | Bin 316 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Libya | Bin 625 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/MET | Bin 2094 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/MST | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/MST7MDT | Bin 2310 -> 0 bytes .../cctz/testdata/zoneinfo/Mexico/BajaNorte | Bin 2342 -> 0 bytes .../cctz/testdata/zoneinfo/Mexico/BajaSur | Bin 1526 -> 0 bytes .../cctz/testdata/zoneinfo/Mexico/General | Bin 1584 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/NZ | Bin 2437 -> 0 bytes .../internal/cctz/testdata/zoneinfo/NZ-CHAT | Bin 2068 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Navajo | Bin 2444 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/PRC | Bin 561 -> 0 bytes .../internal/cctz/testdata/zoneinfo/PST8PDT | Bin 2310 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Apia | Bin 1097 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Auckland | Bin 2437 -> 0 bytes .../testdata/zoneinfo/Pacific/Bougainville | Bin 268 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Chatham | Bin 2068 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Chuuk | Bin 269 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Easter | Bin 2233 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Efate | Bin 466 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Enderbury | Bin 234 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Fakaofo | Bin 200 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Fiji | Bin 1077 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Funafuti | Bin 166 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Galapagos | Bin 238 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Gambier | Bin 164 -> 0 bytes .../testdata/zoneinfo/Pacific/Guadalcanal | Bin 166 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Guam | Bin 494 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Honolulu | Bin 329 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Johnston | Bin 329 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Kiritimati | Bin 238 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Kosrae | Bin 351 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Kwajalein | Bin 316 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Majuro | Bin 310 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Marquesas | Bin 173 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Midway | Bin 175 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Nauru | Bin 252 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Niue | Bin 241 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Norfolk | Bin 880 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Noumea | Bin 304 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Pago_Pago | Bin 175 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Palau | Bin 180 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Pitcairn | Bin 202 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Pohnpei | Bin 303 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Ponape | Bin 303 -> 0 bytes .../testdata/zoneinfo/Pacific/Port_Moresby | Bin 186 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Rarotonga | Bin 577 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Saipan | Bin 494 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Samoa | Bin 175 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Tahiti | Bin 165 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Tarawa | Bin 166 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Tongatapu | Bin 372 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Truk | Bin 269 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Wake | Bin 166 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Wallis | Bin 166 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Yap | Bin 269 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Poland | Bin 2654 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Portugal | Bin 3469 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/ROC | Bin 761 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/ROK | Bin 617 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Singapore | Bin 383 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Turkey | Bin 1947 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/UCT | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Alaska | Bin 2371 -> 0 bytes .../cctz/testdata/zoneinfo/US/Aleutian | Bin 2356 -> 0 bytes .../cctz/testdata/zoneinfo/US/Arizona | Bin 328 -> 0 bytes .../cctz/testdata/zoneinfo/US/Central | Bin 3576 -> 0 bytes .../cctz/testdata/zoneinfo/US/East-Indiana | Bin 1666 -> 0 bytes .../cctz/testdata/zoneinfo/US/Eastern | Bin 3536 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Hawaii | Bin 329 -> 0 bytes .../cctz/testdata/zoneinfo/US/Indiana-Starke | Bin 2428 -> 0 bytes .../cctz/testdata/zoneinfo/US/Michigan | Bin 2230 -> 0 bytes .../cctz/testdata/zoneinfo/US/Mountain | Bin 2444 -> 0 bytes .../cctz/testdata/zoneinfo/US/Pacific | Bin 2836 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Samoa | Bin 175 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/UTC | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Universal | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/W-SU | Bin 1535 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/WET | Bin 1905 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Zulu | Bin 114 -> 0 bytes .../cctz/testdata/zoneinfo/iso3166.tab | 274 - .../internal/cctz/testdata/zoneinfo/localtime | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/zone1970.tab | 384 - .../time/internal/get_current_time_chrono.inc | 31 - .../time/internal/get_current_time_posix.inc | 24 - webrtc/absl/time/internal/zoneinfo.inc | 729 -- webrtc/absl/types/BUILD.bazel | 337 - webrtc/absl/types/BUILD.gn | 151 - webrtc/absl/types/CMakeLists.txt | 373 - webrtc/absl/utility/BUILD.bazel | 55 - webrtc/absl/utility/BUILD.gn | 14 - webrtc/absl/utility/CMakeLists.txt | 44 - webrtc/api/BUILD.gn | 1053 --- webrtc/api/DEPS | 313 - webrtc/api/DESIGN.md | 71 - webrtc/api/OWNERS | 14 - webrtc/api/README.md | 24 - webrtc/api/audio/BUILD.gn | 103 - webrtc/api/audio/OWNERS | 2 - webrtc/api/audio/test/BUILD.gn | 31 - webrtc/api/audio_codecs/BUILD.gn | 144 - webrtc/api/audio_codecs/L16/BUILD.gn | 48 - webrtc/api/audio_codecs/OWNERS | 1 - webrtc/api/audio_codecs/g711/BUILD.gn | 48 - webrtc/api/audio_codecs/g722/BUILD.gn | 54 - webrtc/api/audio_codecs/ilbc/BUILD.gn | 52 - webrtc/api/audio_codecs/isac/BUILD.gn | 125 - webrtc/api/audio_codecs/opus/BUILD.gn | 106 - webrtc/api/audio_codecs/test/BUILD.gn | 43 - webrtc/api/crypto/BUILD.gn | 49 - webrtc/api/neteq/BUILD.gn | 97 - webrtc/api/neteq/DEPS | 14 - webrtc/api/neteq/OWNERS | 2 - webrtc/api/rtc_event_log/BUILD.gn | 47 - webrtc/api/stats/OWNERS | 2 - webrtc/api/task_queue/BUILD.gn | 104 - webrtc/api/task_queue/DEPS | 10 - webrtc/api/test/DEPS | 44 - webrtc/api/test/OWNERS | 2 - webrtc/api/test/network_emulation/BUILD.gn | 28 - webrtc/api/test/network_emulation/DEPS | 7 - webrtc/api/test/video/BUILD.gn | 23 - webrtc/api/transport/BUILD.gn | 167 - webrtc/api/transport/DEPS | 7 - webrtc/api/transport/OWNERS | 2 - webrtc/api/transport/media/BUILD.gn | 52 - webrtc/api/transport/rtp/BUILD.gn | 28 - webrtc/api/units/BUILD.gn | 111 - webrtc/api/units/OWNERS | 1 - webrtc/api/video/BUILD.gn | 317 - webrtc/api/video/DEPS | 39 - webrtc/api/video/OWNERS | 4 - webrtc/api/video/test/BUILD.gn | 37 - webrtc/api/video_codecs/BUILD.gn | 155 - webrtc/api/video_codecs/OWNERS | 4 - webrtc/api/video_codecs/test/BUILD.gn | 44 - webrtc/api/voip/BUILD.gn | 57 - webrtc/api/voip/DEPS | 10 - webrtc/base/BUILD.gn | 3829 ---------- webrtc/base/DEPS | 20 - webrtc/base/OWNERS | 42 - webrtc/base/PRESUBMIT.py | 50 - webrtc/base/README.md | 75 - webrtc/base/SECURITY_OWNERS | 14 - webrtc/base/allocator/BUILD.gn | 299 - webrtc/base/allocator/OWNERS | 4 - webrtc/base/allocator/README.md | 197 - webrtc/base/allocator/allocator.gni | 49 - .../allocator/allocator_interception_mac.mm | 574 -- .../allocator_interception_mac_unittest.mm | 64 - .../base/allocator/partition_allocator/OWNERS | 9 - .../partition_allocator/PartitionAlloc.md | 102 - webrtc/base/android/OWNERS | 10 - .../src/org/chromium/base/ActivityState.java | 48 - .../chromium/base/ApiCompatibilityUtils.java | 792 -- .../java/src/org/chromium/base/ApkAssets.java | 58 - .../org/chromium/base/ApplicationStatus.java | 670 -- .../src/org/chromium/base/BaseSwitches.java | 44 - .../java/src/org/chromium/base/BuildInfo.java | 257 - .../src/org/chromium/base/BundleUtils.java | 66 - .../java/src/org/chromium/base/Callback.java | 48 - .../src/org/chromium/base/CollectionUtil.java | 101 - .../src/org/chromium/base/CommandLine.java | 461 -- .../chromium/base/CommandLineInitUtil.java | 106 - .../java/src/org/chromium/base/Consumer.java | 23 - .../org/chromium/base/ContentUriUtils.java | 326 - .../src/org/chromium/base/ContextUtils.java | 162 - .../src/org/chromium/base/CpuFeatures.java | 46 - .../base/DiscardableReferencePool.java | 104 - .../org/chromium/base/EarlyTraceEvent.java | 324 - .../java/src/org/chromium/base/EventLog.java | 20 - .../src/org/chromium/base/FeatureList.java | 115 - .../src/org/chromium/base/FieldTrialList.java | 59 - .../java/src/org/chromium/base/FileUtils.java | 205 - .../java/src/org/chromium/base/Function.java | 25 - .../base/ImportantFileWriterAndroid.java | 34 - .../org/chromium/base/IntStringCallback.java | 29 - .../src/org/chromium/base/IntentUtils.java | 479 -- .../java/src/org/chromium/base/JNIUtils.java | 58 - .../chromium/base/JavaExceptionReporter.java | 70 - .../org/chromium/base/JavaHandlerThread.java | 123 - .../src/org/chromium/base/JniException.java | 14 - .../chromium/base/JniStaticTestMocker.java | 13 - .../src/org/chromium/base/LifetimeAssert.java | 171 - .../src/org/chromium/base/LocaleUtils.java | 223 - .../java/src/org/chromium/base/Log.java | 274 - .../java/src/org/chromium/base/MathUtils.java | 201 - .../chromium/base/MemoryPressureListener.java | 134 - .../base/NativeLibraryLoadedStatus.java | 41 - .../src/org/chromium/base/NonThreadSafe.java | 43 - .../src/org/chromium/base/ObserverList.java | 249 - .../chromium/base/PackageManagerUtils.java | 110 - .../src/org/chromium/base/PackageUtils.java | 53 - .../src/org/chromium/base/PathService.java | 30 - .../java/src/org/chromium/base/PathUtils.java | 263 - .../java/src/org/chromium/base/PiiElider.java | 189 - .../src/org/chromium/base/PowerMonitor.java | 84 - .../java/src/org/chromium/base/Promise.java | 293 - .../base/SecureRandomInitializer.java | 35 - .../src/org/chromium/base/StreamUtil.java | 44 - .../org/chromium/base/StrictModeContext.java | 98 - .../java/src/org/chromium/base/SysUtils.java | 249 - .../src/org/chromium/base/ThreadUtils.java | 323 - .../java/src/org/chromium/base/TimeUtils.java | 30 - .../src/org/chromium/base/TimezoneUtils.java | 36 - .../src/org/chromium/base/TraceEvent.java | 421 - .../org/chromium/base/UnguessableToken.java | 107 - .../java/src/org/chromium/base/UserData.java | 20 - .../src/org/chromium/base/UserDataHost.java | 134 - .../base/annotations/AccessedByNative.java | 20 - .../base/annotations/CalledByNative.java | 23 - .../annotations/CalledByNativeJavaTest.java | 24 - .../annotations/CalledByNativeUnchecked.java | 27 - .../base/annotations/CheckDiscard.java | 26 - .../DisabledCalledByNativeJavaTest.java | 22 - .../base/annotations/DoNotInline.java | 21 - .../base/annotations/JNIAdditionalImport.java | 35 - .../base/annotations/JNINamespace.java | 20 - .../base/annotations/JniIgnoreNatives.java | 16 - .../chromium/base/annotations/MainDex.java | 20 - .../annotations/NativeClassQualifiedName.java | 25 - .../annotations/NativeJavaTestFeatures.java | 35 - .../base/annotations/NativeMethods.java | 13 - .../base/annotations/RemovableInRelease.java | 22 - .../base/annotations/UsedByReflection.java | 24 - .../base/annotations/VerifiesOnLollipop.java | 21 - .../annotations/VerifiesOnLollipopMR1.java | 21 - .../base/annotations/VerifiesOnM.java | 21 - .../base/annotations/VerifiesOnN.java | 21 - .../base/annotations/VerifiesOnNMR1.java | 21 - .../base/annotations/VerifiesOnO.java | 21 - .../base/annotations/VerifiesOnOMR1.java | 21 - .../base/annotations/VerifiesOnP.java | 21 - .../base/annotations/VerifiesOnQ.java | 21 - .../chromium/base/compat/ApiHelperForM.java | 120 - .../chromium/base/compat/ApiHelperForN.java | 88 - .../chromium/base/compat/ApiHelperForO.java | 57 - .../base/compat/ApiHelperForOMR1.java | 27 - .../chromium/base/compat/ApiHelperForP.java | 44 - .../chromium/base/compat/ApiHelperForQ.java | 55 - .../base/library_loader/LegacyLinker.java | 141 - .../base/library_loader/LibraryLoader.java | 700 -- .../library_loader/LibraryPrefetcher.java | 93 - .../chromium/base/library_loader/Linker.java | 586 -- .../base/library_loader/LoaderErrors.java | 25 - .../base/library_loader/ModernLinker.java | 106 - .../NativeLibraryPreloader.java | 20 - .../library_loader/ProcessInitException.java | 25 - .../base/memory/JavaHeapDumpGenerator.java | 35 - .../base/memory/MemoryPressureCallback.java | 15 - .../base/memory/MemoryPressureMonitor.java | 298 - .../base/memory/MemoryPressureUma.java | 112 - .../base/metrics/CachingUmaRecorder.java | 557 -- .../base/metrics/NativeUmaRecorder.java | 109 - .../base/metrics/NoopUmaRecorder.java | 24 - .../base/metrics/RecordHistogram.java | 289 - .../base/metrics/RecordUserAction.java | 68 - .../base/metrics/ScopedSysTraceEvent.java | 42 - .../metrics/StatisticsRecorderAndroid.java | 31 - .../chromium/base/metrics/UmaRecorder.java | 60 - .../base/metrics/UmaRecorderHolder.java | 35 - .../metrics/forwarding_synchronization.md | 121 - .../multidex/ChromiumMultiDexInstaller.java | 37 - .../base/process_launcher/BindService.java | 85 - .../ChildConnectionAllocator.java | 545 -- .../ChildProcessConnection.java | 939 --- .../ChildProcessConstants.java | 27 - .../ChildProcessLauncher.java | 277 - .../process_launcher/ChildProcessService.java | 365 - .../ChildProcessServiceDelegate.java | 67 - .../process_launcher/FileDescriptorInfo.aidl | 7 - .../process_launcher/FileDescriptorInfo.java | 68 - .../IChildProcessService.aidl | 30 - .../base/process_launcher/IParentProcess.aidl | 15 - .../org/chromium/base/process_launcher/OWNERS | 4 - .../DestroyableObservableSupplier.java | 20 - .../base/supplier/ObservableSupplier.java | 42 - .../base/supplier/ObservableSupplierImpl.java | 83 - .../org/chromium/base/supplier/Supplier.java | 20 - .../src/org/chromium/base/task/AsyncTask.java | 414 - .../base/task/BackgroundOnlyAsyncTask.java | 21 - .../base/task/ChoreographerTaskRunner.java | 48 - .../base/task/ChromeThreadPoolExecutor.java | 130 - .../base/task/DefaultTaskExecutor.java | 69 - .../java/src/org/chromium/base/task/OWNERS | 3 - .../src/org/chromium/base/task/PostTask.java | 274 - .../base/task/SequencedTaskRunner.java | 14 - .../base/task/SequencedTaskRunnerImpl.java | 37 - .../chromium/base/task/SerialExecutor.java | 36 - .../base/task/SingleThreadTaskRunner.java | 19 - .../base/task/SingleThreadTaskRunnerImpl.java | 80 - .../org/chromium/base/task/TaskExecutor.java | 43 - .../org/chromium/base/task/TaskRunner.java | 29 - .../chromium/base/task/TaskRunnerImpl.java | 265 - .../org/chromium/base/task/TaskTraits.java | 202 - .../task/TaskTraitsExtensionDescriptor.java | 40 - .../java/templates/BuildConfig.template | 89 - .../base/AdvancedMockContextTest.java | 77 - .../base/ApiCompatibilityUtilsTest.java | 88 - .../src/org/chromium/base/AssertsTest.java | 39 - .../base/CommandLineInitUtilTest.java | 35 - .../org/chromium/base/CommandLineTest.java | 194 - .../chromium/base/EarlyTraceEventTest.java | 241 - .../org/chromium/base/LocaleUtilsTest.java | 274 - .../org/chromium/base/ObserverListTest.java | 340 - .../chromium/base/StrictModeContextTest.java | 118 - .../org/chromium/base/UserDataHostTest.java | 163 - .../base/library_loader/EarlyNativeTest.java | 164 - .../base/metrics/RecordHistogramTest.java | 196 - .../chromium/base/profiler/TestSupport.java | 25 - .../org/chromium/base/task/AsyncTaskTest.java | 148 - .../org/chromium/base/task/PostTaskTest.java | 123 - .../task/SequencedTaskRunnerImplTest.java | 42 - .../task/SingleThreadTaskRunnerImplTest.java | 110 - .../base/task/TaskRunnerImplTest.java | 33 - .../util/GarbageCollectionTestUtilsTest.java | 42 - webrtc/base/android/jni_generator/.style.yapf | 4 - .../android/jni_generator/AndroidManifest.xml | 12 - webrtc/base/android/jni_generator/BUILD.gn | 107 - webrtc/base/android/jni_generator/OWNERS | 4 - .../base/android/jni_generator/PRESUBMIT.py | 37 - webrtc/base/android/jni_generator/README.md | 291 - .../jni_generator/TestSampleFeatureList.java | 12 - .../android/jni_generator/android_jar.classes | 98 - webrtc/base/android/jni_generator/config.gni | 8 - ...ampleForAnnotationProcessorGenJni.2.golden | 87 - ...dSampleForAnnotationProcessorGenJni.golden | 49 - ...hedSampleForAnnotationProcessor_jni.golden | 268 - .../SampleForAnnotationProcessor_jni.golden | 286 - .../golden/SampleForTests_jni.golden | 530 -- .../golden/testCalledByNativeJavaTest.golden | 257 - .../golden/testCalledByNatives.golden | 481 -- .../golden/testConstantsFromJavaP.golden | 2323 ------ .../jni_generator/golden/testFromJavaP.golden | 279 - .../golden/testFromJavaPGenerics.golden | 90 - .../golden/testGenJniFlagsDisabled.golden | 51 - .../golden/testGenJniFlagsMocksEnabled.golden | 51 - .../testGenJniFlagsMocksRequired.golden | 51 - .../golden/testInnerClassNatives.golden | 63 - ...tInnerClassNativesBothInnerAndOuter.golden | 73 - ...tivesBothInnerAndOuterRegistrations.golden | 114 - .../testInnerClassNativesMultiple.golden | 86 - .../golden/testInputStream.javap | 228 - .../golden/testMotionEvent.javap | 2295 ------ .../golden/testMotionEvent.javap7 | 2370 ------ .../testMultipleJNIAdditionalImport.golden | 74 - .../golden/testNativeExportsOnlyOption.golden | 232 - .../jni_generator/golden/testNatives.golden | 219 - .../golden/testNativesLong.golden | 52 - .../golden/testNativesRegistrations.golden | 180 - .../golden/testProxyNatives.golden | 66 - .../golden/testProxyNativesJava.golden | 21 - .../golden/testProxyNativesMainDex.golden | 83 - ...estProxyNativesMainDexAndNonMainDex.golden | 123 - .../testProxyNativesRegistrations.golden | 104 - .../golden/testProxyNativesWithNatives.golden | 120 - .../golden/testREForNatives.golden | 52 - .../testSingleJNIAdditionalImport.golden | 70 - .../golden/testStaticBindingCaller.golden | 103 - .../jni_generator/golden/testTracing.golden | 109 - .../SampleForAnnotationProcessor.java | 69 - .../example/jni_generator/SampleForTests.java | 280 - .../chromium/jni_generator/JniProcessor.java | 533 -- .../android/jni_generator/jni_generator.py | 1785 ----- .../jni_generator/jni_generator.pydeps | 6 - .../jni_generator/jni_generator_tests.py | 1924 ----- .../android/jni_generator/jni_refactorer.py | 464 -- .../jni_registration_generator.py | 670 -- .../jni_registration_generator.pydeps | 7 - .../chromium/base/ApplicationStatusTest.java | 263 - .../base/DiscardableReferencePoolTest.java | 130 - .../src/org/chromium/base/FileUtilsTest.java | 567 -- .../org/chromium/base/LifetimeAssertTest.java | 114 - .../junit/src/org/chromium/base/LogTest.java | 87 - .../org/chromium/base/NonThreadSafeTest.java | 63 - .../src/org/chromium/base/PiiEliderTest.java | 136 - .../src/org/chromium/base/PromiseTest.java | 266 - .../memory/MemoryPressureMonitorTest.java | 356 - .../base/metrics/CachingUmaRecorderTest.java | 463 -- .../metrics/test/ShadowRecordHistogram.java | 114 - .../ChildConnectionAllocatorTest.java | 453 -- .../ChildProcessConnectionTest.java | 481 -- .../supplier/ObservableSupplierImplTest.java | 190 - .../base/task/AsyncTaskThreadTest.java | 262 - .../chromium/base/task/TaskTraitsTest.java | 77 - .../GarbageCollectionTestUtilsUnitTest.java | 40 - webrtc/base/android/library_loader/README.md | 10 - .../library_loader/anchor_functions.lds | 7 - webrtc/base/android/linker/BUILD.gn | 50 - webrtc/base/android/linker/DEPS | 6 - webrtc/base/android/linker/config.gni | 13 - webrtc/base/android/orderfile/BUILD.gn | 35 - webrtc/base/android/orderfile/OWNERS | 2 - webrtc/base/android/proguard/OWNERS | 1 - .../base/android/proguard/chromium_apk.flags | 82 - .../base/android/proguard/chromium_code.flags | 96 - .../proguard/disable_all_obfuscation.flags | 8 - .../android/proguard/enable_obfuscation.flags | 7 - webrtc/base/android/resource_exclusions.gni | 15 - webrtc/base/base_paths_mac.mm | 137 - webrtc/base/bind_unittest.nc | 333 - webrtc/base/callback_list_unittest.nc | 56 - webrtc/base/callback_unittest.nc | 54 - webrtc/base/containers/OWNERS | 3 - webrtc/base/containers/README.md | 363 - .../containers/buffer_iterator_unittest.nc | 70 - .../containers/checked_iterators_unittest.nc | 325 - webrtc/base/containers/span_unittest.nc | 218 - webrtc/base/critical_closure_internal_ios.mm | 26 - webrtc/base/enterprise_util_mac.mm | 260 - webrtc/base/enterprise_util_mac_unittest.mm | 29 - webrtc/base/file_version_info_mac.mm | 96 - webrtc/base/files/file_util_mac.mm | 66 - webrtc/base/fuchsia/OWNERS | 8 - webrtc/base/fuchsia/test.fidl | 10 - webrtc/base/hash/README.md | 41 - webrtc/base/i18n/OWNERS | 1 - webrtc/base/ios/OWNERS | 5 - webrtc/base/ios/crb_protocol_observers.mm | 192 - .../ios/crb_protocol_observers_unittest.mm | 289 - webrtc/base/ios/device_util.mm | 178 - webrtc/base/ios/device_util_unittest.mm | 143 - webrtc/base/ios/ios_util.mm | 79 - webrtc/base/ios/ns_error_util.mm | 53 - webrtc/base/ios/scoped_critical_action.mm | 142 - webrtc/base/ios/weak_nsobject.mm | 69 - webrtc/base/ios/weak_nsobject_unittest.mm | 142 - webrtc/base/json/OWNERS | 1 - webrtc/base/mac/OWNERS | 8 - webrtc/base/mac/authorization_util.mm | 201 - webrtc/base/mac/bind_objc_block_unittest.mm | 153 - .../base/mac/bind_objc_block_unittest_arc.mm | 152 - webrtc/base/mac/bundle_locations.mm | 83 - webrtc/base/mac/call_with_eh_frame_asm.S | 89 - .../base/mac/call_with_eh_frame_unittest.mm | 55 - webrtc/base/mac/foundation_util.mm | 541 -- webrtc/base/mac/foundation_util_unittest.mm | 426 -- webrtc/base/mac/launch_services_util.mm | 53 - webrtc/base/mac/mac_logging.mm | 47 - webrtc/base/mac/mac_util.mm | 426 -- webrtc/base/mac/mac_util_unittest.mm | 306 - webrtc/base/mac/objc_release_properties.mm | 66 - .../mac/objc_release_properties_unittest.mm | 370 - webrtc/base/mac/scoped_authorizationref.mm | 15 - webrtc/base/mac/scoped_nsautorelease_pool.mm | 32 - webrtc/base/mac/scoped_nsobject_unittest.mm | 99 - webrtc/base/mac/scoped_objc_class_swizzler.mm | 71 - .../scoped_objc_class_swizzler_unittest.mm | 159 - webrtc/base/mac/scoped_sending_event.mm | 24 - .../base/mac/scoped_sending_event_unittest.mm | 63 - webrtc/base/mac/sdk_forward_declarations.mm | 10 - webrtc/base/memory/OWNERS | 7 - webrtc/base/memory/checked_ptr_unittest.nc | 86 - webrtc/base/memory/ref_counted_unittest.nc | 28 - webrtc/base/memory/weak_ptr_unittest.nc | 144 - webrtc/base/message_loop/message_pump_mac.mm | 985 --- .../message_loop/message_pump_mac_unittest.mm | 338 - webrtc/base/metrics/OWNERS | 15 - .../metrics/field_trial_params_unittest.nc | 47 - webrtc/base/metrics/histogram_unittest.nc | 100 - webrtc/base/native_library_ios.mm | 47 - webrtc/base/native_library_mac.mm | 128 - webrtc/base/nix/OWNERS | 1 - webrtc/base/numerics/BUILD.gn | 28 - webrtc/base/numerics/DEPS | 7 - webrtc/base/numerics/OWNERS | 5 - webrtc/base/numerics/README.md | 409 - webrtc/base/observer_list_unittest.nc | 38 - webrtc/base/optional_unittest.nc | 166 - .../power_monitor_device_source_ios.mm | 54 - .../power_monitor_device_source_mac.mm | 131 - webrtc/base/process/OWNERS | 3 - webrtc/base/process/memory_mac.mm | 49 - webrtc/base/process/memory_unittest_mac.mm | 60 - webrtc/base/profiler/OWNERS | 2 - webrtc/base/sampling_heap_profiler/OWNERS | 3 - .../benchmark-octane.js | 58 - webrtc/base/sequence_checker_unittest.nc | 43 - webrtc/base/strings/OWNERS | 2 - webrtc/base/strings/string16_unittest.nc | 25 - .../strings/sys_string_conversions_mac.mm | 183 - .../sys_string_conversions_mac_unittest.mm | 54 - webrtc/base/system/sys_info_ios.mm | 154 - webrtc/base/system/sys_info_mac.mm | 113 - webrtc/base/task/OWNERS | 10 - webrtc/base/task/README.md | 14 - webrtc/base/task/sequence_manager/OWNERS | 6 - .../task/task_traits_extension_unittest.nc | 28 - webrtc/base/task/task_traits_unittest.nc | 31 - webrtc/base/task/thread_pool/OWNERS | 7 - .../thread_pool/historical_histogram_data.md | 92 - .../thread_pool/thread_group_native_mac.mm | 41 - webrtc/base/test/BUILD.gn | 534 -- webrtc/base/test/DEPS | 3 - webrtc/base/test/OWNERS | 15 - webrtc/base/test/android/OWNERS | 3 - .../chromium/base/ContentUriTestUtils.java | 46 - .../base/GarbageCollectionTestUtils.java | 46 - .../src/org/chromium/base/ITestCallback.aidl | 23 - .../org/chromium/base/ITestController.aidl | 25 - .../base/JavaHandlerThreadHelpers.java | 65 - .../chromium/base/MainReturnCodeResult.java | 40 - .../base/MultiprocessTestClientLauncher.java | 408 - .../base/MultiprocessTestClientService.java | 38 - .../base/MultiprocessTestClientService0.java | 10 - .../base/MultiprocessTestClientService1.java | 10 - .../base/MultiprocessTestClientService2.java | 10 - .../base/MultiprocessTestClientService3.java | 10 - .../base/MultiprocessTestClientService4.java | 10 - .../base/MultiprocessTestClientService5.java | 10 - .../base/MultiprocessTestClientService6.java | 10 - .../base/MultiprocessTestClientService7.java | 10 - .../base/MultiprocessTestClientService8.java | 10 - .../base/MultiprocessTestClientService9.java | 10 - ...MultiprocessTestClientServiceDelegate.java | 86 - .../android/java/src/org/chromium/base/OWNERS | 2 - .../test/BaseChromiumAndroidJUnitRunner.java | 417 - .../base/test/BaseChromiumRunnerCommon.java | 164 - .../base/test/BaseJUnit4ClassRunner.java | 293 - .../base/test/BaseJUnit4TestRule.java | 139 - .../chromium/base/test/BaseTestResult.java | 137 - .../chromium/base/test/BundleTestRule.java | 32 - .../base/test/DestroyActivitiesRule.java | 98 - .../base/test/LifetimeAssertRule.java | 28 - .../org/chromium/base/test/LoadNative.java | 17 - .../base/test/ReachedCodeProfiler.java | 37 - .../test/ScreenshotOnFailureStatement.java | 124 - .../chromium/base/test/SetUpStatement.java | 35 - .../org/chromium/base/test/SetUpTestRule.java | 35 - .../base/test/TestChildProcessConnection.java | 103 - .../TestListInstrumentationRunListener.java | 186 - .../chromium/base/test/TestTraceEvent.java | 168 - .../test/params/BaseJUnit4RunnerDelegate.java | 42 - .../params/BlockJUnit4RunnerDelegate.java | 42 - .../params/MethodParamAnnotationRule.java | 62 - .../base/test/params/MethodParamRule.java | 35 - .../test/params/ParameterAnnotations.java | 78 - .../base/test/params/ParameterProvider.java | 11 - .../base/test/params/ParameterSet.java | 127 - .../params/ParameterizedCommandLineFlags.java | 59 - .../params/ParameterizedFrameworkMethod.java | 94 - .../base/test/params/ParameterizedRunner.java | 221 - .../params/ParameterizedRunnerDelegate.java | 36 - .../ParameterizedRunnerDelegateCommon.java | 69 - .../ParameterizedRunnerDelegateFactory.java | 115 - .../SkipCommandLineParameterization.java | 20 - .../base/test/task/SchedulerTestHelpers.java | 141 - .../base/test/task/ThreadPoolTestHelpers.java | 29 - .../base/test/util/AdvancedMockContext.java | 78 - .../test/util/AnnotationProcessingUtils.java | 258 - .../base/test/util/AnnotationRule.java | 139 - .../base/test/util/CallbackHelper.java | 290 - .../base/test/util/CloseableOnMainThread.java | 98 - .../base/test/util/CommandLineFlags.java | 195 - .../chromium/base/test/util/DisableIf.java | 49 - .../base/test/util/DisableIfSkipCheck.java | 83 - .../chromium/base/test/util/DisabledTest.java | 22 - .../chromium/base/test/util/EnormousTest.java | 24 - .../org/chromium/base/test/util/Feature.java | 29 - .../chromium/base/test/util/FlakyTest.java | 22 - .../test/util/InMemorySharedPreferences.java | 242 - .../InMemorySharedPreferencesContext.java | 73 - .../base/test/util/InstrumentationUtils.java | 32 - .../base/test/util/IntegrationTest.java | 26 - .../chromium/base/test/util/JniMocker.java | 45 - .../org/chromium/base/test/util/Manual.java | 21 - .../org/chromium/base/test/util/Matchers.java | 44 - .../chromium/base/test/util/MetricsUtils.java | 43 - .../base/test/util/MinAndroidSdkLevel.java | 19 - .../util/MinAndroidSdkLevelSkipCheck.java | 43 - .../chromium/base/test/util/Restriction.java | 37 - .../base/test/util/RestrictionSkipCheck.java | 78 - .../base/test/util/RetryOnFailure.java | 25 - .../base/test/util/ScalableTimeout.java | 29 - .../chromium/base/test/util/SkipCheck.java | 49 - .../chromium/base/test/util/TestFileUtil.java | 85 - .../chromium/base/test/util/TimeoutScale.java | 22 - .../chromium/base/test/util/TimeoutTimer.java | 40 - .../org/chromium/base/test/util/UrlUtils.java | 87 - .../base/test/util/UserActionTester.java | 51 - .../task/test/BackgroundShadowAsyncTask.java | 69 - .../base/task/test/CustomShadowAsyncTask.java | 27 - .../base/task/test/ShadowPostTask.java | 43 - .../base/test/BaseRobolectricTestRunner.java | 57 - .../base/test/SetUpStatementTest.java | 64 - ...estListInstrumentationRunListenerTest.java | 204 - .../test/params/ExampleParameterizedTest.java | 105 - ...ParameterizedRunnerDelegateCommonTest.java | 77 - ...arameterizedRunnerDelegateFactoryTest.java | 133 - .../test/params/ParameterizedRunnerTest.java | 118 - .../params/ParameterizedTestNameTest.java | 201 - .../util/AnnotationProcessingUtilsTest.java | 377 - .../base/test/util/DisableIfTest.java | 193 - .../util/MinAndroidSdkLevelSkipCheckTest.java | 110 - .../test/util/RestrictionSkipCheckTest.java | 129 - .../base/test/util/SkipCheckTest.java | 121 - .../base/test/util/TestRunnerTestRule.java | 132 - .../base/test/data/file_util/.gitattributes | 2 - .../base/test/data/file_util/binary_file.bin | Bin 538 -> 0 bytes .../test/data/file_util/binary_file_diff.bin | Bin 538 -> 0 bytes .../test/data/file_util/binary_file_same.bin | Bin 538 -> 0 bytes .../base/test/data/file_util/blank_line.txt | 3 - .../test/data/file_util/blank_line_crlf.txt | 3 - webrtc/base/test/data/file_util/crlf.txt | 1 - webrtc/base/test/data/file_util/different.txt | 1 - .../test/data/file_util/different_first.txt | 1 - .../test/data/file_util/different_last.txt | 1 - webrtc/base/test/data/file_util/empty1.txt | 0 webrtc/base/test/data/file_util/empty2.txt | 0 webrtc/base/test/data/file_util/first1.txt | 2 - webrtc/base/test/data/file_util/first2.txt | 2 - webrtc/base/test/data/file_util/original.txt | 1 - webrtc/base/test/data/file_util/red.png | Bin 173 -> 0 bytes webrtc/base/test/data/file_util/same.txt | 1 - .../base/test/data/file_util/same_length.txt | 1 - webrtc/base/test/data/file_util/shortened.txt | 1 - .../FileVersionInfoTest1.dll | Bin 13824 -> 0 bytes .../no_version_info.dll | Bin 11264 -> 0 bytes webrtc/base/test/data/json/bom_feff.json | 10 - .../dead_name.textproto | 3 - .../mach_port_rendezvous_fuzz/send.textproto | 3 - .../test/data/pe_image/pe_image_test_32.dll | Bin 85504 -> 0 bytes .../test/data/pe_image/pe_image_test_64.dll | Bin 98816 -> 0 bytes .../data/pe_image/pe_image_test_arm64.dll | Bin 83456 -> 0 bytes .../test/data/serializer_nested_test.json | 17 - webrtc/base/test/data/serializer_test.json | 8 - .../data/serializer_test_nowhitespace.json | 1 - .../data/tzdata/2019a/44/le/metaZones.res | Bin 41488 -> 0 bytes .../data/tzdata/2019a/44/le/timezoneTypes.res | Bin 20064 -> 0 bytes .../data/tzdata/2019a/44/le/zoneinfo64.res | Bin 154224 -> 0 bytes webrtc/base/test/data/tzdata/README.md | 6 - webrtc/base/test/fonts.conf | 345 - webrtc/base/test/ios/OWNERS | 1 - webrtc/base/test/ios/google_test_runner.mm | 32 - webrtc/base/test/ios/wait_util.mm | 92 - webrtc/base/test/launcher/OWNERS | 1 - webrtc/base/test/metrics/OWNERS | 5 - webrtc/base/test/mock_callback.h.pump | 104 - .../base/test/mock_chrome_application_mac.mm | 49 - webrtc/base/test/test_listener_ios.mm | 44 - webrtc/base/test/test_support_ios.mm | 246 - webrtc/base/third_party/cityhash/COPYING | 19 - webrtc/base/third_party/cityhash/README | 196 - .../base/third_party/cityhash/README.chromium | 24 - .../patches/0000-build-bots-jumbo.patch | 265 - .../third_party/cityhash_v103/README.chromium | 20 - .../patches/000-remove-crc.patch | 122 - .../patches/001-fix-include-paths.patch | 14 - .../patches/002-fix-include-guards.patch | 21 - .../cityhash_v103/patches/003-use-base.patch | 68 - .../patches/004-google-style.patch | 65 - .../third_party/double_conversion/BUILD.gn | 39 - .../third_party/double_conversion/LICENSE | 26 - .../double_conversion/README.chromium | 16 - .../third_party/dynamic_annotations/BUILD.gn | 25 - .../third_party/dynamic_annotations/LICENSE | 28 - .../dynamic_annotations/README.chromium | 24 - .../dynamic_annotations/dynamic_annotations.c | 269 - webrtc/base/third_party/icu/LICENSE | 76 - webrtc/base/third_party/icu/README.chromium | 17 - webrtc/base/third_party/libevent/BUILD.gn | 80 - webrtc/base/third_party/libevent/ChangeLog | 253 - webrtc/base/third_party/libevent/Doxyfile | 230 - webrtc/base/third_party/libevent/LICENSE | 53 - webrtc/base/third_party/libevent/Makefile.am | 152 - .../base/third_party/libevent/Makefile.nmake | 48 - webrtc/base/third_party/libevent/README | 57 - .../base/third_party/libevent/README.chromium | 40 - webrtc/base/third_party/libevent/autogen.sh | 15 - webrtc/base/third_party/libevent/buffer.c | 554 -- .../base/third_party/libevent/chromium.patch | 226 - webrtc/base/third_party/libevent/configure.in | 421 - webrtc/base/third_party/libevent/devpoll.c | 417 - webrtc/base/third_party/libevent/epoll.c | 377 - webrtc/base/third_party/libevent/epoll_sub.c | 52 - webrtc/base/third_party/libevent/evbuffer.c | 455 -- webrtc/base/third_party/libevent/evdns.3 | 322 - webrtc/base/third_party/libevent/evdns.c | 3192 -------- webrtc/base/third_party/libevent/event.3 | 624 -- webrtc/base/third_party/libevent/event.c | 998 --- .../base/third_party/libevent/event_rpcgen.py | 1423 ---- .../base/third_party/libevent/event_tagging.c | 443 -- webrtc/base/third_party/libevent/evport.c | 519 -- webrtc/base/third_party/libevent/evrpc.c | 657 -- webrtc/base/third_party/libevent/evutil.c | 284 - webrtc/base/third_party/libevent/http.c | 2885 ------- webrtc/base/third_party/libevent/kqueue.c | 433 -- webrtc/base/third_party/libevent/log.c | 187 - webrtc/base/third_party/libevent/m4/.dummy | 1 - .../third_party/libevent/nacl_nonsfi/random.c | 13 - .../libevent/nacl_nonsfi/signal_stub.c | 48 - webrtc/base/third_party/libevent/poll.c | 379 - .../third_party/libevent/sample/Makefile.am | 14 - .../third_party/libevent/sample/event-test.c | 139 - .../third_party/libevent/sample/signal-test.c | 65 - .../third_party/libevent/sample/time-test.c | 70 - webrtc/base/third_party/libevent/select.c | 364 - webrtc/base/third_party/libevent/signal.c | 377 - webrtc/base/third_party/libevent/stamp-h.in | 1 - webrtc/base/third_party/libevent/strlcpy.c | 76 - .../third_party/libevent/test/Makefile.am | 35 - .../third_party/libevent/test/Makefile.nmake | 47 - webrtc/base/third_party/libevent/test/bench.c | 188 - .../base/third_party/libevent/test/regress.c | 1903 ----- .../third_party/libevent/test/regress.rpc | 20 - .../third_party/libevent/test/regress_dns.c | 376 - .../third_party/libevent/test/regress_http.c | 1744 ----- .../third_party/libevent/test/regress_rpc.c | 631 -- .../base/third_party/libevent/test/test-eof.c | 86 - .../third_party/libevent/test/test-init.c | 40 - .../third_party/libevent/test/test-time.c | 89 - .../third_party/libevent/test/test-weof.c | 84 - webrtc/base/third_party/libevent/test/test.sh | 91 - .../base/third_party/libevent/whatsnew-14.txt | 167 - webrtc/base/third_party/nspr/LICENSE | 35 - webrtc/base/third_party/nspr/OWNERS | 2 - webrtc/base/third_party/nspr/README.chromium | 3 - webrtc/base/third_party/superfasthash/LICENSE | 27 - webrtc/base/third_party/superfasthash/OWNERS | 1 - .../third_party/superfasthash/README.chromium | 29 - .../third_party/superfasthash/superfasthash.c | 84 - webrtc/base/third_party/symbolize/BUILD.gn | 36 - webrtc/base/third_party/symbolize/DEPS | 3 - webrtc/base/third_party/symbolize/LICENSE | 28 - .../third_party/symbolize/README.chromium | 18 - webrtc/base/third_party/valgrind/LICENSE | 39 - .../base/third_party/valgrind/README.chromium | 11 - webrtc/base/third_party/xdg_mime/BUILD.gn | 28 - webrtc/base/third_party/xdg_mime/LICENSE | 168 - webrtc/base/third_party/xdg_mime/README | 8 - .../base/third_party/xdg_mime/README.chromium | 14 - .../base/third_party/xdg_mime/compile.patch | 17 - .../xdg_mime/free_pointer_later.patch | 22 - .../third_party/xdg_mime/function_casts.patch | 44 - webrtc/base/third_party/xdg_mime/xdgmime.c | 933 --- .../base/third_party/xdg_mime/xdgmimealias.c | 184 - .../base/third_party/xdg_mime/xdgmimecache.c | 1069 --- .../base/third_party/xdg_mime/xdgmimeglob.c | 691 -- .../base/third_party/xdg_mime/xdgmimeicon.c | 183 - webrtc/base/third_party/xdg_mime/xdgmimeint.c | 206 - .../base/third_party/xdg_mime/xdgmimemagic.c | 813 -- .../base/third_party/xdg_mime/xdgmimeparent.c | 219 - .../base/third_party/xdg_user_dirs/BUILD.gn | 11 - webrtc/base/third_party/xdg_user_dirs/LICENSE | 21 - .../third_party/xdg_user_dirs/README.chromium | 9 - webrtc/base/thread_annotations_unittest.nc | 71 - webrtc/base/threading/platform_thread_mac.mm | 253 - webrtc/base/time/OWNERS | 4 - webrtc/base/trace_event/OWNERS | 16 - webrtc/base/trace_event/etw_manifest/BUILD.gn | 27 - .../etw_manifest/chrome_events_win.man | 95 - webrtc/base/trace_event/features.gni | 12 - webrtc/base/traits_bag_unittest.nc | 51 - webrtc/base/util/BUILD.gn | 15 - webrtc/base/util/OWNERS | 3 - webrtc/base/util/README.md | 121 - webrtc/base/util/memory_pressure/BUILD.gn | 101 - webrtc/base/util/memory_pressure/OWNERS | 3 - webrtc/base/util/timer/BUILD.gn | 23 - webrtc/base/util/timer/OWNERS | 2 - webrtc/base/util/type_safety/BUILD.gn | 44 - webrtc/base/util/type_safety/DEPS | 5 - webrtc/base/util/type_safety/OWNERS | 2 - .../util/type_safety/pass_key_unittest.nc | 73 - webrtc/base/util/values/BUILD.gn | 22 - webrtc/base/util/values/OWNERS | 2 - webrtc/base/win/.clang-tidy | 26 - webrtc/base/win/BUILD.gn | 34 - webrtc/base/win/OWNERS | 7 - .../win/embedded_i18n/create_string_rc.py | 601 -- .../embedded_i18n/generate_embedded_i18n.gni | 157 - webrtc/base/win/windows_defines.inc | 12 - webrtc/base/win/windows_undefines.inc | 9 - webrtc/call/BUILD.gn | 559 -- webrtc/call/DEPS | 27 - webrtc/call/OWNERS | 4 - webrtc/call/adaptation/BUILD.gn | 94 - webrtc/call/adaptation/OWNERS | 2 - webrtc/common_video/BUILD.gn | 129 - webrtc/common_video/DEPS | 7 - webrtc/common_video/OWNERS | 3 - .../generic_frame_descriptor/BUILD.gn | 26 - .../generic_frame_descriptor/OWNERS | 2 - webrtc/common_video/test/BUILD.gn | 24 - webrtc/logging/BUILD.gn | 436 -- webrtc/logging/OWNERS | 2 - webrtc/logging/rtc_event_log/DEPS | 8 - .../logging/rtc_event_log/rtc_event_log.proto | 415 - .../rtc_event_log/rtc_event_log2.proto | 684 -- webrtc/media/BUILD.gn | 655 -- webrtc/media/DEPS | 24 - webrtc/media/OWNERS | 10 - webrtc/media/sctp/OWNERS | 1 - webrtc/modules/BUILD.gn | 254 - webrtc/modules/audio_coding/BUILD.gn | 2086 ----- webrtc/modules/audio_coding/DEPS | 7 - webrtc/modules/audio_coding/OWNERS | 4 - webrtc/modules/audio_coding/audio_coding.gni | 33 - .../audio_network_adaptor/config.proto | 180 - .../audio_network_adaptor/debug_dump.proto | 42 - .../audio_network_adaptor/parse_ana_dump.py | 147 - .../audio_coding/codecs/g711/g711_interface.c | 59 - .../audio_coding/codecs/g722/g722_interface.c | 104 - .../audio_coding/codecs/ilbc/abs_quant.c | 80 - .../audio_coding/codecs/ilbc/abs_quant_loop.c | 87 - .../codecs/ilbc/augmented_cb_corr.c | 63 - .../audio_coding/codecs/ilbc/bw_expand.c | 42 - .../audio_coding/codecs/ilbc/cb_construct.c | 80 - .../audio_coding/codecs/ilbc/cb_mem_energy.c | 79 - .../codecs/ilbc/cb_mem_energy_augmentation.c | 67 - .../codecs/ilbc/cb_mem_energy_calc.c | 65 - .../audio_coding/codecs/ilbc/cb_search.c | 403 - .../audio_coding/codecs/ilbc/cb_search_core.c | 113 - .../codecs/ilbc/cb_update_best_index.c | 88 - .../audio_coding/codecs/ilbc/chebyshev.c | 74 - .../audio_coding/codecs/ilbc/comp_corr.c | 49 - .../codecs/ilbc/complexityMeasures.m | 57 - .../audio_coding/codecs/ilbc/constants.c | 666 -- .../codecs/ilbc/create_augmented_vec.c | 81 - .../modules/audio_coding/codecs/ilbc/decode.c | 260 - .../codecs/ilbc/decode_residual.c | 185 - .../codecs/ilbc/decoder_interpolate_lsf.c | 83 - .../modules/audio_coding/codecs/ilbc/do_plc.c | 307 - .../modules/audio_coding/codecs/ilbc/encode.c | 516 -- .../audio_coding/codecs/ilbc/energy_inverse.c | 46 - .../audio_coding/codecs/ilbc/enh_upsample.c | 110 - .../audio_coding/codecs/ilbc/enhancer.c | 51 - .../codecs/ilbc/enhancer_interface.c | 377 - .../codecs/ilbc/filtered_cb_vecs.c | 48 - .../audio_coding/codecs/ilbc/frame_classify.c | 88 - .../audio_coding/codecs/ilbc/gain_dequant.c | 45 - .../audio_coding/codecs/ilbc/gain_quant.c | 103 - .../audio_coding/codecs/ilbc/get_cd_vec.c | 126 - .../audio_coding/codecs/ilbc/get_lsp_poly.c | 82 - .../audio_coding/codecs/ilbc/get_sync_seq.c | 109 - .../audio_coding/codecs/ilbc/hp_input.c | 88 - .../audio_coding/codecs/ilbc/hp_output.c | 89 - .../modules/audio_coding/codecs/ilbc/ilbc.c | 286 - .../audio_coding/codecs/ilbc/index_conv_dec.c | 38 - .../audio_coding/codecs/ilbc/index_conv_enc.c | 42 - .../audio_coding/codecs/ilbc/init_decode.c | 96 - .../audio_coding/codecs/ilbc/init_encode.c | 71 - .../audio_coding/codecs/ilbc/interpolate.c | 46 - .../codecs/ilbc/interpolate_samples.c | 51 - .../audio_coding/codecs/ilbc/lpc_encode.c | 60 - .../audio_coding/codecs/ilbc/lsf_check.c | 71 - .../codecs/ilbc/lsf_interpolate_to_poly_dec.c | 42 - .../codecs/ilbc/lsf_interpolate_to_poly_enc.c | 46 - .../audio_coding/codecs/ilbc/lsf_to_lsp.c | 61 - .../audio_coding/codecs/ilbc/lsf_to_poly.c | 86 - .../audio_coding/codecs/ilbc/lsp_to_lsf.c | 84 - .../audio_coding/codecs/ilbc/my_corr.c | 54 - .../codecs/ilbc/nearest_neighbor.c | 35 - .../audio_coding/codecs/ilbc/pack_bits.c | 251 - .../audio_coding/codecs/ilbc/poly_to_lsf.c | 31 - .../audio_coding/codecs/ilbc/poly_to_lsp.c | 158 - .../audio_coding/codecs/ilbc/refiner.c | 140 - .../codecs/ilbc/simple_interpolate_lsf.c | 131 - .../codecs/ilbc/simple_lpc_analysis.c | 94 - .../codecs/ilbc/simple_lsf_dequant.c | 60 - .../codecs/ilbc/simple_lsf_quant.c | 47 - .../modules/audio_coding/codecs/ilbc/smooth.c | 210 - .../codecs/ilbc/smooth_out_data.c | 54 - .../audio_coding/codecs/ilbc/sort_sq.c | 51 - .../audio_coding/codecs/ilbc/split_vq.c | 61 - .../codecs/ilbc/state_construct.c | 114 - .../audio_coding/codecs/ilbc/state_search.c | 119 - .../audio_coding/codecs/ilbc/swap_bytes.c | 35 - .../audio_coding/codecs/ilbc/test/iLBC_test.c | 240 - .../codecs/ilbc/test/iLBC_testLib.c | 215 - .../codecs/ilbc/test/iLBC_testprogram.c | 343 - .../audio_coding/codecs/ilbc/unpack_bits.c | 239 - webrtc/modules/audio_coding/codecs/ilbc/vq3.c | 63 - webrtc/modules/audio_coding/codecs/ilbc/vq4.c | 62 - .../audio_coding/codecs/ilbc/window32_w32.c | 62 - .../audio_coding/codecs/ilbc/xcorr_coef.c | 140 - .../codecs/isac/fix/source/arith_routines.c | 122 - .../isac/fix/source/arith_routines_hist.c | 401 - .../isac/fix/source/arith_routines_logist.c | 413 - .../isac/fix/source/bandwidth_estimator.c | 1021 --- .../codecs/isac/fix/source/decode.c | 221 - .../codecs/isac/fix/source/decode_bwe.c | 69 - .../codecs/isac/fix/source/decode_plc.c | 805 -- .../codecs/isac/fix/source/encode.c | 635 -- .../codecs/isac/fix/source/entropy_coding.c | 2056 ----- .../isac/fix/source/entropy_coding_mips.c | 249 - .../isac/fix/source/entropy_coding_neon.c | 217 - .../audio_coding/codecs/isac/fix/source/fft.c | 415 - .../isac/fix/source/filterbank_tables.c | 62 - .../codecs/isac/fix/source/filterbanks.c | 297 - .../codecs/isac/fix/source/filterbanks_mips.c | 242 - .../codecs/isac/fix/source/filterbanks_neon.c | 278 - .../codecs/isac/fix/source/filters.c | 112 - .../codecs/isac/fix/source/filters_mips.c | 365 - .../codecs/isac/fix/source/filters_neon.c | 114 - .../codecs/isac/fix/source/initialize.c | 173 - .../codecs/isac/fix/source/isacfix.c | 1231 --- .../codecs/isac/fix/source/lattice.c | 321 - .../codecs/isac/fix/source/lattice_armv7.S | 77 - .../codecs/isac/fix/source/lattice_c.c | 48 - .../codecs/isac/fix/source/lattice_mips.c | 329 - .../codecs/isac/fix/source/lattice_neon.c | 195 - .../isac/fix/source/lpc_masking_model.c | 949 --- .../isac/fix/source/lpc_masking_model_mips.c | 237 - .../codecs/isac/fix/source/lpc_tables.c | 1281 ---- .../codecs/isac/fix/source/pitch_estimator.c | 435 -- .../isac/fix/source/pitch_estimator_c.c | 114 - .../isac/fix/source/pitch_estimator_mips.c | 193 - .../codecs/isac/fix/source/pitch_filter.c | 248 - .../isac/fix/source/pitch_filter_armv6.S | 143 - .../codecs/isac/fix/source/pitch_filter_c.c | 73 - .../isac/fix/source/pitch_filter_mips.c | 133 - .../isac/fix/source/pitch_gain_tables.c | 149 - .../codecs/isac/fix/source/pitch_lag_tables.c | 306 - .../fix/source/spectrum_ar_model_tables.c | 193 - .../codecs/isac/fix/source/transform.c | 214 - .../codecs/isac/fix/source/transform_mips.c | 1294 ---- .../codecs/isac/fix/source/transform_neon.c | 479 -- .../codecs/isac/fix/source/transform_tables.c | 110 - .../codecs/isac/main/source/arith_routines.c | 60 - .../isac/main/source/arith_routines_hist.c | 291 - .../isac/main/source/arith_routines_logist.c | 303 - .../isac/main/source/bandwidth_estimator.c | 1013 --- .../codecs/isac/main/source/crc.c | 111 - .../codecs/isac/main/source/decode.c | 303 - .../codecs/isac/main/source/decode_bwe.c | 89 - .../codecs/isac/main/source/encode.c | 1260 --- .../codecs/isac/main/source/encode_lpc_swb.c | 706 -- .../codecs/isac/main/source/entropy_coding.c | 2066 ----- .../isac/main/source/filter_functions.c | 195 - .../codecs/isac/main/source/filterbanks.c | 114 - .../codecs/isac/main/source/intialize.c | 72 - .../codecs/isac/main/source/isac.c | 2307 ------ .../codecs/isac/main/source/isac_vad.c | 409 - .../codecs/isac/main/source/lattice.c | 219 - .../codecs/isac/main/source/lpc_analysis.c | 496 -- .../isac/main/source/lpc_gain_swb_tables.c | 136 - .../isac/main/source/lpc_shape_swb12_tables.c | 158 - .../isac/main/source/lpc_shape_swb16_tables.c | 247 - .../codecs/isac/main/source/lpc_tables.c | 601 -- .../codecs/isac/main/source/pitch_estimator.c | 695 -- .../codecs/isac/main/source/pitch_filter.c | 388 - .../isac/main/source/pitch_gain_tables.c | 104 - .../isac/main/source/pitch_lag_tables.c | 277 - .../main/source/spectrum_ar_model_tables.c | 139 - .../codecs/isac/main/source/transform.c | 126 - .../codecs/isac/main/test/simpleKenny.c | 463 -- .../codecs/isac/main/util/utility.c | 179 - .../audio_coding/codecs/opus/test/BUILD.gn | 55 - .../audio_coding/codecs/pcm16b/pcm16b.c | 32 - .../audio_coding/neteq/neteq_unittest.proto | 32 - .../neteq/test/delay_tool/parse_delay_file.m | 201 - .../neteq/test/delay_tool/plot_neteq_delay.m | 197 - webrtc/modules/audio_coding/neteq/tools/DEPS | 3 - .../audio_coding/neteq/tools/README.md | 17 - .../neteq/tools/neteq_rtpplay_test.sh | 183 - webrtc/modules/audio_device/BUILD.gn | 438 -- webrtc/modules/audio_device/DEPS | 13 - webrtc/modules/audio_device/OWNERS | 2 - .../src/org/webrtc/voiceengine/BuildInfo.java | 51 - .../voiceengine/WebRtcAudioEffects.java | 323 - .../voiceengine/WebRtcAudioManager.java | 377 - .../webrtc/voiceengine/WebRtcAudioRecord.java | 409 - .../webrtc/voiceengine/WebRtcAudioTrack.java | 526 -- .../webrtc/voiceengine/WebRtcAudioUtils.java | 384 - webrtc/modules/audio_mixer/BUILD.gn | 134 - webrtc/modules/audio_mixer/DEPS | 13 - webrtc/modules/audio_mixer/OWNERS | 2 - webrtc/modules/audio_processing/BUILD.gn | 614 -- webrtc/modules/audio_processing/DEPS | 14 - webrtc/modules/audio_processing/OWNERS | 8 - webrtc/modules/audio_processing/aec3/BUILD.gn | 240 - .../audio_processing/aec_dump/BUILD.gn | 110 - webrtc/modules/audio_processing/aecm/BUILD.gn | 44 - webrtc/modules/audio_processing/agc/BUILD.gn | 118 - webrtc/modules/audio_processing/agc2/BUILD.gn | 286 - .../audio_processing/agc2/rnn_vad/BUILD.gn | 142 - .../audio_processing/agc2/rnn_vad/DEPS | 3 - webrtc/modules/audio_processing/debug.proto | 113 - webrtc/modules/audio_processing/ns/BUILD.gn | 102 - .../test/android/apmtest/AndroidManifest.xml | 30 - .../test/android/apmtest/default.properties | 11 - .../test/android/apmtest/jni/main.c | 307 - .../android/apmtest/res/values/strings.xml | 4 - .../modules/audio_processing/test/apmtest.m | 365 - .../test/conversational_speech/BUILD.gn | 73 - .../test/conversational_speech/OWNERS | 3 - .../test/conversational_speech/README.md | 74 - .../test/py_quality_assessment/BUILD.gn | 168 - .../test/py_quality_assessment/OWNERS | 5 - .../test/py_quality_assessment/README.md | 125 - .../apm_configs/default.json | 1 - .../apm_quality_assessment.py | 185 - .../apm_quality_assessment.sh | 91 - .../apm_quality_assessment_boxplot.py | 146 - .../apm_quality_assessment_export.py | 61 - .../apm_quality_assessment_gencfgs.py | 98 - .../apm_quality_assessment_optimize.py | 179 - .../apm_quality_assessment_unittest.py | 33 - .../py_quality_assessment/output/README.md | 1 - .../quality_assessment/__init__.py | 7 - .../quality_assessment/annotations.py | 291 - .../annotations_unittest.py | 157 - .../apm_configs/default.json | 1 - .../quality_assessment/audioproc_wrapper.py | 96 - .../quality_assessment/collect_data.py | 242 - .../quality_assessment/data_access.py | 154 - .../echo_path_simulation.py | 136 - .../echo_path_simulation_factory.py | 48 - .../echo_path_simulation_unittest.py | 81 - .../quality_assessment/eval_scores.py | 411 - .../quality_assessment/eval_scores_factory.py | 55 - .../eval_scores_unittest.py | 133 - .../quality_assessment/evaluation.py | 56 - .../quality_assessment/exceptions.py | 46 - .../quality_assessment/export.py | 402 - .../quality_assessment/export_unittest.py | 86 - .../quality_assessment/external_vad.py | 77 - .../quality_assessment/fake_external_vad.py | 24 - .../quality_assessment/input_mixer.py | 95 - .../input_mixer_unittest.py | 149 - .../input_signal_creator.py | 67 - .../quality_assessment/results.css | 32 - .../quality_assessment/results.js | 376 - .../quality_assessment/signal_processing.py | 356 - .../signal_processing_unittest.py | 186 - .../quality_assessment/simulation.py | 426 -- .../quality_assessment/simulation_unittest.py | 209 - .../test_data_generation.py | 511 -- .../test_data_generation_factory.py | 71 - .../test_data_generation_unittest.py | 206 - .../audio_processing/test/unittest.proto | 48 - .../audio_processing/transient/BUILD.gn | 112 - .../transient/test/plotDetection.m | 22 - .../transient/test/readDetection.m | 26 - .../audio_processing/transient/test/readPCM.m | 26 - .../modules/audio_processing/utility/BUILD.gn | 81 - webrtc/modules/audio_processing/utility/DEPS | 3 - webrtc/modules/audio_processing/vad/BUILD.gn | 69 - webrtc/modules/congestion_controller/BUILD.gn | 58 - webrtc/modules/congestion_controller/DEPS | 5 - webrtc/modules/congestion_controller/OWNERS | 7 - .../congestion_controller/goog_cc/BUILD.gn | 292 - .../congestion_controller/pcc/BUILD.gn | 128 - .../congestion_controller/rtp/BUILD.gn | 95 - webrtc/modules/desktop_capture/BUILD.gn | 538 -- webrtc/modules/desktop_capture/DEPS | 19 - webrtc/modules/desktop_capture/OWNERS | 2 - .../desktop_capture/linux/pipewire.sigs | 44 - .../linux/pipewire_stub_header.fragment | 8 - .../mac/desktop_configuration.mm | 187 - .../mac/desktop_frame_cgimage.mm | 102 - .../mac/desktop_frame_iosurface.mm | 61 - .../mac/desktop_frame_provider.mm | 70 - .../mac/screen_capturer_mac.mm | 548 -- .../mouse_cursor_monitor_mac.mm | 214 - .../desktop_capture/screen_capturer_darwin.mm | 33 - .../win/cursor_test_data/1_24bpp.cur | Bin 3262 -> 0 bytes .../win/cursor_test_data/1_32bpp.cur | Bin 4286 -> 0 bytes .../win/cursor_test_data/1_8bpp.cur | Bin 2238 -> 0 bytes .../win/cursor_test_data/2_1bpp.cur | Bin 326 -> 0 bytes .../win/cursor_test_data/2_32bpp.cur | Bin 4286 -> 0 bytes .../win/cursor_test_data/3_32bpp.cur | Bin 4286 -> 0 bytes .../win/cursor_test_data/3_4bpp.cur | Bin 766 -> 0 bytes .../win/cursor_unittest_resources.rc | 28 - .../desktop_capture/window_capturer_mac.mm | 198 - .../desktop_capture/window_finder_mac.mm | 52 - webrtc/modules/pacing/BUILD.gn | 110 - webrtc/modules/pacing/DEPS | 6 - webrtc/modules/pacing/OWNERS | 6 - .../modules/remote_bitrate_estimator/BUILD.gn | 129 - webrtc/modules/remote_bitrate_estimator/DEPS | 6 - .../modules/remote_bitrate_estimator/OWNERS | 6 - webrtc/modules/rtp_rtcp/BUILD.gn | 550 -- webrtc/modules/rtp_rtcp/DEPS | 8 - webrtc/modules/rtp_rtcp/OWNERS | 6 - webrtc/modules/third_party/fft/BUILD.gn | 16 - webrtc/modules/third_party/fft/LICENSE | 25 - .../modules/third_party/fft/README.chromium | 12 - webrtc/modules/third_party/fft/fft.c | 942 --- webrtc/modules/third_party/g711/BUILD.gn | 17 - webrtc/modules/third_party/g711/LICENSE | 14 - .../modules/third_party/g711/README.chromium | 11 - webrtc/modules/third_party/g711/g711.c | 72 - webrtc/modules/third_party/g722/BUILD.gn | 18 - webrtc/modules/third_party/g722/LICENSE | 20 - .../modules/third_party/g722/README.chromium | 11 - webrtc/modules/third_party/g722/g722_decode.c | 399 - webrtc/modules/third_party/g722/g722_encode.c | 429 -- webrtc/modules/third_party/portaudio/BUILD.gn | 18 - webrtc/modules/third_party/portaudio/LICENSE | 91 - .../third_party/portaudio/README.chromium | 12 - .../third_party/portaudio/pa_ringbuffer.c | 237 - webrtc/modules/utility/BUILD.gn | 68 - webrtc/modules/utility/DEPS | 5 - webrtc/modules/utility/OWNERS | 1 - webrtc/modules/video_capture/BUILD.gn | 143 - webrtc/modules/video_capture/DEPS | 6 - webrtc/modules/video_capture/OWNERS | 3 - webrtc/modules/video_coding/BUILD.gn | 967 --- webrtc/modules/video_coding/DEPS | 23 - webrtc/modules/video_coding/OWNERS | 7 - .../modules/video_coding/codecs/av1/BUILD.gn | 88 - webrtc/modules/video_coding/codecs/av1/DEPS | 3 - webrtc/modules/video_coding/codecs/h264/DEPS | 5 - .../modules/video_coding/codecs/h264/OWNERS | 2 - .../codecs/test/batch/empty-runtime-deps | 1 - .../test/batch/run-instantiation-tests.sh | 56 - .../test/batch/run-videoprocessor-tests.sh | 70 - .../codecs/test/objc_codec_factory_helper.mm | 30 - .../codecs/test/plot_webrtc_test_logs.py | 430 -- webrtc/modules/video_coding/codecs/vp9/DEPS | 3 - webrtc/modules/video_processing/BUILD.gn | 112 - webrtc/modules/video_processing/DEPS | 6 - webrtc/modules/video_processing/OWNERS | 2 - webrtc/p2p/BUILD.gn | 284 - webrtc/p2p/DEPS | 5 - webrtc/p2p/OWNERS | 9 - webrtc/pc/BUILD.gn | 682 -- webrtc/pc/DEPS | 25 - webrtc/pc/OWNERS | 6 - webrtc/pc/scenario_tests/BUILD.gn | 25 - webrtc/pc/test/DEPS | 6 - webrtc/rtc_base/BUILD.gn | 1390 ---- webrtc/rtc_base/DEPS | 15 - webrtc/rtc_base/OWNERS | 10 - webrtc/rtc_base/callback.h.pump | 104 - webrtc/rtc_base/experiments/BUILD.gn | 261 - webrtc/rtc_base/experiments/DEPS | 3 - webrtc/rtc_base/experiments/OWNERS | 16 - .../java/src/org/webrtc/ContextUtils.java | 45 - .../java/src/org/webrtc/Loggable.java | 22 - .../rtc_base/java/src/org/webrtc/Logging.java | 201 - webrtc/rtc_base/java/src/org/webrtc/OWNERS | 2 - webrtc/rtc_base/java/src/org/webrtc/Size.java | 45 - .../java/src/org/webrtc/ThreadUtils.java | 212 - webrtc/rtc_base/memory/BUILD.gn | 48 - webrtc/rtc_base/network/BUILD.gn | 20 - webrtc/rtc_base/sigslottester.h.pump | 102 - webrtc/rtc_base/synchronization/BUILD.gn | 85 - webrtc/rtc_base/system/BUILD.gn | 95 - webrtc/rtc_base/system/DEPS | 8 - webrtc/rtc_base/system/cocoa_threading.mm | 24 - webrtc/rtc_base/system/gcd_helpers.m | 22 - webrtc/rtc_base/task_utils/BUILD.gn | 87 - webrtc/rtc_base/third_party/base64/BUILD.gn | 18 - webrtc/rtc_base/third_party/base64/LICENSE | 14 - .../third_party/base64/README.chromium | 11 - webrtc/rtc_base/third_party/sigslot/BUILD.gn | 17 - webrtc/rtc_base/third_party/sigslot/LICENSE | 7 - .../third_party/sigslot/README.chromium | 20 - webrtc/rtc_base/time/BUILD.gn | 21 - webrtc/rtc_base/units/BUILD.gn | 33 - webrtc/rtc_base/units/OWNERS | 1 - webrtc/system_wrappers/BUILD.gn | 161 - webrtc/system_wrappers/DEPS | 3 - webrtc/system_wrappers/OWNERS | 3 - .../source/cpu_features_android.c | 15 - .../source/cpu_features_linux.c | 87 - 4689 files changed, 138950 insertions(+), 193479 deletions(-) rename {webrtc => include}/absl/algorithm/algorithm.h (100%) rename {webrtc => include}/absl/algorithm/container.h (100%) rename {webrtc => include}/absl/base/attributes.h (100%) rename {webrtc => include}/absl/base/call_once.h (100%) rename {webrtc => include}/absl/base/casts.h (100%) rename {webrtc => include}/absl/base/config.h (100%) rename {webrtc => include}/absl/base/const_init.h (100%) rename {webrtc => include}/absl/base/dynamic_annotations.h (100%) rename {webrtc => include}/absl/base/internal/atomic_hook.h (100%) rename {webrtc => include}/absl/base/internal/atomic_hook_test_helper.h (100%) rename {webrtc => include}/absl/base/internal/bits.h (100%) rename {webrtc => include}/absl/base/internal/cycleclock.h (100%) rename {webrtc => include}/absl/base/internal/direct_mmap.h (100%) rename {webrtc => include}/absl/base/internal/endian.h (100%) rename {webrtc => include}/absl/base/internal/errno_saver.h (100%) rename {webrtc => include}/absl/base/internal/exception_safety_testing.h (100%) rename {webrtc => include}/absl/base/internal/exception_testing.h (100%) rename {webrtc => include}/absl/base/internal/exponential_biased.h (100%) rename {webrtc => include}/absl/base/internal/fast_type_id.h (100%) rename {webrtc => include}/absl/base/internal/hide_ptr.h (100%) rename {webrtc => include}/absl/base/internal/identity.h (100%) rename {webrtc => include}/absl/base/internal/inline_variable.h (100%) rename {webrtc => include}/absl/base/internal/inline_variable_testing.h (100%) rename {webrtc => include}/absl/base/internal/invoke.h (100%) rename {webrtc => include}/absl/base/internal/low_level_alloc.h (100%) rename {webrtc => include}/absl/base/internal/low_level_scheduling.h (100%) rename {webrtc => include}/absl/base/internal/per_thread_tls.h (100%) rename {webrtc => include}/absl/base/internal/periodic_sampler.h (100%) rename {webrtc => include}/absl/base/internal/pretty_function.h (100%) rename {webrtc => include}/absl/base/internal/raw_logging.h (100%) rename {webrtc => include}/absl/base/internal/scheduling_mode.h (100%) rename {webrtc => include}/absl/base/internal/scoped_set_env.h (100%) rename {webrtc => include}/absl/base/internal/spinlock.h (100%) rename {webrtc => include}/absl/base/internal/spinlock_wait.h (100%) rename {webrtc => include}/absl/base/internal/strerror.h (100%) rename {webrtc => include}/absl/base/internal/sysinfo.h (100%) rename {webrtc => include}/absl/base/internal/thread_identity.h (100%) rename {webrtc => include}/absl/base/internal/throw_delegate.h (100%) rename {webrtc => include}/absl/base/internal/tsan_mutex_interface.h (100%) rename {webrtc => include}/absl/base/internal/unaligned_access.h (100%) rename {webrtc => include}/absl/base/internal/unscaledcycleclock.h (100%) rename {webrtc => include}/absl/base/log_severity.h (100%) rename {webrtc => include}/absl/base/macros.h (100%) rename {webrtc => include}/absl/base/optimization.h (100%) rename {webrtc => include}/absl/base/options.h (100%) rename {webrtc => include}/absl/base/policy_checks.h (100%) rename {webrtc => include}/absl/base/port.h (100%) rename {webrtc => include}/absl/base/thread_annotations.h (100%) rename {webrtc => include}/absl/container/btree_map.h (100%) rename {webrtc => include}/absl/container/btree_set.h (100%) rename {webrtc => include}/absl/container/btree_test.h (100%) rename {webrtc => include}/absl/container/fixed_array.h (100%) rename {webrtc => include}/absl/container/flat_hash_map.h (100%) rename {webrtc => include}/absl/container/flat_hash_set.h (100%) rename {webrtc => include}/absl/container/inlined_vector.h (100%) rename {webrtc => include}/absl/container/internal/btree.h (100%) rename {webrtc => include}/absl/container/internal/btree_container.h (100%) rename {webrtc => include}/absl/container/internal/common.h (100%) rename {webrtc => include}/absl/container/internal/compressed_tuple.h (100%) rename {webrtc => include}/absl/container/internal/container_memory.h (100%) rename {webrtc => include}/absl/container/internal/counting_allocator.h (100%) rename {webrtc => include}/absl/container/internal/hash_function_defaults.h (100%) rename {webrtc => include}/absl/container/internal/hash_generator_testing.h (100%) rename {webrtc => include}/absl/container/internal/hash_policy_testing.h (100%) rename {webrtc => include}/absl/container/internal/hash_policy_traits.h (100%) rename {webrtc => include}/absl/container/internal/hashtable_debug.h (100%) rename {webrtc => include}/absl/container/internal/hashtable_debug_hooks.h (100%) rename {webrtc => include}/absl/container/internal/hashtablez_sampler.h (100%) rename {webrtc => include}/absl/container/internal/have_sse.h (100%) rename {webrtc => include}/absl/container/internal/inlined_vector.h (100%) rename {webrtc => include}/absl/container/internal/layout.h (100%) rename {webrtc => include}/absl/container/internal/node_hash_policy.h (100%) rename {webrtc => include}/absl/container/internal/raw_hash_map.h (100%) rename {webrtc => include}/absl/container/internal/raw_hash_set.h (100%) rename {webrtc => include}/absl/container/internal/test_instance_tracker.h (100%) rename {webrtc => include}/absl/container/internal/tracked.h (100%) rename {webrtc => include}/absl/container/internal/unordered_map_constructor_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_map_lookup_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_map_members_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_map_modifiers_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_set_constructor_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_set_lookup_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_set_members_test.h (100%) rename {webrtc => include}/absl/container/internal/unordered_set_modifiers_test.h (100%) rename {webrtc => include}/absl/container/node_hash_map.h (100%) rename {webrtc => include}/absl/container/node_hash_set.h (100%) rename {webrtc => include}/absl/debugging/failure_signal_handler.h (100%) rename {webrtc => include}/absl/debugging/internal/address_is_readable.h (100%) rename {webrtc => include}/absl/debugging/internal/demangle.h (100%) rename {webrtc => include}/absl/debugging/internal/elf_mem_image.h (100%) rename {webrtc => include}/absl/debugging/internal/examine_stack.h (100%) rename {webrtc => include}/absl/debugging/internal/stack_consumption.h (100%) rename {webrtc => include}/absl/debugging/internal/stacktrace_config.h (100%) rename {webrtc => include}/absl/debugging/internal/symbolize.h (100%) rename {webrtc => include}/absl/debugging/internal/vdso_support.h (100%) rename {webrtc => include}/absl/debugging/leak_check.h (100%) rename {webrtc => include}/absl/debugging/stacktrace.h (100%) rename {webrtc => include}/absl/debugging/symbolize.h (100%) rename {webrtc => include}/absl/flags/config.h (100%) rename {webrtc => include}/absl/flags/declare.h (100%) rename {webrtc => include}/absl/flags/flag.h (100%) rename {webrtc => include}/absl/flags/internal/commandlineflag.h (100%) rename {webrtc => include}/absl/flags/internal/flag.h (100%) rename {webrtc => include}/absl/flags/internal/parse.h (100%) rename {webrtc => include}/absl/flags/internal/path_util.h (100%) rename {webrtc => include}/absl/flags/internal/private_handle_accessor.h (100%) rename {webrtc => include}/absl/flags/internal/program_name.h (100%) rename {webrtc => include}/absl/flags/internal/registry.h (100%) rename {webrtc => include}/absl/flags/internal/type_erased.h (100%) rename {webrtc => include}/absl/flags/internal/usage.h (100%) rename {webrtc => include}/absl/flags/marshalling.h (100%) rename {webrtc => include}/absl/flags/parse.h (100%) rename {webrtc => include}/absl/flags/usage.h (100%) rename {webrtc => include}/absl/flags/usage_config.h (100%) rename {webrtc => include}/absl/functional/bind_front.h (100%) rename {webrtc => include}/absl/functional/function_ref.h (100%) rename {webrtc => include}/absl/functional/internal/front_binder.h (100%) rename {webrtc => include}/absl/functional/internal/function_ref.h (100%) rename {webrtc => include}/absl/hash/hash.h (100%) rename {webrtc => include}/absl/hash/hash_testing.h (100%) rename {webrtc => include}/absl/hash/internal/city.h (100%) rename {webrtc => include}/absl/hash/internal/hash.h (100%) rename {webrtc => include}/absl/hash/internal/spy_hash_state.h (100%) rename {webrtc => include}/absl/memory/memory.h (100%) rename {webrtc => include}/absl/meta/type_traits.h (100%) rename {webrtc => include}/absl/numeric/int128.h (100%) rename {webrtc => include}/absl/random/bernoulli_distribution.h (100%) rename {webrtc => include}/absl/random/beta_distribution.h (100%) rename {webrtc => include}/absl/random/bit_gen_ref.h (100%) rename {webrtc => include}/absl/random/discrete_distribution.h (100%) rename {webrtc => include}/absl/random/distributions.h (100%) rename {webrtc => include}/absl/random/exponential_distribution.h (100%) rename {webrtc => include}/absl/random/gaussian_distribution.h (100%) rename {webrtc => include}/absl/random/internal/chi_square.h (100%) rename {webrtc => include}/absl/random/internal/distribution_caller.h (100%) rename {webrtc => include}/absl/random/internal/distribution_test_util.h (100%) rename {webrtc => include}/absl/random/internal/distributions.h (100%) rename {webrtc => include}/absl/random/internal/explicit_seed_seq.h (100%) rename {webrtc => include}/absl/random/internal/fast_uniform_bits.h (100%) rename {webrtc => include}/absl/random/internal/fastmath.h (100%) rename {webrtc => include}/absl/random/internal/generate_real.h (100%) rename {webrtc => include}/absl/random/internal/iostream_state_saver.h (100%) rename {webrtc => include}/absl/random/internal/mock_overload_set.h (100%) rename {webrtc => include}/absl/random/internal/mocking_bit_gen_base.h (100%) rename {webrtc => include}/absl/random/internal/nanobenchmark.h (100%) rename {webrtc => include}/absl/random/internal/nonsecure_base.h (100%) rename {webrtc => include}/absl/random/internal/pcg_engine.h (100%) rename {webrtc => include}/absl/random/internal/platform.h (100%) rename {webrtc => include}/absl/random/internal/pool_urbg.h (100%) rename {webrtc => include}/absl/random/internal/randen.h (100%) rename {webrtc => include}/absl/random/internal/randen_detect.h (100%) rename {webrtc => include}/absl/random/internal/randen_engine.h (100%) rename {webrtc => include}/absl/random/internal/randen_hwaes.h (100%) rename {webrtc => include}/absl/random/internal/randen_slow.h (100%) rename {webrtc => include}/absl/random/internal/randen_traits.h (100%) rename {webrtc => include}/absl/random/internal/salted_seed_seq.h (100%) rename {webrtc => include}/absl/random/internal/seed_material.h (100%) rename {webrtc => include}/absl/random/internal/sequence_urbg.h (100%) rename {webrtc => include}/absl/random/internal/traits.h (100%) rename {webrtc => include}/absl/random/internal/uniform_helper.h (100%) rename {webrtc => include}/absl/random/internal/wide_multiply.h (100%) rename {webrtc => include}/absl/random/log_uniform_int_distribution.h (100%) rename {webrtc => include}/absl/random/mock_distributions.h (100%) rename {webrtc => include}/absl/random/mocking_bit_gen.h (100%) rename {webrtc => include}/absl/random/poisson_distribution.h (100%) rename {webrtc => include}/absl/random/random.h (100%) rename {webrtc => include}/absl/random/seed_gen_exception.h (100%) rename {webrtc => include}/absl/random/seed_sequences.h (100%) rename {webrtc => include}/absl/random/uniform_int_distribution.h (100%) rename {webrtc => include}/absl/random/uniform_real_distribution.h (100%) rename {webrtc => include}/absl/random/zipf_distribution.h (100%) rename {webrtc => include}/absl/status/status.h (100%) rename {webrtc => include}/absl/status/status_payload_printer.h (100%) rename {webrtc => include}/absl/strings/ascii.h (100%) rename {webrtc => include}/absl/strings/charconv.h (100%) rename {webrtc => include}/absl/strings/cord.h (100%) rename {webrtc => include}/absl/strings/cord_test_helpers.h (100%) rename {webrtc => include}/absl/strings/escaping.h (100%) rename {webrtc => include}/absl/strings/internal/char_map.h (100%) rename {webrtc => include}/absl/strings/internal/charconv_bigint.h (100%) rename {webrtc => include}/absl/strings/internal/charconv_parse.h (100%) rename {webrtc => include}/absl/strings/internal/cord_internal.h (100%) rename {webrtc => include}/absl/strings/internal/escaping.h (100%) rename {webrtc => include}/absl/strings/internal/escaping_test_common.h (100%) rename {webrtc => include}/absl/strings/internal/memutil.h (100%) rename {webrtc => include}/absl/strings/internal/numbers_test_common.h (100%) rename {webrtc => include}/absl/strings/internal/ostringstream.h (100%) rename {webrtc => include}/absl/strings/internal/pow10_helper.h (100%) rename {webrtc => include}/absl/strings/internal/resize_uninitialized.h (100%) rename {webrtc => include}/absl/strings/internal/stl_type_traits.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/arg.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/bind.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/checker.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/extension.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/float_conversion.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/output.h (100%) rename {webrtc => include}/absl/strings/internal/str_format/parser.h (100%) rename {webrtc => include}/absl/strings/internal/str_join_internal.h (100%) rename {webrtc => include}/absl/strings/internal/str_split_internal.h (100%) rename {webrtc => include}/absl/strings/internal/utf8.h (100%) rename {webrtc => include}/absl/strings/match.h (100%) rename {webrtc => include}/absl/strings/numbers.h (100%) rename {webrtc => include}/absl/strings/str_cat.h (100%) rename {webrtc => include}/absl/strings/str_format.h (100%) rename {webrtc => include}/absl/strings/str_join.h (100%) rename {webrtc => include}/absl/strings/str_replace.h (100%) rename {webrtc => include}/absl/strings/str_split.h (100%) rename {webrtc => include}/absl/strings/string_view.h (100%) rename {webrtc => include}/absl/strings/strip.h (100%) rename {webrtc => include}/absl/strings/substitute.h (100%) rename {webrtc => include}/absl/synchronization/barrier.h (100%) rename {webrtc => include}/absl/synchronization/blocking_counter.h (100%) rename {webrtc => include}/absl/synchronization/internal/create_thread_identity.h (100%) rename {webrtc => include}/absl/synchronization/internal/graphcycles.h (100%) rename {webrtc => include}/absl/synchronization/internal/kernel_timeout.h (100%) rename {webrtc => include}/absl/synchronization/internal/per_thread_sem.h (100%) rename {webrtc => include}/absl/synchronization/internal/thread_pool.h (100%) rename {webrtc => include}/absl/synchronization/internal/waiter.h (100%) rename {webrtc => include}/absl/synchronization/mutex.h (100%) rename {webrtc => include}/absl/synchronization/notification.h (100%) rename {webrtc => include}/absl/time/civil_time.h (100%) rename {webrtc => include}/absl/time/clock.h (100%) rename {webrtc => include}/absl/time/internal/cctz/include/cctz/civil_time.h (100%) rename {webrtc => include}/absl/time/internal/cctz/include/cctz/civil_time_detail.h (100%) rename {webrtc => include}/absl/time/internal/cctz/include/cctz/time_zone.h (100%) rename {webrtc => include}/absl/time/internal/cctz/include/cctz/zone_info_source.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/time_zone_fixed.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/time_zone_if.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/time_zone_impl.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/time_zone_info.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/time_zone_libc.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/time_zone_posix.h (100%) rename {webrtc => include}/absl/time/internal/cctz/src/tzfile.h (100%) rename {webrtc => include}/absl/time/internal/test_util.h (100%) rename {webrtc => include}/absl/time/time.h (100%) rename {webrtc => include}/absl/types/any.h (100%) rename {webrtc => include}/absl/types/bad_any_cast.h (100%) rename {webrtc => include}/absl/types/bad_optional_access.h (100%) rename {webrtc => include}/absl/types/bad_variant_access.h (100%) rename {webrtc => include}/absl/types/compare.h (100%) rename {webrtc => include}/absl/types/internal/conformance_aliases.h (100%) rename {webrtc => include}/absl/types/internal/conformance_archetype.h (100%) rename {webrtc => include}/absl/types/internal/conformance_profile.h (100%) rename {webrtc => include}/absl/types/internal/conformance_testing.h (100%) rename {webrtc => include}/absl/types/internal/conformance_testing_helpers.h (100%) rename {webrtc => include}/absl/types/internal/optional.h (100%) rename {webrtc => include}/absl/types/internal/parentheses.h (100%) rename {webrtc => include}/absl/types/internal/span.h (100%) rename {webrtc => include}/absl/types/internal/transform_args.h (100%) rename {webrtc => include}/absl/types/internal/variant.h (100%) rename {webrtc => include}/absl/types/optional.h (100%) rename {webrtc => include}/absl/types/span.h (100%) rename {webrtc => include}/absl/types/variant.h (100%) rename {webrtc => include}/absl/utility/utility.h (100%) rename {webrtc/third_party => include}/json/allocator.h (100%) rename {webrtc/third_party => include}/json/assertions.h (100%) rename {webrtc/third_party => include}/json/autolink.h (100%) rename {webrtc/third_party => include}/json/config.h (100%) rename {webrtc/third_party => include}/json/features.h (100%) rename {webrtc/third_party => include}/json/forwards.h (100%) rename {webrtc/third_party => include}/json/json.h (100%) rename {webrtc/third_party => include}/json/reader.h (100%) rename {webrtc/third_party => include}/json/value.h (100%) rename {webrtc/third_party => include}/json/version.h (100%) rename {webrtc/third_party => include}/json/writer.h (100%) create mode 100644 include/libc++/CMakeLists.txt create mode 100644 include/libc++/__bit_reference create mode 100644 include/libc++/__bsd_locale_defaults.h create mode 100644 include/libc++/__bsd_locale_fallbacks.h create mode 100644 include/libc++/__config create mode 100644 include/libc++/__config_site.in create mode 100644 include/libc++/__debug create mode 100644 include/libc++/__errc create mode 100644 include/libc++/__functional_03 create mode 100644 include/libc++/__functional_base create mode 100644 include/libc++/__functional_base_03 create mode 100644 include/libc++/__hash_table create mode 100644 include/libc++/__libcpp_version create mode 100644 include/libc++/__locale create mode 100644 include/libc++/__mutex_base create mode 100644 include/libc++/__node_handle create mode 100644 include/libc++/__nullptr create mode 100644 include/libc++/__split_buffer create mode 100644 include/libc++/__sso_allocator create mode 100644 include/libc++/__std_stream create mode 100644 include/libc++/__string create mode 100644 include/libc++/__threading_support create mode 100644 include/libc++/__tree create mode 100644 include/libc++/__tuple create mode 100644 include/libc++/__undef_macros create mode 100644 include/libc++/algorithm create mode 100644 include/libc++/any create mode 100644 include/libc++/array create mode 100644 include/libc++/atomic create mode 100644 include/libc++/bit create mode 100644 include/libc++/bitset create mode 100644 include/libc++/cassert create mode 100644 include/libc++/ccomplex create mode 100644 include/libc++/cctype create mode 100644 include/libc++/cerrno create mode 100644 include/libc++/cfenv create mode 100644 include/libc++/cfloat create mode 100644 include/libc++/charconv create mode 100644 include/libc++/chrono create mode 100644 include/libc++/cinttypes create mode 100644 include/libc++/ciso646 create mode 100644 include/libc++/climits create mode 100644 include/libc++/clocale create mode 100644 include/libc++/cmath create mode 100644 include/libc++/codecvt create mode 100644 include/libc++/compare create mode 100644 include/libc++/complex create mode 100644 include/libc++/complex.h create mode 100644 include/libc++/condition_variable create mode 100644 include/libc++/csetjmp create mode 100644 include/libc++/csignal create mode 100644 include/libc++/cstdarg create mode 100644 include/libc++/cstdbool create mode 100644 include/libc++/cstddef create mode 100644 include/libc++/cstdint create mode 100644 include/libc++/cstdio create mode 100644 include/libc++/cstdlib create mode 100644 include/libc++/cstring create mode 100644 include/libc++/ctgmath create mode 100644 include/libc++/ctime create mode 100644 include/libc++/ctype.h create mode 100644 include/libc++/cwchar create mode 100644 include/libc++/cwctype create mode 100644 include/libc++/deque create mode 100644 include/libc++/errno.h create mode 100644 include/libc++/exception create mode 100644 include/libc++/execution create mode 100644 include/libc++/experimental/__config create mode 100644 include/libc++/experimental/__memory create mode 100644 include/libc++/experimental/algorithm create mode 100644 include/libc++/experimental/coroutine create mode 100644 include/libc++/experimental/deque create mode 100644 include/libc++/experimental/filesystem create mode 100644 include/libc++/experimental/forward_list create mode 100644 include/libc++/experimental/functional create mode 100644 include/libc++/experimental/iterator create mode 100644 include/libc++/experimental/list create mode 100644 include/libc++/experimental/map create mode 100644 include/libc++/experimental/memory_resource create mode 100644 include/libc++/experimental/propagate_const create mode 100644 include/libc++/experimental/regex create mode 100644 include/libc++/experimental/set create mode 100644 include/libc++/experimental/simd create mode 100644 include/libc++/experimental/string create mode 100644 include/libc++/experimental/type_traits create mode 100644 include/libc++/experimental/unordered_map create mode 100644 include/libc++/experimental/unordered_set create mode 100644 include/libc++/experimental/utility create mode 100644 include/libc++/experimental/vector create mode 100644 include/libc++/ext/__hash create mode 100644 include/libc++/ext/hash_map create mode 100644 include/libc++/ext/hash_set create mode 100644 include/libc++/fenv.h create mode 100644 include/libc++/filesystem create mode 100644 include/libc++/float.h create mode 100644 include/libc++/forward_list create mode 100644 include/libc++/fstream create mode 100644 include/libc++/functional create mode 100644 include/libc++/future create mode 100644 include/libc++/initializer_list create mode 100644 include/libc++/inttypes.h create mode 100644 include/libc++/iomanip create mode 100644 include/libc++/ios create mode 100644 include/libc++/iosfwd create mode 100644 include/libc++/iostream create mode 100644 include/libc++/istream create mode 100644 include/libc++/iterator create mode 100644 include/libc++/limits create mode 100644 include/libc++/limits.h create mode 100644 include/libc++/list create mode 100644 include/libc++/locale create mode 100644 include/libc++/locale.h create mode 100644 include/libc++/map create mode 100644 include/libc++/math.h create mode 100644 include/libc++/memory create mode 100644 include/libc++/module.modulemap create mode 100644 include/libc++/mutex create mode 100644 include/libc++/new create mode 100644 include/libc++/numeric create mode 100644 include/libc++/optional create mode 100644 include/libc++/ostream create mode 100644 include/libc++/queue create mode 100644 include/libc++/random create mode 100644 include/libc++/ratio create mode 100644 include/libc++/regex create mode 100644 include/libc++/scoped_allocator create mode 100644 include/libc++/set create mode 100644 include/libc++/setjmp.h create mode 100644 include/libc++/shared_mutex create mode 100644 include/libc++/span create mode 100644 include/libc++/sstream create mode 100644 include/libc++/stack create mode 100644 include/libc++/stdbool.h create mode 100644 include/libc++/stddef.h create mode 100644 include/libc++/stdexcept create mode 100644 include/libc++/stdint.h create mode 100644 include/libc++/stdio.h create mode 100644 include/libc++/stdlib.h create mode 100644 include/libc++/streambuf create mode 100644 include/libc++/string create mode 100644 include/libc++/string.h create mode 100644 include/libc++/string_view create mode 100644 include/libc++/strstream create mode 100644 include/libc++/support/android/locale_bionic.h create mode 100644 include/libc++/support/fuchsia/xlocale.h create mode 100644 include/libc++/support/ibm/limits.h create mode 100644 include/libc++/support/ibm/locale_mgmt_aix.h create mode 100644 include/libc++/support/ibm/support.h create mode 100644 include/libc++/support/ibm/xlocale.h create mode 100644 include/libc++/support/musl/xlocale.h create mode 100644 include/libc++/support/newlib/xlocale.h create mode 100644 include/libc++/support/solaris/floatingpoint.h create mode 100644 include/libc++/support/solaris/wchar.h create mode 100644 include/libc++/support/solaris/xlocale.h create mode 100644 include/libc++/support/win32/limits_msvc_win32.h create mode 100644 include/libc++/support/win32/locale_win32.h create mode 100644 include/libc++/support/xlocale/__nop_locale_mgmt.h create mode 100644 include/libc++/support/xlocale/__posix_l_fallback.h create mode 100644 include/libc++/support/xlocale/__strtonum_fallback.h create mode 100644 include/libc++/system_error create mode 100644 include/libc++/tgmath.h create mode 100644 include/libc++/thread create mode 100644 include/libc++/tuple create mode 100644 include/libc++/type_traits create mode 100644 include/libc++/typeindex create mode 100644 include/libc++/typeinfo create mode 100644 include/libc++/unordered_map create mode 100644 include/libc++/unordered_set create mode 100644 include/libc++/utility create mode 100644 include/libc++/valarray create mode 100644 include/libc++/variant create mode 100644 include/libc++/vector create mode 100644 include/libc++/version create mode 100644 include/libc++/wchar.h create mode 100644 include/libc++/wctype.h create mode 100644 include/libc++abi/__cxxabi_config.h create mode 100644 include/libc++abi/cxxabi.h rename {webrtc => include/webrtc}/api/array_view.h (100%) rename {webrtc => include/webrtc}/api/async_resolver_factory.h (100%) rename {webrtc => include/webrtc}/api/audio/audio_frame.h (100%) rename {webrtc => include/webrtc}/api/audio/audio_mixer.h (100%) rename {webrtc => include/webrtc}/api/audio/channel_layout.h (100%) rename {webrtc => include/webrtc}/api/audio/echo_canceller3_config.h (100%) rename {webrtc => include/webrtc}/api/audio/echo_canceller3_config_json.h (100%) rename {webrtc => include/webrtc}/api/audio/echo_canceller3_factory.h (100%) rename {webrtc => include/webrtc}/api/audio/echo_control.h (100%) rename {webrtc => include/webrtc}/api/audio/echo_detector_creator.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/L16/audio_decoder_L16.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/L16/audio_encoder_L16.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_codec_pair_id.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_decoder.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_decoder_factory_template.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_encoder.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_encoder_factory_template.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/audio_format.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/builtin_audio_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/builtin_audio_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/g711/audio_decoder_g711.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/g711/audio_encoder_g711.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/g722/audio_decoder_g722.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/g722/audio_encoder_g722.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/g722/audio_encoder_g722_config.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/ilbc/audio_decoder_ilbc.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/ilbc/audio_encoder_ilbc.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/ilbc/audio_encoder_ilbc_config.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/isac/audio_decoder_isac.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/isac/audio_decoder_isac_fix.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/isac/audio_decoder_isac_float.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/isac/audio_encoder_isac.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/isac/audio_encoder_isac_fix.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/isac/audio_encoder_isac_float.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_decoder_multi_channel_opus.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_decoder_multi_channel_opus_config.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_decoder_opus.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_encoder_multi_channel_opus.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_encoder_multi_channel_opus_config.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_encoder_opus.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus/audio_encoder_opus_config.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus_audio_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/audio_codecs/opus_audio_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/audio_options.h (100%) rename {webrtc => include/webrtc}/api/call/audio_sink.h (100%) rename {webrtc => include/webrtc}/api/call/bitrate_allocation.h (100%) rename {webrtc => include/webrtc}/api/call/call_factory_interface.h (100%) rename {webrtc => include/webrtc}/api/call/transport.h (100%) rename {webrtc => include/webrtc}/api/candidate.h (100%) rename {webrtc => include/webrtc}/api/create_peerconnection_factory.h (100%) rename {webrtc => include/webrtc}/api/crypto/crypto_options.h (100%) rename {webrtc => include/webrtc}/api/crypto/frame_decryptor_interface.h (100%) rename {webrtc => include/webrtc}/api/crypto/frame_encryptor_interface.h (100%) rename {webrtc => include/webrtc}/api/crypto_params.h (100%) rename {webrtc => include/webrtc}/api/data_channel_interface.h (100%) rename {webrtc => include/webrtc}/api/dtls_transport_interface.h (100%) rename {webrtc => include/webrtc}/api/dtmf_sender_interface.h (100%) rename {webrtc => include/webrtc}/api/fec_controller.h (100%) rename {webrtc => include/webrtc}/api/fec_controller_override.h (100%) rename {webrtc => include/webrtc}/api/frame_transformer_interface.h (100%) rename {webrtc => include/webrtc}/api/function_view.h (100%) rename {webrtc => include/webrtc}/api/ice_transport_factory.h (100%) rename {webrtc => include/webrtc}/api/ice_transport_interface.h (100%) rename {webrtc => include/webrtc}/api/jsep.h (100%) rename {webrtc => include/webrtc}/api/jsep_ice_candidate.h (100%) rename {webrtc => include/webrtc}/api/jsep_session_description.h (100%) rename {webrtc => include/webrtc}/api/media_stream_interface.h (100%) rename {webrtc => include/webrtc}/api/media_stream_proxy.h (100%) rename {webrtc => include/webrtc}/api/media_stream_track_proxy.h (100%) rename {webrtc => include/webrtc}/api/media_types.h (100%) rename {webrtc => include/webrtc}/api/neteq/custom_neteq_factory.h (100%) rename {webrtc => include/webrtc}/api/neteq/default_neteq_controller_factory.h (100%) rename {webrtc => include/webrtc}/api/neteq/neteq.h (100%) rename {webrtc => include/webrtc}/api/neteq/neteq_controller.h (100%) rename {webrtc => include/webrtc}/api/neteq/neteq_controller_factory.h (100%) rename {webrtc => include/webrtc}/api/neteq/neteq_factory.h (100%) rename {webrtc => include/webrtc}/api/neteq/tick_timer.h (100%) rename {webrtc => include/webrtc}/api/network_state_predictor.h (100%) rename {webrtc => include/webrtc}/api/notifier.h (100%) rename {webrtc => include/webrtc}/api/packet_socket_factory.h (100%) rename {webrtc => include/webrtc}/api/peer_connection_factory_proxy.h (100%) rename {webrtc => include/webrtc}/api/peer_connection_interface.h (100%) rename {webrtc => include/webrtc}/api/peer_connection_proxy.h (100%) rename {webrtc => include/webrtc}/api/proxy.h (100%) rename {webrtc => include/webrtc}/api/ref_counted_base.h (100%) rename {webrtc => include/webrtc}/api/rtc_error.h (100%) rename {webrtc => include/webrtc}/api/rtc_event_log/rtc_event.h (100%) rename {webrtc => include/webrtc}/api/rtc_event_log/rtc_event_log.h (100%) rename {webrtc => include/webrtc}/api/rtc_event_log/rtc_event_log_factory.h (100%) rename {webrtc => include/webrtc}/api/rtc_event_log/rtc_event_log_factory_interface.h (100%) rename {webrtc => include/webrtc}/api/rtc_event_log_output.h (100%) rename {webrtc => include/webrtc}/api/rtc_event_log_output_file.h (100%) rename {webrtc => include/webrtc}/api/rtp_headers.h (100%) rename {webrtc => include/webrtc}/api/rtp_packet_info.h (100%) rename {webrtc => include/webrtc}/api/rtp_packet_infos.h (100%) rename {webrtc => include/webrtc}/api/rtp_parameters.h (100%) rename {webrtc => include/webrtc}/api/rtp_receiver_interface.h (100%) rename {webrtc => include/webrtc}/api/rtp_sender_interface.h (100%) rename {webrtc => include/webrtc}/api/rtp_transceiver_direction.h (100%) rename {webrtc => include/webrtc}/api/rtp_transceiver_interface.h (100%) rename {webrtc => include/webrtc}/api/scoped_refptr.h (100%) rename {webrtc => include/webrtc}/api/sctp_transport_interface.h (100%) rename {webrtc => include/webrtc}/api/set_remote_description_observer_interface.h (100%) rename {webrtc => include/webrtc}/api/stats/rtc_stats.h (100%) rename {webrtc => include/webrtc}/api/stats/rtc_stats_collector_callback.h (100%) rename {webrtc => include/webrtc}/api/stats/rtc_stats_report.h (100%) rename {webrtc => include/webrtc}/api/stats/rtcstats_objects.h (100%) rename {webrtc => include/webrtc}/api/stats_types.h (100%) rename {webrtc => include/webrtc}/api/task_queue/default_task_queue_factory.h (100%) rename {webrtc => include/webrtc}/api/task_queue/queued_task.h (100%) rename {webrtc => include/webrtc}/api/task_queue/task_queue_base.h (100%) rename {webrtc => include/webrtc}/api/task_queue/task_queue_factory.h (100%) rename {webrtc => include/webrtc}/api/task_queue/task_queue_test.h (100%) rename {webrtc => include/webrtc}/api/test/audio_quality_analyzer_interface.h (100%) rename {webrtc => include/webrtc}/api/test/audioproc_float.h (100%) rename {webrtc => include/webrtc}/api/test/create_frame_generator.h (100%) rename {webrtc => include/webrtc}/api/test/create_network_emulation_manager.h (100%) rename {webrtc => include/webrtc}/api/test/create_peer_connection_quality_test_frame_generator.h (100%) rename {webrtc => include/webrtc}/api/test/create_peerconnection_quality_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/create_simulcast_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/create_time_controller.h (100%) rename {webrtc => include/webrtc}/api/test/create_video_quality_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/create_videocodec_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/dummy_peer_connection.h (100%) rename {webrtc => include/webrtc}/api/test/fake_datagram_transport.h (100%) rename {webrtc => include/webrtc}/api/test/fake_frame_decryptor.h (100%) rename {webrtc => include/webrtc}/api/test/fake_frame_encryptor.h (100%) rename {webrtc => include/webrtc}/api/test/fake_media_transport.h (100%) rename {webrtc => include/webrtc}/api/test/frame_generator_interface.h (100%) rename {webrtc => include/webrtc}/api/test/loopback_media_transport.h (100%) rename {webrtc => include/webrtc}/api/test/mock_audio_mixer.h (100%) rename {webrtc => include/webrtc}/api/test/mock_fec_controller_override.h (100%) rename {webrtc => include/webrtc}/api/test/mock_frame_decryptor.h (100%) rename {webrtc => include/webrtc}/api/test/mock_frame_encryptor.h (100%) rename {webrtc => include/webrtc}/api/test/mock_peerconnectioninterface.h (100%) rename {webrtc => include/webrtc}/api/test/mock_rtpreceiver.h (100%) rename {webrtc => include/webrtc}/api/test/mock_rtpsender.h (100%) rename {webrtc => include/webrtc}/api/test/mock_video_bitrate_allocator.h (100%) rename {webrtc => include/webrtc}/api/test/mock_video_bitrate_allocator_factory.h (100%) rename {webrtc => include/webrtc}/api/test/mock_video_decoder.h (100%) rename {webrtc => include/webrtc}/api/test/mock_video_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/test/mock_video_encoder.h (100%) rename {webrtc => include/webrtc}/api/test/mock_video_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/test/neteq_simulator.h (100%) rename {webrtc => include/webrtc}/api/test/neteq_simulator_factory.h (100%) rename {webrtc => include/webrtc}/api/test/network_emulation/network_emulation_interfaces.h (100%) rename {webrtc => include/webrtc}/api/test/network_emulation_manager.h (100%) rename {webrtc => include/webrtc}/api/test/peerconnection_quality_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/simulated_network.h (100%) rename {webrtc => include/webrtc}/api/test/simulcast_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/stats_observer_interface.h (100%) rename {webrtc => include/webrtc}/api/test/test_dependency_factory.h (100%) rename {webrtc => include/webrtc}/api/test/time_controller.h (100%) rename {webrtc => include/webrtc}/api/test/track_id_stream_label_map.h (100%) rename {webrtc => include/webrtc}/api/test/video/function_video_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/test/video/function_video_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/test/video_quality_analyzer_interface.h (100%) rename {webrtc => include/webrtc}/api/test/video_quality_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/videocodec_test_fixture.h (100%) rename {webrtc => include/webrtc}/api/test/videocodec_test_stats.h (100%) rename {webrtc => include/webrtc}/api/transport/bitrate_settings.h (100%) rename {webrtc => include/webrtc}/api/transport/congestion_control_interface.h (100%) rename {webrtc => include/webrtc}/api/transport/data_channel_transport_interface.h (100%) rename {webrtc => include/webrtc}/api/transport/datagram_transport_interface.h (100%) rename {webrtc => include/webrtc}/api/transport/enums.h (100%) rename {webrtc => include/webrtc}/api/transport/field_trial_based_config.h (100%) rename {webrtc => include/webrtc}/api/transport/goog_cc_factory.h (100%) rename {webrtc => include/webrtc}/api/transport/media/audio_transport.h (100%) rename {webrtc => include/webrtc}/api/transport/media/media_transport_config.h (100%) rename {webrtc => include/webrtc}/api/transport/media/media_transport_interface.h (100%) rename {webrtc => include/webrtc}/api/transport/media/video_transport.h (100%) rename {webrtc => include/webrtc}/api/transport/network_control.h (100%) rename {webrtc => include/webrtc}/api/transport/network_types.h (100%) rename {webrtc => include/webrtc}/api/transport/rtp/dependency_descriptor.h (100%) rename {webrtc => include/webrtc}/api/transport/rtp/rtp_source.h (100%) rename {webrtc => include/webrtc}/api/transport/stun.h (100%) rename {webrtc => include/webrtc}/api/transport/test/create_feedback_generator.h (100%) rename {webrtc => include/webrtc}/api/transport/test/feedback_generator_interface.h (100%) rename {webrtc => include/webrtc}/api/transport/test/mock_network_control.h (100%) rename {webrtc => include/webrtc}/api/transport/webrtc_key_value_config.h (100%) rename {webrtc => include/webrtc}/api/turn_customizer.h (100%) rename {webrtc => include/webrtc}/api/uma_metrics.h (100%) rename {webrtc => include/webrtc}/api/units/data_rate.h (100%) rename {webrtc => include/webrtc}/api/units/data_size.h (100%) rename {webrtc => include/webrtc}/api/units/frequency.h (100%) rename {webrtc => include/webrtc}/api/units/time_delta.h (100%) rename {webrtc => include/webrtc}/api/units/timestamp.h (100%) rename {webrtc => include/webrtc}/api/video/builtin_video_bitrate_allocator_factory.h (100%) rename {webrtc => include/webrtc}/api/video/color_space.h (100%) rename {webrtc => include/webrtc}/api/video/encoded_frame.h (100%) rename {webrtc => include/webrtc}/api/video/encoded_image.h (100%) rename {webrtc => include/webrtc}/api/video/hdr_metadata.h (100%) rename {webrtc => include/webrtc}/api/video/i010_buffer.h (100%) rename {webrtc => include/webrtc}/api/video/i420_buffer.h (100%) rename {webrtc => include/webrtc}/api/video/recordable_encoded_frame.h (100%) rename {webrtc => include/webrtc}/api/video/test/mock_recordable_encoded_frame.h (100%) rename {webrtc => include/webrtc}/api/video/video_adaptation_counters.h (100%) rename {webrtc => include/webrtc}/api/video/video_adaptation_reason.h (100%) rename {webrtc => include/webrtc}/api/video/video_bitrate_allocation.h (100%) rename {webrtc => include/webrtc}/api/video/video_bitrate_allocator.h (100%) rename {webrtc => include/webrtc}/api/video/video_bitrate_allocator_factory.h (100%) rename {webrtc => include/webrtc}/api/video/video_codec_constants.h (100%) rename {webrtc => include/webrtc}/api/video/video_codec_type.h (100%) rename {webrtc => include/webrtc}/api/video/video_content_type.h (100%) rename {webrtc => include/webrtc}/api/video/video_frame.h (100%) rename {webrtc => include/webrtc}/api/video/video_frame_buffer.h (100%) rename {webrtc => include/webrtc}/api/video/video_frame_marking.h (100%) rename {webrtc => include/webrtc}/api/video/video_frame_type.h (100%) rename {webrtc => include/webrtc}/api/video/video_rotation.h (100%) rename {webrtc => include/webrtc}/api/video/video_sink_interface.h (100%) rename {webrtc => include/webrtc}/api/video/video_source_interface.h (100%) rename {webrtc => include/webrtc}/api/video/video_stream_decoder.h (100%) rename {webrtc => include/webrtc}/api/video/video_stream_decoder_create.h (100%) rename {webrtc => include/webrtc}/api/video/video_stream_encoder_create.h (100%) rename {webrtc => include/webrtc}/api/video/video_stream_encoder_interface.h (100%) rename {webrtc => include/webrtc}/api/video/video_stream_encoder_observer.h (100%) rename {webrtc => include/webrtc}/api/video/video_stream_encoder_settings.h (100%) rename {webrtc => include/webrtc}/api/video/video_timing.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/bitstream_parser.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/builtin_video_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/builtin_video_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/sdp_video_format.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_codec.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_decoder.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_decoder_factory.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_decoder_software_fallback_wrapper.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_encoder.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_encoder_config.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_encoder_factory.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/video_encoder_software_fallback_wrapper.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/vp8_frame_buffer_controller.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/vp8_frame_config.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/vp8_temporal_layers.h (100%) rename {webrtc => include/webrtc}/api/video_codecs/vp8_temporal_layers_factory.h (100%) rename {webrtc => include/webrtc}/api/video_track_source_proxy.h (100%) rename {webrtc => include/webrtc}/api/voip/voip_base.h (100%) rename {webrtc => include/webrtc}/api/voip/voip_codec.h (100%) rename {webrtc => include/webrtc}/api/voip/voip_engine.h (100%) rename {webrtc => include/webrtc}/api/voip/voip_engine_factory.h (100%) rename {webrtc => include/webrtc}/api/voip/voip_network.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_check.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_extension.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_interception_mac.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_internals.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_override_cpp_symbols.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_override_glibc_weak_symbols.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_override_libc_symbols.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_override_linker_wrapped_symbols.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_override_mac_symbols.h (100%) rename {webrtc => include/webrtc}/base/allocator/allocator_shim_override_ucrt_symbols_win.h (100%) rename {webrtc => include/webrtc}/base/allocator/malloc_zone_functions_mac.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/address_space_randomization.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/memory_reclaimer.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/oom.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/oom_callback.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/page_allocator.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/page_allocator_constants.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/page_allocator_internal.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/page_allocator_internals_fuchsia.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/page_allocator_internals_posix.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/page_allocator_internals_win.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_alloc.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_alloc_constants.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_alloc_forward.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_bucket.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_cookie.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_direct_map_extent.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_freelist_entry.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_oom.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_page.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/partition_root_base.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/random.h (100%) rename {webrtc => include/webrtc}/base/allocator/partition_allocator/spin_lock.h (100%) rename {webrtc => include/webrtc}/base/allocator/winheap_stubs_win.h (100%) rename {webrtc => include/webrtc}/base/android/android_hardware_buffer_compat.h (100%) rename {webrtc => include/webrtc}/base/android/android_image_reader_abi.h (100%) rename {webrtc => include/webrtc}/base/android/android_image_reader_compat.h (100%) rename {webrtc => include/webrtc}/base/android/apk_assets.h (100%) rename {webrtc => include/webrtc}/base/android/application_status_listener.h (100%) rename {webrtc => include/webrtc}/base/android/base_jni_onload.h (100%) rename {webrtc => include/webrtc}/base/android/build_info.h (100%) rename {webrtc => include/webrtc}/base/android/bundle_utils.h (100%) rename {webrtc => include/webrtc}/base/android/callback_android.h (100%) rename {webrtc => include/webrtc}/base/android/child_process_binding_types.h (100%) rename {webrtc => include/webrtc}/base/android/content_uri_utils.h (100%) rename {webrtc => include/webrtc}/base/android/early_trace_event_binding.h (100%) rename {webrtc => include/webrtc}/base/android/event_log.h (100%) rename {webrtc => include/webrtc}/base/android/int_string_callback.h (100%) rename {webrtc => include/webrtc}/base/android/java_exception_reporter.h (100%) rename {webrtc => include/webrtc}/base/android/java_handler_thread.h (100%) rename {webrtc => include/webrtc}/base/android/java_heap_dump_generator.h (100%) rename {webrtc => include/webrtc}/base/android/java_runtime.h (100%) rename {webrtc => include/webrtc}/base/android/jni_android.h (100%) rename {webrtc => include/webrtc}/base/android/jni_array.h (100%) rename {webrtc => include/webrtc}/base/android/jni_generator/jni_generator_helper.h (100%) rename {webrtc => include/webrtc}/base/android/jni_generator/sample_for_tests.h (100%) rename {webrtc => include/webrtc}/base/android/jni_int_wrapper.h (100%) rename {webrtc => include/webrtc}/base/android/jni_registrar.h (100%) rename {webrtc => include/webrtc}/base/android/jni_string.h (100%) rename {webrtc => include/webrtc}/base/android/jni_utils.h (100%) rename {webrtc => include/webrtc}/base/android/jni_weak_ref.h (100%) rename {webrtc => include/webrtc}/base/android/library_loader/anchor_functions.h (100%) rename {webrtc => include/webrtc}/base/android/library_loader/library_loader_hooks.h (100%) rename {webrtc => include/webrtc}/base/android/library_loader/library_prefetcher.h (100%) rename {webrtc => include/webrtc}/base/android/linker/legacy_linker_jni.h (100%) rename {webrtc => include/webrtc}/base/android/linker/linker_jni.h (100%) rename {webrtc => include/webrtc}/base/android/linker/modern_linker_jni.h (100%) rename {webrtc => include/webrtc}/base/android/locale_utils.h (100%) rename {webrtc => include/webrtc}/base/android/memory_pressure_listener_android.h (100%) rename {webrtc => include/webrtc}/base/android/orderfile/orderfile_instrumentation.h (100%) rename {webrtc => include/webrtc}/base/android/path_utils.h (100%) rename {webrtc => include/webrtc}/base/android/reached_addresses_bitset.h (100%) rename {webrtc => include/webrtc}/base/android/reached_code_profiler.h (100%) rename {webrtc => include/webrtc}/base/android/scoped_hardware_buffer_fence_sync.h (100%) rename {webrtc => include/webrtc}/base/android/scoped_hardware_buffer_handle.h (100%) rename {webrtc => include/webrtc}/base/android/scoped_java_ref.h (100%) rename {webrtc => include/webrtc}/base/android/sys_utils.h (100%) rename {webrtc => include/webrtc}/base/android/task_scheduler/post_task_android.h (100%) rename {webrtc => include/webrtc}/base/android/task_scheduler/task_runner_android.h (100%) rename {webrtc => include/webrtc}/base/android/timezone_utils.h (100%) rename {webrtc => include/webrtc}/base/android/trace_event_binding.h (100%) rename {webrtc => include/webrtc}/base/android/unguessable_token_android.h (100%) rename {webrtc => include/webrtc}/base/at_exit.h (100%) rename {webrtc => include/webrtc}/base/atomic_ref_count.h (100%) rename {webrtc => include/webrtc}/base/atomic_sequence_num.h (100%) rename {webrtc => include/webrtc}/base/atomicops.h (100%) rename {webrtc => include/webrtc}/base/atomicops_internals_atomicword_compat.h (100%) rename {webrtc => include/webrtc}/base/atomicops_internals_portable.h (100%) rename {webrtc => include/webrtc}/base/atomicops_internals_x86_msvc.h (100%) rename {webrtc => include/webrtc}/base/auto_reset.h (100%) rename {webrtc => include/webrtc}/base/barrier_closure.h (100%) rename {webrtc => include/webrtc}/base/base64.h (100%) rename {webrtc => include/webrtc}/base/base64url.h (100%) rename {webrtc => include/webrtc}/base/base_export.h (100%) rename {webrtc => include/webrtc}/base/base_paths.h (100%) rename {webrtc => include/webrtc}/base/base_paths_android.h (100%) rename {webrtc => include/webrtc}/base/base_paths_fuchsia.h (100%) rename {webrtc => include/webrtc}/base/base_paths_mac.h (100%) rename {webrtc => include/webrtc}/base/base_paths_posix.h (100%) rename {webrtc => include/webrtc}/base/base_paths_win.h (100%) rename {webrtc => include/webrtc}/base/base_switches.h (100%) rename {webrtc => include/webrtc}/base/big_endian.h (100%) rename {webrtc => include/webrtc}/base/bind.h (100%) rename {webrtc => include/webrtc}/base/bind_helpers.h (100%) rename {webrtc => include/webrtc}/base/bind_internal.h (100%) rename {webrtc => include/webrtc}/base/bit_cast.h (100%) rename {webrtc => include/webrtc}/base/bits.h (100%) rename {webrtc => include/webrtc}/base/build_time.h (100%) rename {webrtc => include/webrtc}/base/callback.h (100%) rename {webrtc => include/webrtc}/base/callback_forward.h (100%) rename {webrtc => include/webrtc}/base/callback_helpers.h (100%) rename {webrtc => include/webrtc}/base/callback_internal.h (100%) rename {webrtc => include/webrtc}/base/callback_list.h (100%) rename {webrtc => include/webrtc}/base/cancelable_callback.h (100%) rename {webrtc => include/webrtc}/base/check.h (100%) rename {webrtc => include/webrtc}/base/check_op.h (100%) rename {webrtc => include/webrtc}/base/command_line.h (100%) rename {webrtc => include/webrtc}/base/compiler_specific.h (100%) rename {webrtc => include/webrtc}/base/component_export.h (100%) rename {webrtc => include/webrtc}/base/containers/adapters.h (100%) rename {webrtc => include/webrtc}/base/containers/buffer_iterator.h (100%) rename {webrtc => include/webrtc}/base/containers/checked_iterators.h (100%) rename {webrtc => include/webrtc}/base/containers/checked_range.h (100%) rename {webrtc => include/webrtc}/base/containers/circular_deque.h (100%) rename {webrtc => include/webrtc}/base/containers/flat_map.h (100%) rename {webrtc => include/webrtc}/base/containers/flat_set.h (100%) rename {webrtc => include/webrtc}/base/containers/flat_tree.h (100%) rename {webrtc => include/webrtc}/base/containers/id_map.h (100%) rename {webrtc => include/webrtc}/base/containers/intrusive_heap.h (100%) rename {webrtc => include/webrtc}/base/containers/linked_list.h (100%) rename {webrtc => include/webrtc}/base/containers/mru_cache.h (100%) rename {webrtc => include/webrtc}/base/containers/queue.h (100%) rename {webrtc => include/webrtc}/base/containers/ring_buffer.h (100%) rename {webrtc => include/webrtc}/base/containers/small_map.h (100%) rename {webrtc => include/webrtc}/base/containers/span.h (100%) rename {webrtc => include/webrtc}/base/containers/stack.h (100%) rename {webrtc => include/webrtc}/base/containers/stack_container.h (100%) rename {webrtc => include/webrtc}/base/containers/unique_ptr_adapters.h (100%) rename {webrtc => include/webrtc}/base/containers/util.h (100%) rename {webrtc => include/webrtc}/base/containers/vector_buffer.h (100%) rename {webrtc => include/webrtc}/base/cpu.h (100%) rename {webrtc => include/webrtc}/base/critical_closure.h (100%) rename {webrtc => include/webrtc}/base/deferred_sequenced_task_runner.h (100%) rename {webrtc => include/webrtc}/base/enterprise_util.h (100%) rename {webrtc => include/webrtc}/base/environment.h (100%) rename {webrtc => include/webrtc}/base/export_template.h (100%) rename {webrtc => include/webrtc}/base/feature_list.h (100%) rename {webrtc => include/webrtc}/base/file_descriptor_posix.h (100%) rename {webrtc => include/webrtc}/base/file_descriptor_store.h (100%) rename {webrtc => include/webrtc}/base/file_version_info.h (100%) rename {webrtc => include/webrtc}/base/file_version_info_mac.h (100%) rename {webrtc => include/webrtc}/base/file_version_info_win.h (100%) rename {webrtc => include/webrtc}/base/files/dir_reader_fallback.h (100%) rename {webrtc => include/webrtc}/base/files/dir_reader_linux.h (100%) rename {webrtc => include/webrtc}/base/files/dir_reader_posix.h (100%) rename {webrtc => include/webrtc}/base/files/file.h (100%) rename {webrtc => include/webrtc}/base/files/file_descriptor_watcher_posix.h (100%) rename {webrtc => include/webrtc}/base/files/file_enumerator.h (100%) rename {webrtc => include/webrtc}/base/files/file_path.h (100%) rename {webrtc => include/webrtc}/base/files/file_path_watcher.h (100%) rename {webrtc => include/webrtc}/base/files/file_path_watcher_fsevents.h (100%) rename {webrtc => include/webrtc}/base/files/file_path_watcher_kqueue.h (100%) rename {webrtc => include/webrtc}/base/files/file_proxy.h (100%) rename {webrtc => include/webrtc}/base/files/file_tracing.h (100%) rename {webrtc => include/webrtc}/base/files/file_util.h (100%) rename {webrtc => include/webrtc}/base/files/important_file_writer.h (100%) rename {webrtc => include/webrtc}/base/files/memory_mapped_file.h (100%) rename {webrtc => include/webrtc}/base/files/platform_file.h (100%) rename {webrtc => include/webrtc}/base/files/scoped_file.h (100%) rename {webrtc => include/webrtc}/base/files/scoped_temp_dir.h (100%) rename {webrtc => include/webrtc}/base/format_macros.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/default_context.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/default_job.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/file_utils.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/filtered_service_directory.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/fuchsia_logging.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/intl_profile_watcher.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/scoped_service_binding.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/service_directory_test_base.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/service_provider_impl.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/startup_context.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/test_component_context_for_process.h (100%) rename {webrtc => include/webrtc}/base/fuchsia/test_interface_impl.h (100%) rename {webrtc => include/webrtc}/base/gtest_prod_util.h (100%) rename {webrtc => include/webrtc}/base/guid.h (100%) rename {webrtc => include/webrtc}/base/hash/hash.h (100%) rename {webrtc => include/webrtc}/base/hash/legacy_hash.h (100%) rename {webrtc => include/webrtc}/base/hash/md5.h (100%) rename {webrtc => include/webrtc}/base/hash/md5_boringssl.h (100%) rename {webrtc => include/webrtc}/base/hash/md5_constexpr.h (100%) rename {webrtc => include/webrtc}/base/hash/md5_constexpr_internal.h (100%) rename {webrtc => include/webrtc}/base/hash/md5_nacl.h (100%) rename {webrtc => include/webrtc}/base/hash/sha1.h (100%) rename {webrtc => include/webrtc}/base/i18n/base_i18n_export.h (100%) rename {webrtc => include/webrtc}/base/i18n/base_i18n_switches.h (100%) rename {webrtc => include/webrtc}/base/i18n/break_iterator.h (100%) rename {webrtc => include/webrtc}/base/i18n/case_conversion.h (100%) rename {webrtc => include/webrtc}/base/i18n/char_iterator.h (100%) rename {webrtc => include/webrtc}/base/i18n/character_encoding.h (100%) rename {webrtc => include/webrtc}/base/i18n/encoding_detection.h (100%) rename {webrtc => include/webrtc}/base/i18n/file_util_icu.h (100%) rename {webrtc => include/webrtc}/base/i18n/i18n_constants.h (100%) rename {webrtc => include/webrtc}/base/i18n/icu_string_conversions.h (100%) rename {webrtc => include/webrtc}/base/i18n/icu_util.h (100%) rename {webrtc => include/webrtc}/base/i18n/message_formatter.h (100%) rename {webrtc => include/webrtc}/base/i18n/number_formatting.h (100%) rename {webrtc => include/webrtc}/base/i18n/rtl.h (100%) rename {webrtc => include/webrtc}/base/i18n/streaming_utf8_validator.h (100%) rename {webrtc => include/webrtc}/base/i18n/string_compare.h (100%) rename {webrtc => include/webrtc}/base/i18n/string_search.h (100%) rename {webrtc => include/webrtc}/base/i18n/time_formatting.h (100%) rename {webrtc => include/webrtc}/base/i18n/timezone.h (100%) rename {webrtc => include/webrtc}/base/i18n/unicodestring.h (100%) rename {webrtc => include/webrtc}/base/i18n/utf8_validator_tables.h (100%) rename {webrtc => include/webrtc}/base/immediate_crash.h (100%) rename {webrtc => include/webrtc}/base/ios/block_types.h (100%) rename {webrtc => include/webrtc}/base/ios/crb_protocol_observers.h (100%) rename {webrtc => include/webrtc}/base/ios/device_util.h (100%) rename {webrtc => include/webrtc}/base/ios/ios_util.h (100%) rename {webrtc => include/webrtc}/base/ios/ns_error_util.h (100%) rename {webrtc => include/webrtc}/base/ios/scoped_critical_action.h (100%) rename {webrtc => include/webrtc}/base/ios/weak_nsobject.h (100%) rename {webrtc => include/webrtc}/base/json/json_common.h (100%) rename {webrtc => include/webrtc}/base/json/json_file_value_serializer.h (100%) rename {webrtc => include/webrtc}/base/json/json_parser.h (100%) rename {webrtc => include/webrtc}/base/json/json_reader.h (100%) rename {webrtc => include/webrtc}/base/json/json_string_value_serializer.h (100%) rename {webrtc => include/webrtc}/base/json/json_value_converter.h (100%) rename {webrtc => include/webrtc}/base/json/json_writer.h (100%) rename {webrtc => include/webrtc}/base/json/string_escape.h (100%) rename {webrtc => include/webrtc}/base/lazy_instance.h (100%) rename {webrtc => include/webrtc}/base/lazy_instance_helpers.h (100%) rename {webrtc => include/webrtc}/base/linux_util.h (100%) rename {webrtc => include/webrtc}/base/location.h (100%) rename {webrtc => include/webrtc}/base/logging.h (100%) rename {webrtc => include/webrtc}/base/logging_win.h (100%) rename {webrtc => include/webrtc}/base/mac/authorization_util.h (100%) rename {webrtc => include/webrtc}/base/mac/bundle_locations.h (100%) rename {webrtc => include/webrtc}/base/mac/call_with_eh_frame.h (100%) rename {webrtc => include/webrtc}/base/mac/dispatch_source_mach.h (100%) rename {webrtc => include/webrtc}/base/mac/foundation_util.h (100%) rename {webrtc => include/webrtc}/base/mac/launch_services_util.h (100%) rename {webrtc => include/webrtc}/base/mac/launchd.h (100%) rename {webrtc => include/webrtc}/base/mac/mac_logging.h (100%) rename {webrtc => include/webrtc}/base/mac/mac_util.h (100%) rename {webrtc => include/webrtc}/base/mac/mach_logging.h (100%) rename {webrtc => include/webrtc}/base/mac/mach_port_rendezvous.h (100%) rename {webrtc => include/webrtc}/base/mac/objc_release_properties.h (100%) rename {webrtc => include/webrtc}/base/mac/os_crash_dumps.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_aedesc.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_authorizationref.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_block.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_cffiledescriptorref.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_cftyperef.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_dispatch_object.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_ionotificationportref.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_ioobject.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_ioplugininterface.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_launch_data.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_mach_msg_destroy.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_mach_port.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_mach_vm.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_nsautorelease_pool.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_nsobject.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_objc_class_swizzler.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_sending_event.h (100%) rename {webrtc => include/webrtc}/base/mac/scoped_typeref.h (100%) rename {webrtc => include/webrtc}/base/mac/sdk_forward_declarations.h (100%) rename {webrtc => include/webrtc}/base/macros.h (100%) rename {webrtc => include/webrtc}/base/memory/aligned_memory.h (100%) rename {webrtc => include/webrtc}/base/memory/checked_ptr.h (100%) rename {webrtc => include/webrtc}/base/memory/discardable_memory.h (100%) rename {webrtc => include/webrtc}/base/memory/discardable_memory_allocator.h (100%) rename {webrtc => include/webrtc}/base/memory/discardable_memory_internal.h (100%) rename {webrtc => include/webrtc}/base/memory/discardable_shared_memory.h (100%) rename {webrtc => include/webrtc}/base/memory/free_deleter.h (100%) rename {webrtc => include/webrtc}/base/memory/madv_free_discardable_memory_allocator_posix.h (100%) rename {webrtc => include/webrtc}/base/memory/madv_free_discardable_memory_posix.h (100%) rename {webrtc => include/webrtc}/base/memory/memory_pressure_listener.h (100%) rename {webrtc => include/webrtc}/base/memory/memory_pressure_monitor.h (100%) rename {webrtc => include/webrtc}/base/memory/platform_shared_memory_region.h (100%) rename {webrtc => include/webrtc}/base/memory/ptr_util.h (100%) rename {webrtc => include/webrtc}/base/memory/raw_scoped_refptr_mismatch_checker.h (100%) rename {webrtc => include/webrtc}/base/memory/read_only_shared_memory_region.h (100%) rename {webrtc => include/webrtc}/base/memory/ref_counted.h (100%) rename {webrtc => include/webrtc}/base/memory/ref_counted_delete_on_sequence.h (100%) rename {webrtc => include/webrtc}/base/memory/ref_counted_memory.h (100%) rename {webrtc => include/webrtc}/base/memory/scoped_policy.h (100%) rename {webrtc => include/webrtc}/base/memory/scoped_refptr.h (100%) rename {webrtc => include/webrtc}/base/memory/shared_memory_hooks.h (100%) rename {webrtc => include/webrtc}/base/memory/shared_memory_mapping.h (100%) rename {webrtc => include/webrtc}/base/memory/shared_memory_security_policy.h (100%) rename {webrtc => include/webrtc}/base/memory/shared_memory_tracker.h (100%) rename {webrtc => include/webrtc}/base/memory/singleton.h (100%) rename {webrtc => include/webrtc}/base/memory/unsafe_shared_memory_region.h (100%) rename {webrtc => include/webrtc}/base/memory/weak_ptr.h (100%) rename {webrtc => include/webrtc}/base/memory/writable_shared_memory_region.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_loop.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_loop_current.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_android.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_default.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_for_io.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_for_ui.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_fuchsia.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_glib.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_io_ios.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_kqueue.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_libevent.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_mac.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_type.h (100%) rename {webrtc => include/webrtc}/base/message_loop/message_pump_win.h (100%) rename {webrtc => include/webrtc}/base/message_loop/timer_slack.h (100%) rename {webrtc => include/webrtc}/base/message_loop/watchable_io_message_pump_posix.h (100%) rename {webrtc => include/webrtc}/base/message_loop/work_id_provider.h (100%) rename {webrtc => include/webrtc}/base/metrics/bucket_ranges.h (100%) rename {webrtc => include/webrtc}/base/metrics/crc32.h (100%) rename {webrtc => include/webrtc}/base/metrics/dummy_histogram.h (100%) rename {webrtc => include/webrtc}/base/metrics/field_trial.h (100%) rename {webrtc => include/webrtc}/base/metrics/field_trial_param_associator.h (100%) rename {webrtc => include/webrtc}/base/metrics/field_trial_params.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_base.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_delta_serialization.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_flattener.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_functions.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_macros.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_macros_internal.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_macros_local.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_samples.h (100%) rename {webrtc => include/webrtc}/base/metrics/histogram_snapshot_manager.h (100%) rename {webrtc => include/webrtc}/base/metrics/metrics_hashes.h (100%) rename {webrtc => include/webrtc}/base/metrics/persistent_histogram_allocator.h (100%) rename {webrtc => include/webrtc}/base/metrics/persistent_histogram_storage.h (100%) rename {webrtc => include/webrtc}/base/metrics/persistent_memory_allocator.h (100%) rename {webrtc => include/webrtc}/base/metrics/persistent_sample_map.h (100%) rename {webrtc => include/webrtc}/base/metrics/record_histogram_checker.h (100%) rename {webrtc => include/webrtc}/base/metrics/sample_map.h (100%) rename {webrtc => include/webrtc}/base/metrics/sample_vector.h (100%) rename {webrtc => include/webrtc}/base/metrics/single_sample_metrics.h (100%) rename {webrtc => include/webrtc}/base/metrics/sparse_histogram.h (100%) rename {webrtc => include/webrtc}/base/metrics/statistics_recorder.h (100%) rename {webrtc => include/webrtc}/base/metrics/ukm_source_id.h (100%) rename {webrtc => include/webrtc}/base/metrics/user_metrics.h (100%) rename {webrtc => include/webrtc}/base/metrics/user_metrics_action.h (100%) rename {webrtc => include/webrtc}/base/native_library.h (100%) rename {webrtc => include/webrtc}/base/nix/mime_util_xdg.h (100%) rename {webrtc => include/webrtc}/base/nix/xdg_util.h (100%) rename {webrtc => include/webrtc}/base/no_destructor.h (100%) rename {webrtc => include/webrtc}/base/notreached.h (100%) rename {webrtc => include/webrtc}/base/numerics/checked_math.h (100%) rename {webrtc => include/webrtc}/base/numerics/checked_math_impl.h (100%) rename {webrtc => include/webrtc}/base/numerics/clamped_math.h (100%) rename {webrtc => include/webrtc}/base/numerics/clamped_math_impl.h (100%) rename {webrtc => include/webrtc}/base/numerics/math_constants.h (100%) rename {webrtc => include/webrtc}/base/numerics/ranges.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_conversions.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_conversions_arm_impl.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_conversions_impl.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_math.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_math_arm_impl.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_math_clang_gcc_impl.h (100%) rename {webrtc => include/webrtc}/base/numerics/safe_math_shared_impl.h (100%) rename {webrtc => include/webrtc}/base/observer_list.h (100%) rename {webrtc => include/webrtc}/base/observer_list_internal.h (100%) rename {webrtc => include/webrtc}/base/observer_list_threadsafe.h (100%) rename {webrtc => include/webrtc}/base/observer_list_types.h (100%) rename {webrtc => include/webrtc}/base/one_shot_event.h (100%) rename {webrtc => include/webrtc}/base/optional.h (100%) rename {webrtc => include/webrtc}/base/os_compat_android.h (100%) rename {webrtc => include/webrtc}/base/os_compat_nacl.h (100%) rename {webrtc => include/webrtc}/base/parameter_pack.h (100%) rename {webrtc => include/webrtc}/base/path_service.h (100%) rename {webrtc => include/webrtc}/base/pending_task.h (100%) rename {webrtc => include/webrtc}/base/pickle.h (100%) rename {webrtc => include/webrtc}/base/posix/can_lower_nice_to.h (100%) rename {webrtc => include/webrtc}/base/posix/eintr_wrapper.h (100%) rename {webrtc => include/webrtc}/base/posix/file_descriptor_shuffle.h (100%) rename {webrtc => include/webrtc}/base/posix/global_descriptors.h (100%) rename {webrtc => include/webrtc}/base/posix/safe_strerror.h (100%) rename {webrtc => include/webrtc}/base/posix/unix_domain_socket.h (100%) rename {webrtc => include/webrtc}/base/post_task_and_reply_with_result_internal.h (100%) rename {webrtc => include/webrtc}/base/power_monitor/power_monitor.h (100%) rename {webrtc => include/webrtc}/base/power_monitor/power_monitor_device_source.h (100%) rename {webrtc => include/webrtc}/base/power_monitor/power_monitor_source.h (100%) rename {webrtc => include/webrtc}/base/power_monitor/power_observer.h (100%) rename {webrtc => include/webrtc}/base/process/environment_internal.h (100%) rename {webrtc => include/webrtc}/base/process/internal_aix.h (100%) rename {webrtc => include/webrtc}/base/process/internal_linux.h (100%) rename {webrtc => include/webrtc}/base/process/kill.h (100%) rename {webrtc => include/webrtc}/base/process/launch.h (100%) rename {webrtc => include/webrtc}/base/process/memory.h (100%) rename {webrtc => include/webrtc}/base/process/memory_unittest_mac.h (100%) rename {webrtc => include/webrtc}/base/process/port_provider_mac.h (100%) rename {webrtc => include/webrtc}/base/process/process.h (100%) rename {webrtc => include/webrtc}/base/process/process_handle.h (100%) rename {webrtc => include/webrtc}/base/process/process_info.h (100%) rename {webrtc => include/webrtc}/base/process/process_iterator.h (100%) rename {webrtc => include/webrtc}/base/process/process_metrics.h (100%) rename {webrtc => include/webrtc}/base/process/process_metrics_iocounters.h (100%) rename {webrtc => include/webrtc}/base/profiler/arm_cfi_table.h (100%) rename {webrtc => include/webrtc}/base/profiler/chrome_unwinder_android.h (100%) rename {webrtc => include/webrtc}/base/profiler/frame.h (100%) rename {webrtc => include/webrtc}/base/profiler/metadata_recorder.h (100%) rename {webrtc => include/webrtc}/base/profiler/module_cache.h (100%) rename {webrtc => include/webrtc}/base/profiler/native_unwinder.h (100%) rename {webrtc => include/webrtc}/base/profiler/native_unwinder_android.h (100%) rename {webrtc => include/webrtc}/base/profiler/native_unwinder_mac.h (100%) rename {webrtc => include/webrtc}/base/profiler/native_unwinder_win.h (100%) rename {webrtc => include/webrtc}/base/profiler/profile_builder.h (100%) rename {webrtc => include/webrtc}/base/profiler/register_context.h (100%) rename {webrtc => include/webrtc}/base/profiler/sample_metadata.h (100%) rename {webrtc => include/webrtc}/base/profiler/sampling_profiler_thread_token.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_buffer.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_copier.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_copier_signal.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_copier_suspend.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_sampler.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_sampler_impl.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_sampling_profiler.h (100%) rename {webrtc => include/webrtc}/base/profiler/stack_sampling_profiler_test_util.h (100%) rename {webrtc => include/webrtc}/base/profiler/suspendable_thread_delegate.h (100%) rename {webrtc => include/webrtc}/base/profiler/suspendable_thread_delegate_mac.h (100%) rename {webrtc => include/webrtc}/base/profiler/suspendable_thread_delegate_win.h (100%) rename {webrtc => include/webrtc}/base/profiler/thread_delegate.h (100%) rename {webrtc => include/webrtc}/base/profiler/thread_delegate_posix.h (100%) rename {webrtc => include/webrtc}/base/profiler/unwinder.h (100%) rename {webrtc => include/webrtc}/base/profiler/unwindstack_internal_android.h (100%) rename {webrtc => include/webrtc}/base/profiler/win32_stack_frame_unwinder.h (100%) rename {webrtc => include/webrtc}/base/rand_util.h (100%) rename {webrtc => include/webrtc}/base/run_loop.h (100%) rename {webrtc => include/webrtc}/base/sampling_heap_profiler/lock_free_address_hash_set.h (100%) rename {webrtc => include/webrtc}/base/sampling_heap_profiler/poisson_allocation_sampler.h (100%) rename {webrtc => include/webrtc}/base/sampling_heap_profiler/sampling_heap_profiler.h (100%) rename {webrtc => include/webrtc}/base/scoped_clear_last_error.h (100%) rename {webrtc => include/webrtc}/base/scoped_generic.h (100%) rename {webrtc => include/webrtc}/base/scoped_native_library.h (100%) rename {webrtc => include/webrtc}/base/scoped_observer.h (100%) rename {webrtc => include/webrtc}/base/sequence_checker.h (100%) rename {webrtc => include/webrtc}/base/sequence_checker_impl.h (100%) rename {webrtc => include/webrtc}/base/sequence_token.h (100%) rename {webrtc => include/webrtc}/base/sequenced_task_runner.h (100%) rename {webrtc => include/webrtc}/base/sequenced_task_runner_helpers.h (100%) rename {webrtc => include/webrtc}/base/single_thread_task_runner.h (100%) rename {webrtc => include/webrtc}/base/stl_util.h (100%) rename {webrtc => include/webrtc}/base/strings/char_traits.h (100%) rename {webrtc => include/webrtc}/base/strings/latin1_string_conversions.h (100%) rename {webrtc => include/webrtc}/base/strings/nullable_string16.h (100%) rename {webrtc => include/webrtc}/base/strings/pattern.h (100%) rename {webrtc => include/webrtc}/base/strings/safe_sprintf.h (100%) rename {webrtc => include/webrtc}/base/strings/strcat.h (100%) rename {webrtc => include/webrtc}/base/strings/string16.h (100%) rename {webrtc => include/webrtc}/base/strings/string_number_conversions.h (100%) rename {webrtc => include/webrtc}/base/strings/string_piece.h (100%) rename {webrtc => include/webrtc}/base/strings/string_piece_forward.h (100%) rename {webrtc => include/webrtc}/base/strings/string_split.h (100%) rename {webrtc => include/webrtc}/base/strings/string_tokenizer.h (100%) rename {webrtc => include/webrtc}/base/strings/string_util.h (100%) rename {webrtc => include/webrtc}/base/strings/string_util_posix.h (100%) rename {webrtc => include/webrtc}/base/strings/string_util_win.h (100%) rename {webrtc => include/webrtc}/base/strings/stringize_macros.h (100%) rename {webrtc => include/webrtc}/base/strings/stringprintf.h (100%) rename {webrtc => include/webrtc}/base/strings/sys_string_conversions.h (100%) rename {webrtc => include/webrtc}/base/strings/utf_offset_string_conversions.h (100%) rename {webrtc => include/webrtc}/base/strings/utf_string_conversion_utils.h (100%) rename {webrtc => include/webrtc}/base/strings/utf_string_conversions.h (100%) rename {webrtc => include/webrtc}/base/supports_user_data.h (100%) rename {webrtc => include/webrtc}/base/sync_socket.h (100%) rename {webrtc => include/webrtc}/base/synchronization/atomic_flag.h (100%) rename {webrtc => include/webrtc}/base/synchronization/condition_variable.h (100%) rename {webrtc => include/webrtc}/base/synchronization/lock.h (100%) rename {webrtc => include/webrtc}/base/synchronization/lock_impl.h (100%) rename {webrtc => include/webrtc}/base/synchronization/waitable_event.h (100%) rename {webrtc => include/webrtc}/base/synchronization/waitable_event_watcher.h (100%) rename {webrtc => include/webrtc}/base/sys_byteorder.h (100%) rename {webrtc => include/webrtc}/base/syslog_logging.h (100%) rename {webrtc => include/webrtc}/base/system/sys_info.h (100%) rename {webrtc => include/webrtc}/base/system/sys_info_internal.h (100%) rename {webrtc => include/webrtc}/base/system/system_monitor.h (100%) rename {webrtc => include/webrtc}/base/task/cancelable_task_tracker.h (100%) rename {webrtc => include/webrtc}/base/task/common/checked_lock.h (100%) rename {webrtc => include/webrtc}/base/task/common/checked_lock_impl.h (100%) rename {webrtc => include/webrtc}/base/task/common/intrusive_heap.h (100%) rename {webrtc => include/webrtc}/base/task/common/operations_controller.h (100%) rename {webrtc => include/webrtc}/base/task/common/scoped_defer_task_posting.h (100%) rename {webrtc => include/webrtc}/base/task/common/task_annotator.h (100%) rename {webrtc => include/webrtc}/base/task/lazy_thread_pool_task_runner.h (100%) rename {webrtc => include/webrtc}/base/task/post_job.h (100%) rename {webrtc => include/webrtc}/base/task/post_task.h (100%) rename {webrtc => include/webrtc}/base/task/scoped_set_task_priority_for_current_thread.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/associated_thread_id.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/atomic_flag_set.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/enqueue_order.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/enqueue_order_generator.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/lazily_deallocated_deque.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/lazy_now.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/real_time_domain.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/sequence_manager.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/sequence_manager_impl.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/sequenced_task_source.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/task_queue.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/task_queue_impl.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/task_queue_selector.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/task_queue_selector_logic.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/task_time_observer.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/tasks.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/test/fake_task.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/test/mock_time_domain.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/test/mock_time_message_pump.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/test/sequence_manager_for_test.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/test/test_task_queue.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/test/test_task_time_observer.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/thread_controller.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/thread_controller_impl.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/thread_controller_with_message_pump_impl.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/time_domain.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/work_deduplicator.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/work_queue.h (100%) rename {webrtc => include/webrtc}/base/task/sequence_manager/work_queue_sets.h (100%) rename {webrtc => include/webrtc}/base/task/simple_task_executor.h (100%) rename {webrtc => include/webrtc}/base/task/single_thread_task_executor.h (100%) rename {webrtc => include/webrtc}/base/task/single_thread_task_runner_thread_mode.h (100%) rename {webrtc => include/webrtc}/base/task/task_executor.h (100%) rename {webrtc => include/webrtc}/base/task/task_features.h (100%) rename {webrtc => include/webrtc}/base/task/task_observer.h (100%) rename {webrtc => include/webrtc}/base/task/task_traits.h (100%) rename {webrtc => include/webrtc}/base/task/task_traits_extension.h (100%) rename {webrtc => include/webrtc}/base/task/test_task_traits_extension.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/can_run_policy_test.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/delayed_task_manager.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/environment_config.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/initialization_util.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/job_task_source.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/pooled_parallel_task_runner.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/pooled_sequenced_task_runner.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/pooled_single_thread_task_runner_manager.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/pooled_task_runner_delegate.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/priority_queue.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/sequence.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/sequence_sort_key.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/service_thread.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/task.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/task_source.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/task_tracker.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/task_tracker_posix.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/test_task_factory.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/test_utils.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_group.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_group_impl.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_group_native.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_group_native_mac.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_group_native_win.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_pool_impl.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/thread_pool_instance.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/tracked_ref.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/worker_thread.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/worker_thread_observer.h (100%) rename {webrtc => include/webrtc}/base/task/thread_pool/worker_thread_stack.h (100%) rename {webrtc => include/webrtc}/base/task_runner.h (100%) rename {webrtc => include/webrtc}/base/task_runner_util.h (100%) rename {webrtc => include/webrtc}/base/template_util.h (100%) rename {webrtc => include/webrtc}/base/test/android/java_handler_thread_helpers.h (100%) rename {webrtc => include/webrtc}/base/test/android/url_utils.h (100%) rename {webrtc => include/webrtc}/base/test/bind_test_util.h (100%) rename {webrtc => include/webrtc}/base/test/clang_profiling.h (100%) rename {webrtc => include/webrtc}/base/test/copy_only_int.h (100%) rename {webrtc => include/webrtc}/base/test/fontconfig_util_linux.h (100%) rename {webrtc => include/webrtc}/base/test/gmock_callback_support.h (100%) rename {webrtc => include/webrtc}/base/test/gmock_move_support.h (100%) rename {webrtc => include/webrtc}/base/test/gtest_util.h (100%) rename {webrtc => include/webrtc}/base/test/gtest_xml_unittest_result_printer.h (100%) rename {webrtc => include/webrtc}/base/test/gtest_xml_util.h (100%) rename {webrtc => include/webrtc}/base/test/icu_test_util.h (100%) rename {webrtc => include/webrtc}/base/test/ios/google_test_runner_delegate.h (100%) rename {webrtc => include/webrtc}/base/test/ios/wait_util.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/test_launcher.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/test_launcher_nacl_nonsfi.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/test_launcher_test_utils.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/test_launcher_tracer.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/test_result.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/test_results_tracker.h (100%) rename {webrtc => include/webrtc}/base/test/launcher/unit_test_launcher.h (100%) rename {webrtc => include/webrtc}/base/test/malloc_wrapper.h (100%) rename {webrtc => include/webrtc}/base/test/metrics/histogram_enum_reader.h (100%) rename {webrtc => include/webrtc}/base/test/metrics/histogram_tester.h (100%) rename {webrtc => include/webrtc}/base/test/metrics/user_action_tester.h (100%) rename {webrtc => include/webrtc}/base/test/mock_callback.h (100%) rename {webrtc => include/webrtc}/base/test/mock_chrome_application_mac.h (100%) rename {webrtc => include/webrtc}/base/test/mock_devices_changed_observer.h (100%) rename {webrtc => include/webrtc}/base/test/mock_entropy_provider.h (100%) rename {webrtc => include/webrtc}/base/test/mock_log.h (100%) rename {webrtc => include/webrtc}/base/test/move_only_int.h (100%) rename {webrtc => include/webrtc}/base/test/multiprocess_test.h (100%) rename {webrtc => include/webrtc}/base/test/native_library_test_utils.h (100%) rename {webrtc => include/webrtc}/base/test/null_task_runner.h (100%) rename {webrtc => include/webrtc}/base/test/perf_log.h (100%) rename {webrtc => include/webrtc}/base/test/perf_test_suite.h (100%) rename {webrtc => include/webrtc}/base/test/perf_time_logger.h (100%) rename {webrtc => include/webrtc}/base/test/power_monitor_test_base.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_command_line.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_environment_variable_override.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_feature_list.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_field_trial_list_resetter.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_locale.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_mock_clock_override.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_mock_time_message_loop_task_runner.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_os_info_override_win.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_path_override.h (100%) rename {webrtc => include/webrtc}/base/test/scoped_run_loop_timeout.h (100%) rename {webrtc => include/webrtc}/base/test/sequenced_task_runner_test_template.h (100%) rename {webrtc => include/webrtc}/base/test/simple_test_clock.h (100%) rename {webrtc => include/webrtc}/base/test/simple_test_tick_clock.h (100%) rename {webrtc => include/webrtc}/base/test/spin_wait.h (100%) rename {webrtc => include/webrtc}/base/test/task_environment.h (100%) rename {webrtc => include/webrtc}/base/test/task_runner_test_template.h (100%) rename {webrtc => include/webrtc}/base/test/test_discardable_memory_allocator.h (100%) rename {webrtc => include/webrtc}/base/test/test_file_util.h (100%) rename {webrtc => include/webrtc}/base/test/test_io_thread.h (100%) rename {webrtc => include/webrtc}/base/test/test_listener_ios.h (100%) rename {webrtc => include/webrtc}/base/test/test_message_loop.h (100%) rename {webrtc => include/webrtc}/base/test/test_mock_time_task_runner.h (100%) rename {webrtc => include/webrtc}/base/test/test_pending_task.h (100%) rename {webrtc => include/webrtc}/base/test/test_reg_util_win.h (100%) rename {webrtc => include/webrtc}/base/test/test_shared_memory_util.h (100%) rename {webrtc => include/webrtc}/base/test/test_shortcut_win.h (100%) rename {webrtc => include/webrtc}/base/test/test_simple_task_runner.h (100%) rename {webrtc => include/webrtc}/base/test/test_suite.h (100%) rename {webrtc => include/webrtc}/base/test/test_support_android.h (100%) rename {webrtc => include/webrtc}/base/test/test_support_ios.h (100%) rename {webrtc => include/webrtc}/base/test/test_switches.h (100%) rename {webrtc => include/webrtc}/base/test/test_timeouts.h (100%) rename {webrtc => include/webrtc}/base/test/test_waitable_event.h (100%) rename {webrtc => include/webrtc}/base/test/thread_test_helper.h (100%) rename {webrtc => include/webrtc}/base/test/trace_event_analyzer.h (100%) rename {webrtc => include/webrtc}/base/test/trace_to_file.h (100%) rename {webrtc => include/webrtc}/base/test/values_test_util.h (100%) rename {webrtc => include/webrtc}/base/test/with_feature_override.h (100%) rename {webrtc => include/webrtc}/base/third_party/cityhash/city.h (100%) rename {webrtc => include/webrtc}/base/third_party/cityhash_v103/src/city_v103.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/bignum-dtoa.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/bignum.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/cached-powers.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/diy-fp.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/double-conversion.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/double-to-string.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/fast-dtoa.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/fixed-dtoa.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/ieee.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/string-to-double.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/strtod.h (100%) rename {webrtc => include/webrtc}/base/third_party/double_conversion/double-conversion/utils.h (100%) rename {webrtc => include/webrtc}/base/third_party/dynamic_annotations/dynamic_annotations.h (100%) rename {webrtc => include/webrtc}/base/third_party/icu/icu_utf.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/aix/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/aix/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/android/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/android/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/compat/sys/_libevent_time.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/compat/sys/queue.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/evdns.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/event-internal.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/event.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/evhttp.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/evrpc-internal.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/evrpc.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/evsignal.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/evutil.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/freebsd/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/freebsd/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/http-internal.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/linux/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/linux/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/log.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/mac/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/mac/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/min_heap.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/nacl_nonsfi/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/nacl_nonsfi/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/solaris/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/solaris/event-config.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/strlcpy-internal.h (100%) rename {webrtc => include/webrtc}/base/third_party/libevent/test/regress.h (100%) rename {webrtc => include/webrtc}/base/third_party/nspr/prtime.h (100%) rename {webrtc => include/webrtc}/base/third_party/symbolize/config.h (100%) rename {webrtc => include/webrtc}/base/third_party/symbolize/demangle.h (100%) rename {webrtc => include/webrtc}/base/third_party/symbolize/glog/logging.h (100%) rename {webrtc => include/webrtc}/base/third_party/symbolize/glog/raw_logging.h (100%) rename {webrtc => include/webrtc}/base/third_party/symbolize/symbolize.h (100%) rename {webrtc => include/webrtc}/base/third_party/symbolize/utilities.h (100%) rename {webrtc => include/webrtc}/base/third_party/valgrind/memcheck.h (100%) rename {webrtc => include/webrtc}/base/third_party/valgrind/valgrind.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmime.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimealias.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimecache.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimeglob.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimeicon.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimeint.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimemagic.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_mime/xdgmimeparent.h (100%) rename {webrtc => include/webrtc}/base/third_party/xdg_user_dirs/xdg_user_dir_lookup.h (100%) rename {webrtc => include/webrtc}/base/thread_annotations.h (100%) rename {webrtc => include/webrtc}/base/threading/hang_watcher.h (100%) rename {webrtc => include/webrtc}/base/threading/platform_thread.h (100%) rename {webrtc => include/webrtc}/base/threading/platform_thread_internal_posix.h (100%) rename {webrtc => include/webrtc}/base/threading/platform_thread_win.h (100%) rename {webrtc => include/webrtc}/base/threading/post_task_and_reply_impl.h (100%) rename {webrtc => include/webrtc}/base/threading/scoped_blocking_call.h (100%) rename {webrtc => include/webrtc}/base/threading/scoped_blocking_call_internal.h (100%) rename {webrtc => include/webrtc}/base/threading/scoped_thread_priority.h (100%) rename {webrtc => include/webrtc}/base/threading/sequence_bound.h (100%) rename {webrtc => include/webrtc}/base/threading/sequence_local_storage_map.h (100%) rename {webrtc => include/webrtc}/base/threading/sequence_local_storage_slot.h (100%) rename {webrtc => include/webrtc}/base/threading/sequenced_task_runner_handle.h (100%) rename {webrtc => include/webrtc}/base/threading/simple_thread.h (100%) rename {webrtc => include/webrtc}/base/threading/thread.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_checker.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_checker_impl.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_collision_warner.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_id_name_manager.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_local.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_local_internal.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_local_storage.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_restrictions.h (100%) rename {webrtc => include/webrtc}/base/threading/thread_task_runner_handle.h (100%) rename {webrtc => include/webrtc}/base/threading/watchdog.h (100%) rename {webrtc => include/webrtc}/base/time/clock.h (100%) rename {webrtc => include/webrtc}/base/time/default_clock.h (100%) rename {webrtc => include/webrtc}/base/time/default_tick_clock.h (100%) rename {webrtc => include/webrtc}/base/time/tick_clock.h (100%) rename {webrtc => include/webrtc}/base/time/time.h (100%) rename {webrtc => include/webrtc}/base/time/time_override.h (100%) rename {webrtc => include/webrtc}/base/time/time_to_iso8601.h (100%) rename {webrtc => include/webrtc}/base/time/time_win_features.h (100%) rename {webrtc => include/webrtc}/base/timer/elapsed_timer.h (100%) rename {webrtc => include/webrtc}/base/timer/hi_res_timer_manager.h (100%) rename {webrtc => include/webrtc}/base/timer/lap_timer.h (100%) rename {webrtc => include/webrtc}/base/timer/mock_timer.h (100%) rename {webrtc => include/webrtc}/base/timer/timer.h (100%) rename {webrtc => include/webrtc}/base/token.h (100%) rename {webrtc => include/webrtc}/base/trace_event/auto_open_close_event.h (100%) rename {webrtc => include/webrtc}/base/trace_event/blame_context.h (100%) rename {webrtc => include/webrtc}/base/trace_event/builtin_categories.h (100%) rename {webrtc => include/webrtc}/base/trace_event/category_registry.h (100%) rename {webrtc => include/webrtc}/base/trace_event/cfi_backtrace_android.h (100%) rename {webrtc => include/webrtc}/base/trace_event/common/trace_event_common.h (100%) rename {webrtc => include/webrtc}/base/trace_event/cpufreq_monitor_android.h (100%) rename {webrtc => include/webrtc}/base/trace_event/event_name_filter.h (100%) rename {webrtc => include/webrtc}/base/trace_event/heap_profiler.h (100%) rename {webrtc => include/webrtc}/base/trace_event/heap_profiler_allocation_context.h (100%) rename {webrtc => include/webrtc}/base/trace_event/heap_profiler_allocation_context_tracker.h (100%) rename {webrtc => include/webrtc}/base/trace_event/heap_profiler_event_filter.h (100%) rename {webrtc => include/webrtc}/base/trace_event/java_heap_dump_provider_android.h (100%) rename {webrtc => include/webrtc}/base/trace_event/log_message.h (100%) rename {webrtc => include/webrtc}/base/trace_event/malloc_dump_provider.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_allocator_dump.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_allocator_dump_guid.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_dump_manager.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_dump_manager_test_utils.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_dump_provider.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_dump_provider_info.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_dump_request_args.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_dump_scheduler.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_infra_background_allowlist.h (100%) rename {webrtc => include/webrtc}/base/trace_event/memory_usage_estimator.h (100%) rename {webrtc => include/webrtc}/base/trace_event/process_memory_dump.h (100%) rename {webrtc => include/webrtc}/base/trace_event/thread_instruction_count.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_arguments.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_buffer.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_category.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_config.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_config_category_filter.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_config_memory_test_util.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_event.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_event_etw_export_win.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_event_filter.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_event_filter_test_utils.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_event_impl.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_event_memory_overhead.h (100%) rename {webrtc => include/webrtc}/base/trace_event/trace_log.h (100%) rename {webrtc => include/webrtc}/base/trace_event/traced_value.h (100%) rename {webrtc => include/webrtc}/base/trace_event/tracing_agent.h (100%) rename {webrtc => include/webrtc}/base/traits_bag.h (100%) rename {webrtc => include/webrtc}/base/tuple.h (100%) rename {webrtc => include/webrtc}/base/unguessable_token.h (100%) rename {webrtc => include/webrtc}/base/updateable_sequenced_task_runner.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/fake_memory_pressure_monitor.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/memory_pressure_voter.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/multi_source_memory_pressure_monitor.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/system_memory_pressure_evaluator.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/system_memory_pressure_evaluator_chromeos.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/system_memory_pressure_evaluator_fuchsia.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/system_memory_pressure_evaluator_mac.h (100%) rename {webrtc => include/webrtc}/base/util/memory_pressure/system_memory_pressure_evaluator_win.h (100%) rename {webrtc => include/webrtc}/base/util/timer/wall_clock_timer.h (100%) rename {webrtc => include/webrtc}/base/util/type_safety/id_type.h (100%) rename {webrtc => include/webrtc}/base/util/type_safety/pass_key.h (100%) rename {webrtc => include/webrtc}/base/util/type_safety/strong_alias.h (100%) rename {webrtc => include/webrtc}/base/util/values/values_util.h (100%) rename {webrtc => include/webrtc}/base/value_conversions.h (100%) rename {webrtc => include/webrtc}/base/value_iterators.h (100%) rename {webrtc => include/webrtc}/base/values.h (100%) rename {webrtc => include/webrtc}/base/version.h (100%) rename {webrtc => include/webrtc}/base/vlog.h (100%) rename {webrtc => include/webrtc}/base/win/async_operation.h (100%) rename {webrtc => include/webrtc}/base/win/atl.h (100%) rename {webrtc => include/webrtc}/base/win/com_init_check_hook.h (100%) rename {webrtc => include/webrtc}/base/win/com_init_util.h (100%) rename {webrtc => include/webrtc}/base/win/core_winrt_util.h (100%) rename {webrtc => include/webrtc}/base/win/current_module.h (100%) rename {webrtc => include/webrtc}/base/win/embedded_i18n/language_selector.h (100%) rename {webrtc => include/webrtc}/base/win/enum_variant.h (100%) rename {webrtc => include/webrtc}/base/win/event_trace_consumer.h (100%) rename {webrtc => include/webrtc}/base/win/event_trace_controller.h (100%) rename {webrtc => include/webrtc}/base/win/event_trace_provider.h (100%) rename {webrtc => include/webrtc}/base/win/hstring_compare.h (100%) rename {webrtc => include/webrtc}/base/win/hstring_reference.h (100%) rename {webrtc => include/webrtc}/base/win/i18n.h (100%) rename {webrtc => include/webrtc}/base/win/iat_patch_function.h (100%) rename {webrtc => include/webrtc}/base/win/map.h (100%) rename {webrtc => include/webrtc}/base/win/message_window.h (100%) rename {webrtc => include/webrtc}/base/win/object_watcher.h (100%) rename {webrtc => include/webrtc}/base/win/patch_util.h (100%) rename {webrtc => include/webrtc}/base/win/pe_image.h (100%) rename {webrtc => include/webrtc}/base/win/post_async_results.h (100%) rename {webrtc => include/webrtc}/base/win/process_startup_helper.h (100%) rename {webrtc => include/webrtc}/base/win/propvarutil.h (100%) rename {webrtc => include/webrtc}/base/win/reference.h (100%) rename {webrtc => include/webrtc}/base/win/registry.h (100%) rename {webrtc => include/webrtc}/base/win/resource_util.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_bstr.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_co_mem.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_com_initializer.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_gdi_object.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_handle.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_handle_verifier.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_hdc.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_hglobal.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_hstring.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_process_information.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_propvariant.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_safearray.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_select_object.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_variant.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_windows_thread_environment.h (100%) rename {webrtc => include/webrtc}/base/win/scoped_winrt_initializer.h (100%) rename {webrtc => include/webrtc}/base/win/shlwapi.h (100%) rename {webrtc => include/webrtc}/base/win/shortcut.h (100%) rename {webrtc => include/webrtc}/base/win/sphelper.h (100%) rename {webrtc => include/webrtc}/base/win/startup_information.h (100%) rename {webrtc => include/webrtc}/base/win/static_constants.h (100%) rename {webrtc => include/webrtc}/base/win/typed_event_handler.h (100%) rename {webrtc => include/webrtc}/base/win/vector.h (100%) rename {webrtc => include/webrtc}/base/win/win_util.h (100%) rename {webrtc => include/webrtc}/base/win/wincrypt_shim.h (100%) rename {webrtc => include/webrtc}/base/win/windows_full.h (100%) rename {webrtc => include/webrtc}/base/win/windows_types.h (100%) rename {webrtc => include/webrtc}/base/win/windows_version.h (100%) rename {webrtc => include/webrtc}/base/win/windowsx_shim.h (100%) rename {webrtc => include/webrtc}/base/win/winrt_foundation_helpers.h (100%) rename {webrtc => include/webrtc}/base/win/winrt_storage_util.h (100%) rename {webrtc => include/webrtc}/base/win/wmi.h (100%) rename {webrtc => include/webrtc}/base/win/wrapped_window_proc.h (100%) rename {webrtc => include/webrtc}/call/adaptation/encoder_settings.h (100%) rename {webrtc => include/webrtc}/call/adaptation/resource.h (100%) rename {webrtc => include/webrtc}/call/adaptation/resource_adaptation_processor.h (100%) rename {webrtc => include/webrtc}/call/adaptation/resource_adaptation_processor_interface.h (100%) rename {webrtc => include/webrtc}/call/adaptation/test/fake_frame_rate_provider.h (100%) rename {webrtc => include/webrtc}/call/adaptation/test/fake_resource.h (100%) rename {webrtc => include/webrtc}/call/adaptation/video_source_restrictions.h (100%) rename {webrtc => include/webrtc}/call/adaptation/video_stream_adapter.h (100%) rename {webrtc => include/webrtc}/call/adaptation/video_stream_input_state.h (100%) rename {webrtc => include/webrtc}/call/adaptation/video_stream_input_state_provider.h (100%) rename {webrtc => include/webrtc}/call/audio_receive_stream.h (100%) rename {webrtc => include/webrtc}/call/audio_send_stream.h (100%) rename {webrtc => include/webrtc}/call/audio_sender.h (100%) rename {webrtc => include/webrtc}/call/audio_state.h (100%) rename {webrtc => include/webrtc}/call/bitrate_allocator.h (100%) rename {webrtc => include/webrtc}/call/call.h (100%) rename {webrtc => include/webrtc}/call/call_config.h (100%) rename {webrtc => include/webrtc}/call/call_factory.h (100%) rename {webrtc => include/webrtc}/call/degraded_call.h (100%) rename {webrtc => include/webrtc}/call/fake_network_pipe.h (100%) rename {webrtc => include/webrtc}/call/flexfec_receive_stream.h (100%) rename {webrtc => include/webrtc}/call/flexfec_receive_stream_impl.h (100%) rename {webrtc => include/webrtc}/call/packet_receiver.h (100%) rename {webrtc => include/webrtc}/call/rampup_tests.h (100%) rename {webrtc => include/webrtc}/call/receive_time_calculator.h (100%) rename {webrtc => include/webrtc}/call/rtcp_demuxer.h (100%) rename {webrtc => include/webrtc}/call/rtcp_packet_sink_interface.h (100%) rename {webrtc => include/webrtc}/call/rtp_bitrate_configurator.h (100%) rename {webrtc => include/webrtc}/call/rtp_config.h (100%) rename {webrtc => include/webrtc}/call/rtp_demuxer.h (100%) rename {webrtc => include/webrtc}/call/rtp_packet_sink_interface.h (100%) rename {webrtc => include/webrtc}/call/rtp_payload_params.h (100%) rename {webrtc => include/webrtc}/call/rtp_rtcp_demuxer_helper.h (100%) rename {webrtc => include/webrtc}/call/rtp_stream_receiver_controller.h (100%) rename {webrtc => include/webrtc}/call/rtp_stream_receiver_controller_interface.h (100%) rename {webrtc => include/webrtc}/call/rtp_transport_controller_send.h (100%) rename {webrtc => include/webrtc}/call/rtp_transport_controller_send_interface.h (100%) rename {webrtc => include/webrtc}/call/rtp_video_sender.h (100%) rename {webrtc => include/webrtc}/call/rtp_video_sender_interface.h (100%) rename {webrtc => include/webrtc}/call/rtx_receive_stream.h (100%) rename {webrtc => include/webrtc}/call/simulated_network.h (100%) rename {webrtc => include/webrtc}/call/simulated_packet_receiver.h (100%) rename {webrtc => include/webrtc}/call/ssrc_binding_observer.h (100%) rename {webrtc => include/webrtc}/call/syncable.h (100%) rename {webrtc => include/webrtc}/call/test/mock_audio_send_stream.h (100%) rename {webrtc => include/webrtc}/call/test/mock_bitrate_allocator.h (100%) rename {webrtc => include/webrtc}/call/test/mock_rtp_packet_sink_interface.h (100%) rename {webrtc => include/webrtc}/call/test/mock_rtp_transport_controller_send.h (100%) rename {webrtc => include/webrtc}/call/video_receive_stream.h (100%) rename {webrtc => include/webrtc}/call/video_send_stream.h (100%) rename {webrtc => include/webrtc}/common_types.h (100%) rename {webrtc => include/webrtc}/common_video/frame_rate_estimator.h (100%) rename {webrtc => include/webrtc}/common_video/generic_frame_descriptor/generic_frame_info.h (100%) rename {webrtc => include/webrtc}/common_video/h264/h264_bitstream_parser.h (100%) rename {webrtc => include/webrtc}/common_video/h264/h264_common.h (100%) rename {webrtc => include/webrtc}/common_video/h264/pps_parser.h (100%) rename {webrtc => include/webrtc}/common_video/h264/profile_level_id.h (100%) rename {webrtc => include/webrtc}/common_video/h264/sps_parser.h (100%) rename {webrtc => include/webrtc}/common_video/h264/sps_vui_rewriter.h (100%) rename {webrtc => include/webrtc}/common_video/include/bitrate_adjuster.h (100%) rename {webrtc => include/webrtc}/common_video/include/i420_buffer_pool.h (100%) rename {webrtc => include/webrtc}/common_video/include/incoming_video_stream.h (100%) rename {webrtc => include/webrtc}/common_video/include/quality_limitation_reason.h (100%) rename {webrtc => include/webrtc}/common_video/include/video_frame.h (100%) rename {webrtc => include/webrtc}/common_video/include/video_frame_buffer.h (100%) rename {webrtc => include/webrtc}/common_video/libyuv/include/webrtc_libyuv.h (100%) rename {webrtc => include/webrtc}/common_video/test/utilities.h (100%) rename {webrtc => include/webrtc}/common_video/video_render_frames.h (100%) rename {webrtc => include/webrtc}/jni.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/blob_encoding.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/delta_encoding.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/rtc_event_log_encoder.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/rtc_event_log_encoder_common.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/rtc_event_log_encoder_legacy.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/rtc_event_log_encoder_new_format.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/encoder/var_int.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_alr_state.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_audio_network_adaptation.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_audio_playout.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_audio_receive_stream_config.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_audio_send_stream_config.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_bwe_update_delay_based.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_bwe_update_loss_based.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_dtls_transport_state.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_dtls_writable_state.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_generic_ack_received.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_generic_packet_received.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_generic_packet_sent.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_probe_cluster_created.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_probe_result_failure.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_probe_result_success.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_remote_estimate.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_route_change.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_rtcp_packet_incoming.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_rtp_packet_incoming.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_rtp_packet_outgoing.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_video_receive_stream_config.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/events/rtc_event_video_send_stream_config.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/fake_rtc_event_log.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/fake_rtc_event_log_factory.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/ice_logger.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/logged_events.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/mock/mock_rtc_event_log.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/output/rtc_event_log_output_file.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/rtc_event_log_impl.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/rtc_event_log_parser.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/rtc_event_log_unittest_helper.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/rtc_event_processor.h (100%) rename {webrtc => include/webrtc}/logging/rtc_event_log/rtc_stream_config.h (100%) rename {webrtc => include/webrtc}/media/base/adapted_video_track_source.h (100%) rename {webrtc => include/webrtc}/media/base/audio_source.h (100%) rename {webrtc => include/webrtc}/media/base/codec.h (100%) rename {webrtc => include/webrtc}/media/base/delayable.h (100%) rename {webrtc => include/webrtc}/media/base/fake_frame_source.h (100%) rename {webrtc => include/webrtc}/media/base/fake_media_engine.h (100%) rename {webrtc => include/webrtc}/media/base/fake_network_interface.h (100%) rename {webrtc => include/webrtc}/media/base/fake_rtp.h (100%) rename {webrtc => include/webrtc}/media/base/fake_video_renderer.h (100%) rename {webrtc => include/webrtc}/media/base/h264_profile_level_id.h (100%) rename {webrtc => include/webrtc}/media/base/media_channel.h (100%) rename {webrtc => include/webrtc}/media/base/media_config.h (100%) rename {webrtc => include/webrtc}/media/base/media_constants.h (100%) rename {webrtc => include/webrtc}/media/base/media_engine.h (100%) rename {webrtc => include/webrtc}/media/base/rid_description.h (100%) rename {webrtc => include/webrtc}/media/base/rtp_data_engine.h (100%) rename {webrtc => include/webrtc}/media/base/rtp_utils.h (100%) rename {webrtc => include/webrtc}/media/base/sdp_fmtp_utils.h (100%) rename {webrtc => include/webrtc}/media/base/stream_params.h (100%) rename {webrtc => include/webrtc}/media/base/test_utils.h (100%) rename {webrtc => include/webrtc}/media/base/turn_utils.h (100%) rename {webrtc => include/webrtc}/media/base/video_adapter.h (100%) rename {webrtc => include/webrtc}/media/base/video_broadcaster.h (100%) rename {webrtc => include/webrtc}/media/base/video_common.h (100%) rename {webrtc => include/webrtc}/media/base/video_source_base.h (100%) rename {webrtc => include/webrtc}/media/base/vp9_profile.h (100%) rename {webrtc => include/webrtc}/media/engine/adm_helpers.h (100%) rename {webrtc => include/webrtc}/media/engine/constants.h (100%) rename {webrtc => include/webrtc}/media/engine/encoder_simulcast_proxy.h (100%) rename {webrtc => include/webrtc}/media/engine/fake_video_codec_factory.h (100%) rename {webrtc => include/webrtc}/media/engine/fake_webrtc_call.h (100%) rename {webrtc => include/webrtc}/media/engine/fake_webrtc_video_engine.h (100%) rename {webrtc => include/webrtc}/media/engine/internal_decoder_factory.h (100%) rename {webrtc => include/webrtc}/media/engine/internal_encoder_factory.h (100%) rename {webrtc => include/webrtc}/media/engine/multiplex_codec_factory.h (100%) rename {webrtc => include/webrtc}/media/engine/null_webrtc_video_engine.h (100%) rename {webrtc => include/webrtc}/media/engine/payload_type_mapper.h (100%) rename {webrtc => include/webrtc}/media/engine/simulcast.h (100%) rename {webrtc => include/webrtc}/media/engine/simulcast_encoder_adapter.h (100%) rename {webrtc => include/webrtc}/media/engine/unhandled_packets_buffer.h (100%) rename {webrtc => include/webrtc}/media/engine/webrtc_media_engine.h (100%) rename {webrtc => include/webrtc}/media/engine/webrtc_media_engine_defaults.h (100%) rename {webrtc => include/webrtc}/media/engine/webrtc_video_engine.h (100%) rename {webrtc => include/webrtc}/media/engine/webrtc_voice_engine.h (100%) rename {webrtc => include/webrtc}/media/sctp/sctp_transport.h (100%) rename {webrtc => include/webrtc}/media/sctp/sctp_transport_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/acm2/acm_receive_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/acm2/acm_receiver.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/acm2/acm_remixing.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/acm2/acm_resampler.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/acm2/acm_send_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/acm2/call_statistics.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/bitrate_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/channel_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/controller_manager.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/debug_dump_writer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/dtx_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/event_log_writer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/fec_controller_plr_based.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/frame_length_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/mock/mock_audio_network_adaptor.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/mock/mock_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/mock/mock_controller_manager.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/mock/mock_debug_dump_writer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/audio_network_adaptor/util/threshold_curve.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/audio_decoder.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/audio_encoder.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/cng/audio_encoder_cng.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/cng/webrtc_cng.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/g711/audio_decoder_pcm.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/g711/audio_encoder_pcm.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/g711/g711_interface.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/g722/audio_decoder_g722.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/g722/audio_encoder_g722.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/g722/g722_interface.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/abs_quant.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/abs_quant_loop.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/augmented_cb_corr.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/bw_expand.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_construct.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_mem_energy.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_mem_energy_augmentation.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_mem_energy_calc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_search.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_search_core.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/cb_update_best_index.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/chebyshev.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/comp_corr.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/constants.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/create_augmented_vec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/decode.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/decode_residual.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/decoder_interpolate_lsf.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/defines.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/do_plc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/encode.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/energy_inverse.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/enh_upsample.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/enhancer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/enhancer_interface.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/filtered_cb_vecs.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/frame_classify.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/gain_dequant.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/gain_quant.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/get_cd_vec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/get_lsp_poly.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/get_sync_seq.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/hp_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/hp_output.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/ilbc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/index_conv_dec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/index_conv_enc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/init_decode.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/init_encode.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/interpolate.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/interpolate_samples.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lpc_encode.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lsf_check.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_dec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lsf_to_lsp.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lsf_to_poly.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/lsp_to_lsf.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/my_corr.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/nearest_neighbor.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/pack_bits.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/poly_to_lsf.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/poly_to_lsp.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/refiner.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/simple_interpolate_lsf.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/simple_lpc_analysis.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/simple_lsf_dequant.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/simple_lsf_quant.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/smooth.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/smooth_out_data.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/sort_sq.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/split_vq.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/state_construct.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/state_search.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/swap_bytes.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/unpack_bits.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/vq3.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/vq4.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/window32_w32.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/ilbc/xcorr_coef.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/bandwidth_info.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/include/isacfix.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/arith_routins.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/codec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/fft.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/isac_fix_type.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/settings.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/fix/source/structs.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/include/isac.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/arith_routines.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/codec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/crc.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/entropy_coding.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/filter_functions.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/isac_float_type.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/isac_vad.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/lpc_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/pitch_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/pitch_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/settings.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/source/structs.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/isac/main/util/utility.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/legacy_encoded_audio_frame.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/audio_coder_opus_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/audio_decoder_multi_channel_opus_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/audio_decoder_opus.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/audio_encoder_multi_channel_opus_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/audio_encoder_opus.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/opus_inst.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/opus_interface.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/test/audio_ring_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/test/blocker.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/opus/test/lapped_transform.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/pcm16b/audio_decoder_pcm16b.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/pcm16b/pcm16b.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/pcm16b/pcm16b_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/red/audio_encoder_copy_red.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/codecs/tools/audio_codec_speed_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/include/audio_coding_module.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/include/audio_coding_module_typedefs.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/accelerate.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/audio_multi_vector.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/audio_vector.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/background_noise.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/buffer_level_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/comfort_noise.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/cross_correlation.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/decision_logic.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/decoder_database.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/default_neteq_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/delay_manager.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/dsp_helper.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/dtmf_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/dtmf_tone_generator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/expand.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/expand_uma_logger.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/histogram.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/merge.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_decoder_database.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_dtmf_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_dtmf_tone_generator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_expand.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_histogram.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_neteq_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_packet_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_red_payload_splitter.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/mock/mock_statistics_calculator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/nack_tracker.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/neteq_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/normal.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/packet.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/packet_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/post_decode_vad.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/preemptive_expand.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/random_vector.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/red_payload_splitter.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/statistics_calculator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/sync_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/test/neteq_decoding_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/test/result_sink.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/time_stretch.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/timestamp_scaler.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/audio_checksum.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/audio_loop.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/audio_sink.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/constant_pcm_packet_source.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/encode_neteq_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/fake_decode_from_file.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/initial_packet_inserter_neteq_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/input_audio_file.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_delay_analyzer.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_event_log_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_packet_source_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_performance_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_quality_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_replacement_input.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_stats_getter.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_stats_plotter.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/neteq_test_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/output_audio_file.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/output_wav_file.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/packet.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/packet_source.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/resample_input_audio_file.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/rtc_event_log_source.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/rtp_file_source.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/neteq/tools/rtp_generator.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/Channel.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/EncodeDecodeTest.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/PCMFile.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/PacketLossTest.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/RTPFile.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/TestAllCodecs.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/TestRedFec.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/TestStereo.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/TestVADDTX.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/TwoWayCommunication.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/iSACTest.h (100%) rename {webrtc => include/webrtc}/modules/audio_coding/test/opus_test.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/aaudio_player.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/aaudio_recorder.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/aaudio_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/audio_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/audio_device_template.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/audio_manager.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/audio_record_jni.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/audio_track_jni.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/build_info.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/ensure_initialized.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/opensles_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/opensles_player.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/android/opensles_recorder.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/audio_device_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/audio_device_config.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/audio_device_generic.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/audio_device_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/audio_device_name.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/dummy/audio_device_dummy.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/dummy/file_audio_device.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/dummy/file_audio_device_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/fine_audio_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/audio_device.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/audio_device_data_observer.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/audio_device_default.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/audio_device_defines.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/audio_device_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/fake_audio_device.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/mock_audio_device.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/mock_audio_transport.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/include/test_audio_device.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/alsasymboltable_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/audio_device_alsa_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/audio_device_pulse_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/audio_mixer_manager_alsa_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/audio_mixer_manager_pulse_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/latebindingsymboltable_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/linux/pulseaudiosymboltable_linux.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/mac/audio_device_mac.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/mac/audio_mixer_manager_mac.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/mock_audio_device_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/win/audio_device_core_win.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/win/audio_device_module_win.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/win/core_audio_base_win.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/win/core_audio_input_win.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/win/core_audio_output_win.h (100%) rename {webrtc => include/webrtc}/modules/audio_device/win/core_audio_utility_win.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/audio_frame_manipulator.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/audio_mixer_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/default_output_rate_calculator.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/frame_combiner.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/gain_change_calculator.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/output_rate_calculator.h (100%) rename {webrtc => include/webrtc}/modules/audio_mixer/sine_wave_generator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/adaptive_fir_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/adaptive_fir_filter_erl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/aec3_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/aec3_fft.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/aec_state.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/alignment_mixer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/api_call_jitter_metrics.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/block_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/block_delay_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/block_framer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/block_processor.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/block_processor_metrics.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/clockdrift_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/coarse_filter_update_gain.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/comfort_noise_generator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/decimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/delay_estimate.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/dominant_nearend_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/downsampled_render_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/echo_audibility.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/echo_canceller3.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/echo_path_delay_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/echo_path_variability.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/echo_remover.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/echo_remover_metrics.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/erl_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/erle_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/fft_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/fft_data.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/filter_analyzer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/frame_blocker.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/fullband_erle_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/matched_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/matched_filter_lag_aggregator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/mock/mock_block_processor.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/mock/mock_echo_remover.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/mock/mock_render_delay_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/mock/mock_render_delay_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/moving_average.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/nearend_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/refined_filter_update_gain.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/render_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/render_delay_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/render_delay_controller.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/render_delay_controller_metrics.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/render_signal_analyzer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/residual_echo_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/reverb_decay_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/reverb_frequency_response.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/reverb_model.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/reverb_model_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/signal_dependent_erle_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/spectrum_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/stationarity_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/subband_erle_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/subband_nearend_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/subtractor.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/subtractor_output.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/subtractor_output_analyzer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/suppression_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/suppression_gain.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec3/vector_math.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec_dump/aec_dump_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec_dump/aec_dump_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec_dump/capture_stream_info.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec_dump/mock_aec_dump.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aec_dump/write_to_file_task.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aecm/aecm_core.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aecm/aecm_defines.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/aecm/echo_control_mobile.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/agc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/agc_manager_direct.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/gain_control.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/gain_map_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/legacy/analog_agc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/legacy/digital_agc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/legacy/gain_control.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/loudness_histogram.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/mock_agc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc/utility.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/adaptive_agc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/adaptive_digital_gain_applier.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/adaptive_mode_level_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/adaptive_mode_level_estimator_agc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/agc2_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/agc2_testing_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/biquad_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/compute_interpolated_gain_curve.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/down_sampler.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/fixed_digital_level_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/gain_applier.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/interpolated_gain_curve.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/limiter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/limiter_db_gain_curve.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/noise_level_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/noise_spectrum_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/auto_correlation.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/features_extraction.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/lp_residual.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/pitch_info.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/pitch_search.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/pitch_search_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/ring_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/rnn.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/sequence_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/spectral_features.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/symmetric_matrix_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/rnn_vad/test_utils.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/saturation_protector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/signal_classifier.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/vad_with_level.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/agc2/vector_float_frame.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/audio_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/audio_processing_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/echo_control_mobile_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/echo_detector/circular_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/echo_detector/mean_variance_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/echo_detector/moving_max.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/echo_detector/normalized_covariance_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/gain_control_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/gain_controller2.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/high_pass_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/aec_dump.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/audio_frame_proxies.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/audio_frame_view.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/audio_processing.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/audio_processing_statistics.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/config.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/include/mock_audio_processing.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/level_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/logging/apm_data_dumper.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/fast_math.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/histograms.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/noise_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/noise_suppressor.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/ns_common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/ns_config.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/ns_fft.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/prior_signal_model.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/prior_signal_model_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/quantile_noise_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/signal_model.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/signal_model_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/speech_probability_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/suppression_params.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/ns/wiener_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/optionally_built_submodule_creators.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/render_queue_item_verifier.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/residual_echo_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/rms_level.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/splitting_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/aec_dump_based_simulator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/api_call_statistics.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/audio_buffer_tools.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/audio_processing_builder_for_testing.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/audio_processing_simulator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/audioproc_float_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/bitexactness_tools.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/config.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/mock_wavreader.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/mock_wavreader_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/multiend_call.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/simulator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/timing.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/wavreader_abstract_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/wavreader_factory.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/conversational_speech/wavreader_interface.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/debug_dump_replayer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/echo_canceller_test_tools.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/echo_control_mock.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/fake_recording_device.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/performance_timer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/protobuf_utils.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/runtime_setting_util.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/simulator_buffers.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/test_utils.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/test/wav_based_simulator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/three_band_filter_bank.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/dyadic_decimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/file_utils.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/moving_moments.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/transient_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/transient_suppressor.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/transient_suppressor_impl.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/windows_private.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/wpd_node.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/transient/wpd_tree.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/typing_detection.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/utility/cascaded_biquad_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/utility/delay_estimator.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/utility/delay_estimator_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/utility/delay_estimator_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/utility/pffft_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/common.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/gmm.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/noise_gmm_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/pitch_based_vad.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/pitch_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/pole_zero_filter.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/standalone_vad.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/vad_audio_proc.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/vad_audio_proc_internal.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/vad_circular_buffer.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/voice_activity_detector.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/vad/voice_gmm_tables.h (100%) rename {webrtc => include/webrtc}/modules/audio_processing/voice_detection.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/acknowledged_bitrate_estimator_interface.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/alr_detector.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/bitrate_estimator.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/congestion_window_pushback_controller.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/delay_based_bwe.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/delay_based_bwe_unittest_helper.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/delay_increase_detector_interface.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/goog_cc_network_control.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/link_capacity_estimator.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/loss_based_bandwidth_estimation.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/probe_bitrate_estimator.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/probe_controller.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/robust_throughput_estimator.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/send_side_bandwidth_estimation.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/test/goog_cc_printer.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/goog_cc/trendline_estimator.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/include/receive_side_congestion_controller.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/pcc/bitrate_controller.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/pcc/monitor_interval.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/pcc/pcc_factory.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/pcc/pcc_network_controller.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/pcc/rtt_tracker.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/pcc/utility_function.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/rtp/control_handler.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/rtp/transport_feedback_adapter.h (100%) rename {webrtc => include/webrtc}/modules/congestion_controller/rtp/transport_feedback_demuxer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/blank_detector_desktop_capturer_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/capture_result_desktop_capturer_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/cropped_desktop_frame.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/cropping_window_capturer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_and_cursor_composer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_capture_options.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_capture_types.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_capturer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_capturer_differ_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_capturer_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_frame.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_frame_generator.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_frame_rotation.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_frame_win.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_geometry.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/desktop_region.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/differ_block.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/differ_vector_sse2.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/fake_desktop_capturer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/fallback_desktop_capturer_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/full_screen_application_handler.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/full_screen_window_detector.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/base_capturer_pipewire.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/mouse_cursor_monitor_x11.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/screen_capturer_pipewire.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/screen_capturer_x11.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/shared_x_display.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/window_capturer_pipewire.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/window_capturer_x11.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/window_finder_x11.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/window_list_utils.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/x_atom_cache.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/x_error_trap.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/x_server_pixel_buffer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/linux/x_window_property.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/desktop_configuration.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/desktop_configuration_monitor.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/desktop_frame_cgimage.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/desktop_frame_iosurface.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/desktop_frame_provider.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/full_screen_mac_application_handler.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/screen_capturer_mac.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mac/window_list_utils.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mock_desktop_capturer_callback.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mouse_cursor.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/mouse_cursor_monitor.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/resolution_tracker.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/rgba_color.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/screen_capture_frame_queue.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/screen_capturer_helper.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/screen_drawer.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/screen_drawer_lock_posix.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/shared_desktop_frame.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/shared_memory.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/test_utils.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/cursor.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/cursor_unittest_resources.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/d3d_device.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/desktop.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/display_configuration_monitor.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_adapter_duplicator.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_context.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_duplicator_controller.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_frame.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_output_duplicator.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_texture.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_texture_mapping.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/dxgi_texture_staging.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/full_screen_win_application_handler.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/scoped_gdi_object.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/scoped_thread_desktop.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/screen_capture_utils.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/screen_capturer_win_directx.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/screen_capturer_win_gdi.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/screen_capturer_win_magnifier.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/selected_window_context.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/win/window_capture_utils.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/window_finder.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/window_finder_mac.h (100%) rename {webrtc => include/webrtc}/modules/desktop_capture/window_finder_win.h (100%) rename {webrtc => include/webrtc}/modules/include/module.h (100%) rename {webrtc => include/webrtc}/modules/include/module_common_types.h (100%) rename {webrtc => include/webrtc}/modules/include/module_common_types_public.h (100%) rename {webrtc => include/webrtc}/modules/include/module_fec_types.h (100%) rename {webrtc => include/webrtc}/modules/pacing/bitrate_prober.h (100%) rename {webrtc => include/webrtc}/modules/pacing/interval_budget.h (100%) rename {webrtc => include/webrtc}/modules/pacing/paced_sender.h (100%) rename {webrtc => include/webrtc}/modules/pacing/pacing_controller.h (100%) rename {webrtc => include/webrtc}/modules/pacing/packet_router.h (100%) rename {webrtc => include/webrtc}/modules/pacing/round_robin_packet_queue.h (100%) rename {webrtc => include/webrtc}/modules/pacing/rtp_packet_pacer.h (100%) rename {webrtc => include/webrtc}/modules/pacing/task_queue_paced_sender.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/aimd_rate_control.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/include/bwe_defines.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/inter_arrival.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/overuse_detector.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/overuse_estimator.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/remote_estimator_proxy.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/test/bwe_test_logging.h (100%) rename {webrtc => include/webrtc}/modules/remote_bitrate_estimator/tools/bwe_rtp.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/flexfec_receiver.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/flexfec_sender.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/receive_statistics.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/remote_ntp_time_estimator.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/report_block_data.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/rtcp_statistics.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/rtp_cvo.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/rtp_header_extension_map.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/rtp_packet_sender.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/rtp_rtcp.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/rtp_rtcp_defines.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/include/ulpfec_receiver.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/mocks/mock_recovered_packet_receiver.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/mocks/mock_rtcp_bandwidth_observer.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/absolute_capture_time_receiver.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/absolute_capture_time_sender.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/byte_io.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/create_video_rtp_depacketizer.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/dtmf_queue.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/fec_private_tables_bursty.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/fec_private_tables_random.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/fec_test_helper.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/flexfec_header_reader_writer.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/forward_error_correction.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/forward_error_correction_internal.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/packet_loss_stats.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/receive_statistics_impl.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_nack_stats.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/app.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/bye.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/common_header.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/dlrr.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/fir.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/loss_notification.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/nack.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/pli.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/psfb.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/rapid_resync_request.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/remb.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/remote_estimate.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/report_block.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/rrtr.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/sdes.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/sender_report.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/target_bitrate.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/tmmb_item.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_receiver.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_sender.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_transceiver.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_transceiver_config.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtcp_transceiver_impl.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_dependency_descriptor_reader.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_dependency_descriptor_writer.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_descriptor_authentication.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_format.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_format_h264.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_format_video_generic.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_format_vp8.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_format_vp8_test_helper.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_format_vp9.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_header_extension_size.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_header_extensions.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_packet.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_packet_history.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_packet_received.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_packet_to_send.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_packetizer_av1.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_rtcp_config.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_rtcp_impl.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_sender.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_sender_audio.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_sender_egress.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_sender_video.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_sender_video_frame_transformer_delegate.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_sequence_number_map.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_utility.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/rtp_video_header.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/source_tracker.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/time_util.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/tmmbr_help.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/ulpfec_generator.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/ulpfec_header_reader_writer.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/ulpfec_receiver_impl.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_fec_generator.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer_av1.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer_generic.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer_raw.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer_vp8.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/source/video_rtp_depacketizer_vp9.h (100%) rename {webrtc => include/webrtc}/modules/rtp_rtcp/test/testFec/average_residual_loss_xor_codes.h (100%) rename {webrtc => include/webrtc}/modules/third_party/fft/fft.h (100%) rename {webrtc => include/webrtc}/modules/third_party/g711/g711.h (100%) rename {webrtc => include/webrtc}/modules/third_party/g722/g722_enc_dec.h (100%) rename {webrtc => include/webrtc}/modules/third_party/portaudio/pa_memorybarrier.h (100%) rename {webrtc => include/webrtc}/modules/third_party/portaudio/pa_ringbuffer.h (100%) rename {webrtc => include/webrtc}/modules/utility/include/helpers_android.h (100%) rename {webrtc => include/webrtc}/modules/utility/include/jvm_android.h (100%) rename {webrtc => include/webrtc}/modules/utility/include/mock/mock_process_thread.h (100%) rename {webrtc => include/webrtc}/modules/utility/include/process_thread.h (100%) rename {webrtc => include/webrtc}/modules/utility/source/process_thread_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/device_info_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/linux/device_info_linux.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/linux/video_capture_linux.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/video_capture.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/video_capture_config.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/video_capture_defines.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/video_capture_factory.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/video_capture_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/windows/device_info_ds.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/windows/help_functions_ds.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/windows/sink_filter_ds.h (100%) rename {webrtc => include/webrtc}/modules/video_capture/windows/video_capture_ds.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codec_timer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/av1/libaom_av1_decoder.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/av1/libaom_av1_encoder.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/h264/h264_color_space.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/h264/h264_decoder_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/h264/h264_encoder_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/h264/include/h264.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/h264/include/h264_globals.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/interface/common_constants.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/multiplex/include/augmented_video_frame_buffer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/multiplex/include/multiplex_decoder_adapter.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/multiplex/multiplex_encoded_image_packer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/test/android_codec_factory_helper.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/test/objc_codec_factory_helper.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/test/video_codec_unittest.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/test/videocodec_test_stats_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/test/videoprocessor.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/default_temporal_layers.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/include/temporal_layers_checker.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/include/vp8.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/include/vp8_globals.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/libvpx_interface.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/libvpx_vp8_decoder.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/screenshare_layers.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/temporal_layers.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp8/test/mock_libvpx_interface.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp9/include/vp9.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp9/include/vp9_globals.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp9/svc_config.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp9/svc_rate_allocator.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp9/vp9_frame_buffer_pool.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/codecs/vp9/vp9_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/decoder_database.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/decoding_state.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/encoded_frame.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/event_wrapper.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/fec_controller_default.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/fec_rate_table.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/frame_buffer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/frame_buffer2.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/frame_dependencies_calculator.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/frame_object.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/generic_decoder.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/h264_sprop_parameter_sets.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/h264_sps_pps_tracker.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/histogram.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/include/video_codec_initializer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/include/video_codec_interface.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/include/video_coding.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/include/video_coding_defines.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/include/video_error_codes.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/inter_frame_delay.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/internal_defines.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/jitter_buffer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/jitter_buffer_common.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/jitter_estimator.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/loss_notification_controller.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/media_opt_util.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/nack_module.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/packet.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/packet_buffer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/receiver.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/rtp_frame_reference_finder.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/rtt_filter.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/session_info.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/test/stream_generator.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/timestamp_map.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/timing.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/unique_timestamp_counter.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/decoded_frames_history.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/frame_dropper.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/framerate_controller.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/ivf_file_reader.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/ivf_file_writer.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/quality_scaler.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/simulcast_rate_allocator.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/simulcast_test_fixture_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/simulcast_utility.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/vp8_header_parser.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/utility/vp9_uncompressed_header_parser.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/video_coding_impl.h (100%) rename {webrtc => include/webrtc}/modules/video_coding/video_receiver2.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/util/denoiser_filter.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/util/denoiser_filter_c.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/util/denoiser_filter_neon.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/util/denoiser_filter_sse2.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/util/noise_estimation.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/util/skin_detection.h (100%) rename {webrtc => include/webrtc}/modules/video_processing/video_denoiser.h (100%) rename {webrtc => include/webrtc}/p2p/base/async_stun_tcp_socket.h (100%) rename {webrtc => include/webrtc}/p2p/base/basic_async_resolver_factory.h (100%) rename {webrtc => include/webrtc}/p2p/base/basic_ice_controller.h (100%) rename {webrtc => include/webrtc}/p2p/base/basic_packet_socket_factory.h (100%) rename {webrtc => include/webrtc}/p2p/base/candidate_pair_interface.h (100%) rename {webrtc => include/webrtc}/p2p/base/connection.h (100%) rename {webrtc => include/webrtc}/p2p/base/connection_info.h (100%) rename {webrtc => include/webrtc}/p2p/base/default_ice_transport_factory.h (100%) rename {webrtc => include/webrtc}/p2p/base/dtls_transport.h (100%) rename {webrtc => include/webrtc}/p2p/base/dtls_transport_factory.h (100%) rename {webrtc => include/webrtc}/p2p/base/dtls_transport_internal.h (100%) rename {webrtc => include/webrtc}/p2p/base/fake_dtls_transport.h (100%) rename {webrtc => include/webrtc}/p2p/base/fake_ice_transport.h (100%) rename {webrtc => include/webrtc}/p2p/base/fake_packet_transport.h (100%) rename {webrtc => include/webrtc}/p2p/base/fake_port_allocator.h (100%) rename {webrtc => include/webrtc}/p2p/base/ice_controller_factory_interface.h (100%) rename {webrtc => include/webrtc}/p2p/base/ice_controller_interface.h (100%) rename {webrtc => include/webrtc}/p2p/base/ice_credentials_iterator.h (100%) rename {webrtc => include/webrtc}/p2p/base/ice_transport_internal.h (100%) rename {webrtc => include/webrtc}/p2p/base/mdns_message.h (100%) rename {webrtc => include/webrtc}/p2p/base/mock_async_resolver.h (100%) rename {webrtc => include/webrtc}/p2p/base/mock_ice_transport.h (100%) rename {webrtc => include/webrtc}/p2p/base/p2p_constants.h (100%) rename {webrtc => include/webrtc}/p2p/base/p2p_transport_channel.h (100%) rename {webrtc => include/webrtc}/p2p/base/p2p_transport_channel_ice_field_trials.h (100%) rename {webrtc => include/webrtc}/p2p/base/packet_transport_internal.h (100%) rename {webrtc => include/webrtc}/p2p/base/port.h (100%) rename {webrtc => include/webrtc}/p2p/base/port_allocator.h (100%) rename {webrtc => include/webrtc}/p2p/base/port_interface.h (100%) rename {webrtc => include/webrtc}/p2p/base/pseudo_tcp.h (100%) rename {webrtc => include/webrtc}/p2p/base/regathering_controller.h (100%) rename {webrtc => include/webrtc}/p2p/base/stun_port.h (100%) rename {webrtc => include/webrtc}/p2p/base/stun_request.h (100%) rename {webrtc => include/webrtc}/p2p/base/stun_server.h (100%) rename {webrtc => include/webrtc}/p2p/base/tcp_port.h (100%) rename {webrtc => include/webrtc}/p2p/base/test_stun_server.h (100%) rename {webrtc => include/webrtc}/p2p/base/test_turn_customizer.h (100%) rename {webrtc => include/webrtc}/p2p/base/test_turn_server.h (100%) rename {webrtc => include/webrtc}/p2p/base/transport_description.h (100%) rename {webrtc => include/webrtc}/p2p/base/transport_description_factory.h (100%) rename {webrtc => include/webrtc}/p2p/base/transport_info.h (100%) rename {webrtc => include/webrtc}/p2p/base/turn_port.h (100%) rename {webrtc => include/webrtc}/p2p/base/turn_server.h (100%) rename {webrtc => include/webrtc}/p2p/base/udp_port.h (100%) rename {webrtc => include/webrtc}/p2p/client/basic_port_allocator.h (100%) rename {webrtc => include/webrtc}/p2p/client/relay_port_factory_interface.h (100%) rename {webrtc => include/webrtc}/p2p/client/turn_port_factory.h (100%) rename {webrtc => include/webrtc}/p2p/stunprober/stun_prober.h (100%) rename {webrtc => include/webrtc}/pc/audio_rtp_receiver.h (100%) rename {webrtc => include/webrtc}/pc/audio_track.h (100%) rename {webrtc => include/webrtc}/pc/channel.h (100%) rename {webrtc => include/webrtc}/pc/channel_interface.h (100%) rename {webrtc => include/webrtc}/pc/channel_manager.h (100%) rename {webrtc => include/webrtc}/pc/composite_data_channel_transport.h (100%) rename {webrtc => include/webrtc}/pc/composite_rtp_transport.h (100%) rename {webrtc => include/webrtc}/pc/data_channel.h (100%) rename {webrtc => include/webrtc}/pc/data_channel_controller.h (100%) rename {webrtc => include/webrtc}/pc/datagram_rtp_transport.h (100%) rename {webrtc => include/webrtc}/pc/dtls_srtp_transport.h (100%) rename {webrtc => include/webrtc}/pc/dtls_transport.h (100%) rename {webrtc => include/webrtc}/pc/dtmf_sender.h (100%) rename {webrtc => include/webrtc}/pc/external_hmac.h (100%) rename {webrtc => include/webrtc}/pc/ice_server_parsing.h (100%) rename {webrtc => include/webrtc}/pc/ice_transport.h (100%) rename {webrtc => include/webrtc}/pc/jitter_buffer_delay.h (100%) rename {webrtc => include/webrtc}/pc/jitter_buffer_delay_interface.h (100%) rename {webrtc => include/webrtc}/pc/jitter_buffer_delay_proxy.h (100%) rename {webrtc => include/webrtc}/pc/jsep_transport.h (100%) rename {webrtc => include/webrtc}/pc/jsep_transport_controller.h (100%) rename {webrtc => include/webrtc}/pc/local_audio_source.h (100%) rename {webrtc => include/webrtc}/pc/media_protocol_names.h (100%) rename {webrtc => include/webrtc}/pc/media_session.h (100%) rename {webrtc => include/webrtc}/pc/media_stream.h (100%) rename {webrtc => include/webrtc}/pc/media_stream_observer.h (100%) rename {webrtc => include/webrtc}/pc/media_stream_track.h (100%) rename {webrtc => include/webrtc}/pc/peer_connection.h (100%) rename {webrtc => include/webrtc}/pc/peer_connection_factory.h (100%) rename {webrtc => include/webrtc}/pc/peer_connection_internal.h (100%) rename {webrtc => include/webrtc}/pc/peer_connection_wrapper.h (100%) rename {webrtc => include/webrtc}/pc/remote_audio_source.h (100%) rename {webrtc => include/webrtc}/pc/rtc_stats_collector.h (100%) rename {webrtc => include/webrtc}/pc/rtc_stats_traversal.h (100%) rename {webrtc => include/webrtc}/pc/rtcp_mux_filter.h (100%) rename {webrtc => include/webrtc}/pc/rtp_media_utils.h (100%) rename {webrtc => include/webrtc}/pc/rtp_parameters_conversion.h (100%) rename {webrtc => include/webrtc}/pc/rtp_receiver.h (100%) rename {webrtc => include/webrtc}/pc/rtp_sender.h (100%) rename {webrtc => include/webrtc}/pc/rtp_transceiver.h (100%) rename {webrtc => include/webrtc}/pc/rtp_transport.h (100%) rename {webrtc => include/webrtc}/pc/rtp_transport_internal.h (100%) rename {webrtc => include/webrtc}/pc/sctp_data_channel_transport.h (100%) rename {webrtc => include/webrtc}/pc/sctp_transport.h (100%) rename {webrtc => include/webrtc}/pc/sctp_utils.h (100%) rename {webrtc => include/webrtc}/pc/sdp_serializer.h (100%) rename {webrtc => include/webrtc}/pc/sdp_utils.h (100%) rename {webrtc => include/webrtc}/pc/session_description.h (100%) rename {webrtc => include/webrtc}/pc/simulcast_description.h (100%) rename {webrtc => include/webrtc}/pc/srtp_filter.h (100%) rename {webrtc => include/webrtc}/pc/srtp_session.h (100%) rename {webrtc => include/webrtc}/pc/srtp_transport.h (100%) rename {webrtc => include/webrtc}/pc/stats_collector.h (100%) rename {webrtc => include/webrtc}/pc/stream_collection.h (100%) rename {webrtc => include/webrtc}/pc/test/android_test_initializer.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_audio_capture_module.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_data_channel_provider.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_peer_connection_base.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_peer_connection_for_stats.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_periodic_video_source.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_periodic_video_track_source.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_rtc_certificate_generator.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_sctp_transport.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_video_track_renderer.h (100%) rename {webrtc => include/webrtc}/pc/test/fake_video_track_source.h (100%) rename {webrtc => include/webrtc}/pc/test/frame_generator_capturer_video_track_source.h (100%) rename {webrtc => include/webrtc}/pc/test/mock_channel_interface.h (100%) rename {webrtc => include/webrtc}/pc/test/mock_data_channel.h (100%) rename {webrtc => include/webrtc}/pc/test/mock_delayable.h (100%) rename {webrtc => include/webrtc}/pc/test/mock_peer_connection_observers.h (100%) rename {webrtc => include/webrtc}/pc/test/mock_rtp_receiver_internal.h (100%) rename {webrtc => include/webrtc}/pc/test/mock_rtp_sender_internal.h (100%) rename {webrtc => include/webrtc}/pc/test/peer_connection_test_wrapper.h (100%) rename {webrtc => include/webrtc}/pc/test/rtc_stats_obtainer.h (100%) rename {webrtc => include/webrtc}/pc/test/rtp_transport_test_util.h (100%) rename {webrtc => include/webrtc}/pc/test/srtp_test_util.h (100%) rename {webrtc => include/webrtc}/pc/test/test_sdp_strings.h (100%) rename {webrtc => include/webrtc}/pc/track_media_info_map.h (100%) rename {webrtc => include/webrtc}/pc/transport_stats.h (100%) rename {webrtc => include/webrtc}/pc/used_ids.h (100%) rename {webrtc => include/webrtc}/pc/video_rtp_receiver.h (100%) rename {webrtc => include/webrtc}/pc/video_rtp_track_source.h (100%) rename {webrtc => include/webrtc}/pc/video_track.h (100%) rename {webrtc => include/webrtc}/pc/video_track_source.h (100%) rename {webrtc => include/webrtc}/pc/webrtc_sdp.h (100%) rename {webrtc => include/webrtc}/pc/webrtc_session_description_factory.h (100%) rename {webrtc => include/webrtc}/rtc_base/arraysize.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_invoker.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_invoker_inl.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_packet_socket.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_resolver_interface.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_socket.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_tcp_socket.h (100%) rename {webrtc => include/webrtc}/rtc_base/async_udp_socket.h (100%) rename {webrtc => include/webrtc}/rtc_base/atomic_ops.h (100%) rename {webrtc => include/webrtc}/rtc_base/bind.h (100%) rename {webrtc => include/webrtc}/rtc_base/bit_buffer.h (100%) rename {webrtc => include/webrtc}/rtc_base/bounded_inline_vector.h (100%) rename {webrtc => include/webrtc}/rtc_base/bounded_inline_vector_impl.h (100%) rename {webrtc => include/webrtc}/rtc_base/buffer.h (100%) rename {webrtc => include/webrtc}/rtc_base/buffer_queue.h (100%) rename {webrtc => include/webrtc}/rtc_base/byte_buffer.h (100%) rename {webrtc => include/webrtc}/rtc_base/byte_order.h (100%) rename {webrtc => include/webrtc}/rtc_base/callback.h (100%) rename {webrtc => include/webrtc}/rtc_base/checks.h (100%) rename {webrtc => include/webrtc}/rtc_base/compile_assert_c.h (100%) rename {webrtc => include/webrtc}/rtc_base/constructor_magic.h (100%) rename {webrtc => include/webrtc}/rtc_base/copy_on_write_buffer.h (100%) rename {webrtc => include/webrtc}/rtc_base/cpu_time.h (100%) rename {webrtc => include/webrtc}/rtc_base/crc32.h (100%) rename {webrtc => include/webrtc}/rtc_base/critical_section.h (100%) rename {webrtc => include/webrtc}/rtc_base/crypt_string.h (100%) rename {webrtc => include/webrtc}/rtc_base/data_rate_limiter.h (100%) rename {webrtc => include/webrtc}/rtc_base/deprecation.h (100%) rename {webrtc => include/webrtc}/rtc_base/dscp.h (100%) rename {webrtc => include/webrtc}/rtc_base/event.h (100%) rename {webrtc => include/webrtc}/rtc_base/event_tracer.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/alr_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/balanced_degradation_settings.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/cpu_speed_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/field_trial_list.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/field_trial_parser.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/field_trial_units.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/jitter_upper_bound_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/keyframe_interval_settings.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/min_video_bitrate_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/normalize_simulcast_size_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/quality_rampup_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/quality_scaler_settings.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/quality_scaling_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/rate_control_settings.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/rtt_mult_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/stable_target_rate_experiment.h (100%) rename {webrtc => include/webrtc}/rtc_base/experiments/struct_parameters_parser.h (100%) rename {webrtc => include/webrtc}/rtc_base/fake_clock.h (100%) rename {webrtc => include/webrtc}/rtc_base/fake_mdns_responder.h (100%) rename {webrtc => include/webrtc}/rtc_base/fake_network.h (100%) rename {webrtc => include/webrtc}/rtc_base/fake_ssl_identity.h (100%) rename {webrtc => include/webrtc}/rtc_base/file_rotating_stream.h (100%) rename {webrtc => include/webrtc}/rtc_base/firewall_socket_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/format_macros.h (100%) rename {webrtc => include/webrtc}/rtc_base/gtest_prod_util.h (100%) rename {webrtc => include/webrtc}/rtc_base/gunit.h (100%) rename {webrtc => include/webrtc}/rtc_base/helpers.h (100%) rename {webrtc => include/webrtc}/rtc_base/http_common.h (100%) rename {webrtc => include/webrtc}/rtc_base/ifaddrs_android.h (100%) rename {webrtc => include/webrtc}/rtc_base/ifaddrs_converter.h (100%) rename {webrtc => include/webrtc}/rtc_base/ignore_wundef.h (100%) rename {webrtc => include/webrtc}/rtc_base/ip_address.h (100%) rename {webrtc => include/webrtc}/rtc_base/keep_ref_until_done.h (100%) rename {webrtc => include/webrtc}/rtc_base/location.h (100%) rename {webrtc => include/webrtc}/rtc_base/log_sinks.h (100%) rename {webrtc => include/webrtc}/rtc_base/logging.h (100%) rename {webrtc => include/webrtc}/rtc_base/mdns_responder_interface.h (100%) rename {webrtc => include/webrtc}/rtc_base/memory/aligned_malloc.h (100%) rename {webrtc => include/webrtc}/rtc_base/memory/fifo_buffer.h (100%) rename {webrtc => include/webrtc}/rtc_base/memory_stream.h (100%) rename {webrtc => include/webrtc}/rtc_base/memory_usage.h (100%) rename {webrtc => include/webrtc}/rtc_base/message_buffer_reader.h (100%) rename {webrtc => include/webrtc}/rtc_base/message_digest.h (100%) rename {webrtc => include/webrtc}/rtc_base/message_handler.h (100%) rename {webrtc => include/webrtc}/rtc_base/nat_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/nat_socket_factory.h (100%) rename {webrtc => include/webrtc}/rtc_base/nat_types.h (100%) rename {webrtc => include/webrtc}/rtc_base/net_helper.h (100%) rename {webrtc => include/webrtc}/rtc_base/net_helpers.h (100%) rename {webrtc => include/webrtc}/rtc_base/network.h (100%) rename {webrtc => include/webrtc}/rtc_base/network/sent_packet.h (100%) rename {webrtc => include/webrtc}/rtc_base/network_constants.h (100%) rename {webrtc => include/webrtc}/rtc_base/network_monitor.h (100%) rename {webrtc => include/webrtc}/rtc_base/network_route.h (100%) rename {webrtc => include/webrtc}/rtc_base/null_socket_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/divide_round.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/event_based_exponential_moving_average.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/event_rate_counter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/exp_filter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/histogram_percentile_counter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/math_utils.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/mod_ops.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/moving_average.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/moving_max_counter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/moving_median_filter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/percentile_filter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/running_statistics.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/safe_compare.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/safe_conversions.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/safe_conversions_impl.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/safe_minmax.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/sample_counter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/sample_stats.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/samples_stats_counter.h (100%) rename {webrtc => include/webrtc}/rtc_base/numerics/sequence_number_util.h (100%) rename {webrtc => include/webrtc}/rtc_base/one_time_event.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_adapter.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_certificate.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_digest.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_identity.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_session_cache.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_stream_adapter.h (100%) rename {webrtc => include/webrtc}/rtc_base/openssl_utility.h (100%) rename {webrtc => include/webrtc}/rtc_base/operations_chain.h (100%) rename {webrtc => include/webrtc}/rtc_base/physical_socket_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/platform_thread.h (100%) rename {webrtc => include/webrtc}/rtc_base/platform_thread_types.h (100%) rename {webrtc => include/webrtc}/rtc_base/protobuf_utils.h (100%) rename {webrtc => include/webrtc}/rtc_base/proxy_info.h (100%) rename {webrtc => include/webrtc}/rtc_base/proxy_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/race_checker.h (100%) rename {webrtc => include/webrtc}/rtc_base/random.h (100%) rename {webrtc => include/webrtc}/rtc_base/rate_limiter.h (100%) rename {webrtc => include/webrtc}/rtc_base/rate_statistics.h (100%) rename {webrtc => include/webrtc}/rtc_base/rate_tracker.h (100%) rename {webrtc => include/webrtc}/rtc_base/ref_count.h (100%) rename {webrtc => include/webrtc}/rtc_base/ref_counted_object.h (100%) rename {webrtc => include/webrtc}/rtc_base/ref_counter.h (100%) rename {webrtc => include/webrtc}/rtc_base/rolling_accumulator.h (100%) rename {webrtc => include/webrtc}/rtc_base/rtc_certificate.h (100%) rename {webrtc => include/webrtc}/rtc_base/rtc_certificate_generator.h (100%) rename {webrtc => include/webrtc}/rtc_base/sanitizer.h (100%) rename {webrtc => include/webrtc}/rtc_base/server_socket_adapters.h (100%) rename {webrtc => include/webrtc}/rtc_base/signal_thread.h (100%) rename {webrtc => include/webrtc}/rtc_base/sigslot_repeater.h (100%) rename {webrtc => include/webrtc}/rtc_base/sigslot_tester.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_adapters.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_address.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_address_pair.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_factory.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_stream.h (100%) rename {webrtc => include/webrtc}/rtc_base/socket_unittest.h (100%) rename {webrtc => include/webrtc}/rtc_base/ssl_adapter.h (100%) rename {webrtc => include/webrtc}/rtc_base/ssl_certificate.h (100%) rename {webrtc => include/webrtc}/rtc_base/ssl_fingerprint.h (100%) rename {webrtc => include/webrtc}/rtc_base/ssl_identity.h (100%) rename {webrtc => include/webrtc}/rtc_base/ssl_roots.h (100%) rename {webrtc => include/webrtc}/rtc_base/ssl_stream_adapter.h (100%) rename {webrtc => include/webrtc}/rtc_base/stream.h (100%) rename {webrtc => include/webrtc}/rtc_base/string_encode.h (100%) rename {webrtc => include/webrtc}/rtc_base/string_to_number.h (100%) rename {webrtc => include/webrtc}/rtc_base/string_utils.h (100%) rename {webrtc => include/webrtc}/rtc_base/stringize_macros.h (100%) rename {webrtc => include/webrtc}/rtc_base/strings/audio_format_to_string.h (100%) rename {webrtc => include/webrtc}/rtc_base/strings/json.h (100%) rename {webrtc => include/webrtc}/rtc_base/strings/string_builder.h (100%) rename {webrtc => include/webrtc}/rtc_base/strings/string_format.h (100%) rename {webrtc => include/webrtc}/rtc_base/swap_queue.h (100%) rename {webrtc => include/webrtc}/rtc_base/synchronization/rw_lock_posix.h (100%) rename {webrtc => include/webrtc}/rtc_base/synchronization/rw_lock_win.h (100%) rename {webrtc => include/webrtc}/rtc_base/synchronization/rw_lock_wrapper.h (100%) rename {webrtc => include/webrtc}/rtc_base/synchronization/sequence_checker.h (100%) rename {webrtc => include/webrtc}/rtc_base/synchronization/yield_policy.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/arch.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/asm_defines.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/cocoa_threading.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/file_wrapper.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/gcd_helpers.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/ignore_warnings.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/inline.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/rtc_export.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/rtc_export_template.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/thread_registry.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/unused.h (100%) rename {webrtc => include/webrtc}/rtc_base/system/warn_current_thread_is_deadlocked.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_queue.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_queue_for_test.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_queue_gcd.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_queue_libevent.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_queue_stdlib.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_queue_win.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_utils/pending_task_safety_flag.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_utils/repeating_task.h (100%) rename {webrtc => include/webrtc}/rtc_base/task_utils/to_queued_task.h (100%) rename {webrtc => include/webrtc}/rtc_base/test_base64.h (100%) rename {webrtc => include/webrtc}/rtc_base/test_certificate_verifier.h (100%) rename {webrtc => include/webrtc}/rtc_base/test_client.h (100%) rename {webrtc => include/webrtc}/rtc_base/test_echo_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/test_utils.h (100%) rename {webrtc => include/webrtc}/rtc_base/third_party/base64/base64.h (100%) rename {webrtc => include/webrtc}/rtc_base/third_party/sigslot/sigslot.h (100%) rename {webrtc => include/webrtc}/rtc_base/thread.h (100%) rename {webrtc => include/webrtc}/rtc_base/thread_annotations.h (100%) rename {webrtc => include/webrtc}/rtc_base/thread_checker.h (100%) rename {webrtc => include/webrtc}/rtc_base/thread_message.h (100%) rename {webrtc => include/webrtc}/rtc_base/time/timestamp_extrapolator.h (100%) rename {webrtc => include/webrtc}/rtc_base/time_utils.h (100%) rename {webrtc => include/webrtc}/rtc_base/timestamp_aligner.h (100%) rename {webrtc => include/webrtc}/rtc_base/trace_event.h (100%) rename {webrtc => include/webrtc}/rtc_base/type_traits.h (100%) rename {webrtc => include/webrtc}/rtc_base/unique_id_generator.h (100%) rename {webrtc => include/webrtc}/rtc_base/units/unit_base.h (100%) rename {webrtc => include/webrtc}/rtc_base/virtual_socket_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/weak_ptr.h (100%) rename {webrtc => include/webrtc}/rtc_base/win/windows_version.h (100%) rename {webrtc => include/webrtc}/rtc_base/win32.h (100%) rename {webrtc => include/webrtc}/rtc_base/win32_socket_init.h (100%) rename {webrtc => include/webrtc}/rtc_base/win32_socket_server.h (100%) rename {webrtc => include/webrtc}/rtc_base/win32_window.h (100%) rename {webrtc => include/webrtc}/rtc_base/zero_memory.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/clock.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/cpu_features_wrapper.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/cpu_info.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/field_trial.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/metrics.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/ntp_time.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/rtp_to_ntp_estimator.h (100%) rename {webrtc => include/webrtc}/system_wrappers/include/sleep.h (100%) delete mode 100644 webrtc/absl/BUILD.bazel delete mode 100644 webrtc/absl/CMakeLists.txt delete mode 100755 webrtc/absl/abseil.podspec.gen.py delete mode 100644 webrtc/absl/algorithm/BUILD.bazel delete mode 100644 webrtc/absl/algorithm/BUILD.gn delete mode 100644 webrtc/absl/algorithm/CMakeLists.txt delete mode 100644 webrtc/absl/base/BUILD.bazel delete mode 100644 webrtc/absl/base/BUILD.gn delete mode 100644 webrtc/absl/base/CMakeLists.txt delete mode 100644 webrtc/absl/base/internal/spinlock_akaros.inc delete mode 100644 webrtc/absl/base/internal/spinlock_linux.inc delete mode 100644 webrtc/absl/base/internal/spinlock_posix.inc delete mode 100644 webrtc/absl/base/internal/spinlock_win32.inc delete mode 100644 webrtc/absl/compiler_config_setting.bzl delete mode 100644 webrtc/absl/container/BUILD.bazel delete mode 100644 webrtc/absl/container/BUILD.gn delete mode 100644 webrtc/absl/container/CMakeLists.txt delete mode 100644 webrtc/absl/copts/AbseilConfigureCopts.cmake delete mode 100644 webrtc/absl/copts/GENERATED_AbseilCopts.cmake delete mode 100644 webrtc/absl/copts/GENERATED_copts.bzl delete mode 100644 webrtc/absl/copts/configure_copts.bzl delete mode 100644 webrtc/absl/copts/copts.py delete mode 100755 webrtc/absl/copts/generate_copts.py delete mode 100644 webrtc/absl/debugging/BUILD.bazel delete mode 100644 webrtc/absl/debugging/BUILD.gn delete mode 100644 webrtc/absl/debugging/CMakeLists.txt delete mode 100644 webrtc/absl/debugging/internal/stacktrace_aarch64-inl.inc delete mode 100644 webrtc/absl/debugging/internal/stacktrace_arm-inl.inc delete mode 100644 webrtc/absl/debugging/internal/stacktrace_generic-inl.inc delete mode 100644 webrtc/absl/debugging/internal/stacktrace_powerpc-inl.inc delete mode 100644 webrtc/absl/debugging/internal/stacktrace_unimplemented-inl.inc delete mode 100644 webrtc/absl/debugging/internal/stacktrace_win32-inl.inc delete mode 100644 webrtc/absl/debugging/internal/stacktrace_x86-inl.inc delete mode 100644 webrtc/absl/debugging/symbolize_elf.inc delete mode 100644 webrtc/absl/debugging/symbolize_unimplemented.inc delete mode 100644 webrtc/absl/debugging/symbolize_win32.inc delete mode 100644 webrtc/absl/flags/BUILD.bazel delete mode 100644 webrtc/absl/flags/BUILD.gn delete mode 100644 webrtc/absl/flags/CMakeLists.txt delete mode 100644 webrtc/absl/functional/BUILD.bazel delete mode 100644 webrtc/absl/functional/BUILD.gn delete mode 100644 webrtc/absl/functional/CMakeLists.txt delete mode 100644 webrtc/absl/hash/BUILD.bazel delete mode 100644 webrtc/absl/hash/BUILD.gn delete mode 100644 webrtc/absl/hash/CMakeLists.txt delete mode 100644 webrtc/absl/memory/BUILD.bazel delete mode 100644 webrtc/absl/memory/BUILD.gn delete mode 100644 webrtc/absl/memory/CMakeLists.txt delete mode 100644 webrtc/absl/meta/BUILD.bazel delete mode 100644 webrtc/absl/meta/BUILD.gn delete mode 100644 webrtc/absl/meta/CMakeLists.txt delete mode 100644 webrtc/absl/numeric/BUILD.bazel delete mode 100644 webrtc/absl/numeric/BUILD.gn delete mode 100644 webrtc/absl/numeric/CMakeLists.txt delete mode 100644 webrtc/absl/numeric/int128_have_intrinsic.inc delete mode 100644 webrtc/absl/numeric/int128_no_intrinsic.inc delete mode 100644 webrtc/absl/random/BUILD.bazel delete mode 100644 webrtc/absl/random/BUILD.gn delete mode 100644 webrtc/absl/random/CMakeLists.txt delete mode 100644 webrtc/absl/random/internal/BUILD.bazel delete mode 100644 webrtc/absl/random/internal/BUILD.gn delete mode 100644 webrtc/absl/random/internal/randen-keys.inc delete mode 100644 webrtc/absl/status/BUILD.bazel delete mode 100644 webrtc/absl/status/BUILD.gn delete mode 100644 webrtc/absl/status/CMakeLists.txt delete mode 100644 webrtc/absl/strings/BUILD.bazel delete mode 100644 webrtc/absl/strings/BUILD.gn delete mode 100644 webrtc/absl/strings/CMakeLists.txt delete mode 100644 webrtc/absl/strings/testdata/getline-1.txt delete mode 100644 webrtc/absl/strings/testdata/getline-2.txt delete mode 100644 webrtc/absl/synchronization/BUILD.bazel delete mode 100644 webrtc/absl/synchronization/BUILD.gn delete mode 100644 webrtc/absl/synchronization/CMakeLists.txt delete mode 100644 webrtc/absl/synchronization/internal/mutex_nonprod.inc delete mode 100644 webrtc/absl/time/BUILD.bazel delete mode 100644 webrtc/absl/time/BUILD.gn delete mode 100644 webrtc/absl/time/CMakeLists.txt delete mode 100644 webrtc/absl/time/internal/cctz/BUILD.bazel delete mode 100644 webrtc/absl/time/internal/cctz/BUILD.gn delete mode 100644 webrtc/absl/time/internal/cctz/testdata/README.zoneinfo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/version delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Adak delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Atka delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Belem delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Belize delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Boise delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Creston delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Denver delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Havana delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Lima delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Managua delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Merida delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/New_York delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Nome delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Panama delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Recife delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Regina delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Thule delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/North delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/South delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/West delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/CET delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Cuba delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/EET delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/EST delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Egypt delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Eire delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/London delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Factory delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/GB delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/GMT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/GMT0 delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Greenwich delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/HST delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Hongkong delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Iceland delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Iran delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Israel delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Jamaica delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Japan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Libya delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/MET delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/MST delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/NZ delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Navajo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/PRC delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Poland delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Portugal delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/ROC delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/ROK delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Singapore delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Turkey delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/UCT delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Central delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/UTC delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Universal delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/W-SU delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/WET delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/Zulu delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/localtime delete mode 100644 webrtc/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab delete mode 100644 webrtc/absl/time/internal/get_current_time_chrono.inc delete mode 100644 webrtc/absl/time/internal/get_current_time_posix.inc delete mode 100644 webrtc/absl/time/internal/zoneinfo.inc delete mode 100644 webrtc/absl/types/BUILD.bazel delete mode 100644 webrtc/absl/types/BUILD.gn delete mode 100644 webrtc/absl/types/CMakeLists.txt delete mode 100644 webrtc/absl/utility/BUILD.bazel delete mode 100644 webrtc/absl/utility/BUILD.gn delete mode 100644 webrtc/absl/utility/CMakeLists.txt delete mode 100644 webrtc/api/BUILD.gn delete mode 100644 webrtc/api/DEPS delete mode 100644 webrtc/api/DESIGN.md delete mode 100644 webrtc/api/OWNERS delete mode 100644 webrtc/api/README.md delete mode 100644 webrtc/api/audio/BUILD.gn delete mode 100644 webrtc/api/audio/OWNERS delete mode 100644 webrtc/api/audio/test/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/L16/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/OWNERS delete mode 100644 webrtc/api/audio_codecs/g711/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/g722/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/ilbc/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/isac/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/opus/BUILD.gn delete mode 100644 webrtc/api/audio_codecs/test/BUILD.gn delete mode 100644 webrtc/api/crypto/BUILD.gn delete mode 100644 webrtc/api/neteq/BUILD.gn delete mode 100644 webrtc/api/neteq/DEPS delete mode 100644 webrtc/api/neteq/OWNERS delete mode 100644 webrtc/api/rtc_event_log/BUILD.gn delete mode 100644 webrtc/api/stats/OWNERS delete mode 100644 webrtc/api/task_queue/BUILD.gn delete mode 100644 webrtc/api/task_queue/DEPS delete mode 100644 webrtc/api/test/DEPS delete mode 100644 webrtc/api/test/OWNERS delete mode 100644 webrtc/api/test/network_emulation/BUILD.gn delete mode 100644 webrtc/api/test/network_emulation/DEPS delete mode 100644 webrtc/api/test/video/BUILD.gn delete mode 100644 webrtc/api/transport/BUILD.gn delete mode 100644 webrtc/api/transport/DEPS delete mode 100644 webrtc/api/transport/OWNERS delete mode 100644 webrtc/api/transport/media/BUILD.gn delete mode 100644 webrtc/api/transport/rtp/BUILD.gn delete mode 100644 webrtc/api/units/BUILD.gn delete mode 100644 webrtc/api/units/OWNERS delete mode 100644 webrtc/api/video/BUILD.gn delete mode 100644 webrtc/api/video/DEPS delete mode 100644 webrtc/api/video/OWNERS delete mode 100644 webrtc/api/video/test/BUILD.gn delete mode 100644 webrtc/api/video_codecs/BUILD.gn delete mode 100644 webrtc/api/video_codecs/OWNERS delete mode 100644 webrtc/api/video_codecs/test/BUILD.gn delete mode 100644 webrtc/api/voip/BUILD.gn delete mode 100644 webrtc/api/voip/DEPS delete mode 100644 webrtc/base/BUILD.gn delete mode 100644 webrtc/base/DEPS delete mode 100644 webrtc/base/OWNERS delete mode 100644 webrtc/base/PRESUBMIT.py delete mode 100644 webrtc/base/README.md delete mode 100644 webrtc/base/SECURITY_OWNERS delete mode 100644 webrtc/base/allocator/BUILD.gn delete mode 100644 webrtc/base/allocator/OWNERS delete mode 100644 webrtc/base/allocator/README.md delete mode 100644 webrtc/base/allocator/allocator.gni delete mode 100644 webrtc/base/allocator/allocator_interception_mac.mm delete mode 100644 webrtc/base/allocator/allocator_interception_mac_unittest.mm delete mode 100644 webrtc/base/allocator/partition_allocator/OWNERS delete mode 100644 webrtc/base/allocator/partition_allocator/PartitionAlloc.md delete mode 100644 webrtc/base/android/OWNERS delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ActivityState.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ApkAssets.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ApplicationStatus.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/BaseSwitches.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/BuildInfo.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/BundleUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/Callback.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/CollectionUtil.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/CommandLine.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/CommandLineInitUtil.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/Consumer.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ContentUriUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ContextUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/CpuFeatures.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/DiscardableReferencePool.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/EarlyTraceEvent.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/EventLog.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/FeatureList.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/FieldTrialList.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/FileUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/Function.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ImportantFileWriterAndroid.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/IntStringCallback.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/IntentUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/JNIUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/JavaExceptionReporter.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/JavaHandlerThread.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/JniException.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/JniStaticTestMocker.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/LifetimeAssert.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/LocaleUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/Log.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/MathUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/MemoryPressureListener.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/NonThreadSafe.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ObserverList.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/PackageManagerUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/PackageUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/PathService.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/PathUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/PiiElider.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/PowerMonitor.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/Promise.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/SecureRandomInitializer.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/StreamUtil.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/StrictModeContext.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/SysUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/ThreadUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/TimeUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/TimezoneUtils.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/TraceEvent.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/UnguessableToken.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/UserData.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/UserDataHost.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/AccessedByNative.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/CalledByNative.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/CalledByNativeJavaTest.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/CheckDiscard.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/DisabledCalledByNativeJavaTest.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/DoNotInline.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/JNINamespace.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/MainDex.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/NativeJavaTestFeatures.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/NativeMethods.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/RemovableInRelease.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/UsedByReflection.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipop.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnLollipopMR1.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnM.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnN.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnNMR1.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnO.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnP.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/annotations/VerifiesOnQ.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/compat/ApiHelperForM.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/compat/ApiHelperForN.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/compat/ApiHelperForO.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/compat/ApiHelperForOMR1.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/compat/ApiHelperForP.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/compat/ApiHelperForQ.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/LegacyLinker.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/Linker.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/LoaderErrors.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/ModernLinker.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/NativeLibraryPreloader.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/library_loader/ProcessInitException.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/memory/JavaHeapDumpGenerator.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/memory/MemoryPressureCallback.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/memory/MemoryPressureMonitor.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/memory/MemoryPressureUma.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/CachingUmaRecorder.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/NativeUmaRecorder.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/NoopUmaRecorder.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/RecordHistogram.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/RecordUserAction.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/ScopedSysTraceEvent.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/StatisticsRecorderAndroid.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/UmaRecorder.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/UmaRecorderHolder.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/metrics/forwarding_synchronization.md delete mode 100644 webrtc/base/android/java/src/org/chromium/base/multidex/ChromiumMultiDexInstaller.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/BindService.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/ChildConnectionAllocator.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/ChildProcessConstants.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/ChildProcessLauncher.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/ChildProcessServiceDelegate.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/FileDescriptorInfo.aidl delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/FileDescriptorInfo.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/IChildProcessService.aidl delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/IParentProcess.aidl delete mode 100644 webrtc/base/android/java/src/org/chromium/base/process_launcher/OWNERS delete mode 100644 webrtc/base/android/java/src/org/chromium/base/supplier/DestroyableObservableSupplier.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/supplier/ObservableSupplier.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/supplier/ObservableSupplierImpl.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/supplier/Supplier.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/AsyncTask.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/BackgroundOnlyAsyncTask.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/ChoreographerTaskRunner.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/ChromeThreadPoolExecutor.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/DefaultTaskExecutor.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/OWNERS delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/PostTask.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/SequencedTaskRunner.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/SequencedTaskRunnerImpl.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/SerialExecutor.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/SingleThreadTaskRunner.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/SingleThreadTaskRunnerImpl.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/TaskExecutor.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/TaskRunner.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/TaskRunnerImpl.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/TaskTraits.java delete mode 100644 webrtc/base/android/java/src/org/chromium/base/task/TaskTraitsExtensionDescriptor.java delete mode 100644 webrtc/base/android/java/templates/BuildConfig.template delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/AdvancedMockContextTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/ApiCompatibilityUtilsTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/AssertsTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/CommandLineInitUtilTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/CommandLineTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/EarlyTraceEventTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/LocaleUtilsTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/ObserverListTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/StrictModeContextTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/UserDataHostTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/library_loader/EarlyNativeTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/metrics/RecordHistogramTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/profiler/TestSupport.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/task/AsyncTaskTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/task/PostTaskTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/task/SequencedTaskRunnerImplTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/task/SingleThreadTaskRunnerImplTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/task/TaskRunnerImplTest.java delete mode 100644 webrtc/base/android/javatests/src/org/chromium/base/util/GarbageCollectionTestUtilsTest.java delete mode 100644 webrtc/base/android/jni_generator/.style.yapf delete mode 100644 webrtc/base/android/jni_generator/AndroidManifest.xml delete mode 100644 webrtc/base/android/jni_generator/BUILD.gn delete mode 100644 webrtc/base/android/jni_generator/OWNERS delete mode 100644 webrtc/base/android/jni_generator/PRESUBMIT.py delete mode 100644 webrtc/base/android/jni_generator/README.md delete mode 100644 webrtc/base/android/jni_generator/TestSampleFeatureList.java delete mode 100644 webrtc/base/android/jni_generator/android_jar.classes delete mode 100644 webrtc/base/android/jni_generator/config.gni delete mode 100644 webrtc/base/android/jni_generator/golden/HashedSampleForAnnotationProcessorGenJni.2.golden delete mode 100644 webrtc/base/android/jni_generator/golden/HashedSampleForAnnotationProcessorGenJni.golden delete mode 100644 webrtc/base/android/jni_generator/golden/HashedSampleForAnnotationProcessor_jni.golden delete mode 100644 webrtc/base/android/jni_generator/golden/SampleForAnnotationProcessor_jni.golden delete mode 100644 webrtc/base/android/jni_generator/golden/SampleForTests_jni.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testCalledByNativeJavaTest.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testCalledByNatives.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testConstantsFromJavaP.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testFromJavaP.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testFromJavaPGenerics.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testGenJniFlagsDisabled.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testGenJniFlagsMocksEnabled.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testGenJniFlagsMocksRequired.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testInnerClassNatives.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuter.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testInnerClassNativesBothInnerAndOuterRegistrations.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testInnerClassNativesMultiple.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testInputStream.javap delete mode 100644 webrtc/base/android/jni_generator/golden/testMotionEvent.javap delete mode 100644 webrtc/base/android/jni_generator/golden/testMotionEvent.javap7 delete mode 100644 webrtc/base/android/jni_generator/golden/testMultipleJNIAdditionalImport.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testNativeExportsOnlyOption.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testNatives.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testNativesLong.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testNativesRegistrations.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testProxyNatives.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testProxyNativesJava.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testProxyNativesMainDex.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testProxyNativesMainDexAndNonMainDex.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testProxyNativesRegistrations.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testProxyNativesWithNatives.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testREForNatives.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testSingleJNIAdditionalImport.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testStaticBindingCaller.golden delete mode 100644 webrtc/base/android/jni_generator/golden/testTracing.golden delete mode 100644 webrtc/base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForAnnotationProcessor.java delete mode 100644 webrtc/base/android/jni_generator/java/src/org/chromium/example/jni_generator/SampleForTests.java delete mode 100644 webrtc/base/android/jni_generator/java/src/org/chromium/jni_generator/JniProcessor.java delete mode 100755 webrtc/base/android/jni_generator/jni_generator.py delete mode 100644 webrtc/base/android/jni_generator/jni_generator.pydeps delete mode 100755 webrtc/base/android/jni_generator/jni_generator_tests.py delete mode 100755 webrtc/base/android/jni_generator/jni_refactorer.py delete mode 100755 webrtc/base/android/jni_generator/jni_registration_generator.py delete mode 100644 webrtc/base/android/jni_generator/jni_registration_generator.pydeps delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/ApplicationStatusTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/DiscardableReferencePoolTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/FileUtilsTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/LifetimeAssertTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/LogTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/NonThreadSafeTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/PiiEliderTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/PromiseTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/memory/MemoryPressureMonitorTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/metrics/CachingUmaRecorderTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/metrics/test/ShadowRecordHistogram.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/process_launcher/ChildConnectionAllocatorTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/process_launcher/ChildProcessConnectionTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/supplier/ObservableSupplierImplTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/task/AsyncTaskThreadTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/task/TaskTraitsTest.java delete mode 100644 webrtc/base/android/junit/src/org/chromium/base/util/GarbageCollectionTestUtilsUnitTest.java delete mode 100644 webrtc/base/android/library_loader/README.md delete mode 100644 webrtc/base/android/library_loader/anchor_functions.lds delete mode 100644 webrtc/base/android/linker/BUILD.gn delete mode 100644 webrtc/base/android/linker/DEPS delete mode 100644 webrtc/base/android/linker/config.gni delete mode 100644 webrtc/base/android/orderfile/BUILD.gn delete mode 100644 webrtc/base/android/orderfile/OWNERS delete mode 100644 webrtc/base/android/proguard/OWNERS delete mode 100644 webrtc/base/android/proguard/chromium_apk.flags delete mode 100644 webrtc/base/android/proguard/chromium_code.flags delete mode 100644 webrtc/base/android/proguard/disable_all_obfuscation.flags delete mode 100644 webrtc/base/android/proguard/enable_obfuscation.flags delete mode 100644 webrtc/base/android/resource_exclusions.gni delete mode 100644 webrtc/base/base_paths_mac.mm delete mode 100644 webrtc/base/bind_unittest.nc delete mode 100644 webrtc/base/callback_list_unittest.nc delete mode 100644 webrtc/base/callback_unittest.nc delete mode 100644 webrtc/base/containers/OWNERS delete mode 100644 webrtc/base/containers/README.md delete mode 100644 webrtc/base/containers/buffer_iterator_unittest.nc delete mode 100644 webrtc/base/containers/checked_iterators_unittest.nc delete mode 100644 webrtc/base/containers/span_unittest.nc delete mode 100644 webrtc/base/critical_closure_internal_ios.mm delete mode 100644 webrtc/base/enterprise_util_mac.mm delete mode 100644 webrtc/base/enterprise_util_mac_unittest.mm delete mode 100644 webrtc/base/file_version_info_mac.mm delete mode 100644 webrtc/base/files/file_util_mac.mm delete mode 100644 webrtc/base/fuchsia/OWNERS delete mode 100644 webrtc/base/fuchsia/test.fidl delete mode 100644 webrtc/base/hash/README.md delete mode 100644 webrtc/base/i18n/OWNERS delete mode 100644 webrtc/base/ios/OWNERS delete mode 100644 webrtc/base/ios/crb_protocol_observers.mm delete mode 100644 webrtc/base/ios/crb_protocol_observers_unittest.mm delete mode 100644 webrtc/base/ios/device_util.mm delete mode 100644 webrtc/base/ios/device_util_unittest.mm delete mode 100644 webrtc/base/ios/ios_util.mm delete mode 100644 webrtc/base/ios/ns_error_util.mm delete mode 100644 webrtc/base/ios/scoped_critical_action.mm delete mode 100644 webrtc/base/ios/weak_nsobject.mm delete mode 100644 webrtc/base/ios/weak_nsobject_unittest.mm delete mode 100644 webrtc/base/json/OWNERS delete mode 100644 webrtc/base/mac/OWNERS delete mode 100644 webrtc/base/mac/authorization_util.mm delete mode 100644 webrtc/base/mac/bind_objc_block_unittest.mm delete mode 100644 webrtc/base/mac/bind_objc_block_unittest_arc.mm delete mode 100644 webrtc/base/mac/bundle_locations.mm delete mode 100644 webrtc/base/mac/call_with_eh_frame_asm.S delete mode 100644 webrtc/base/mac/call_with_eh_frame_unittest.mm delete mode 100644 webrtc/base/mac/foundation_util.mm delete mode 100644 webrtc/base/mac/foundation_util_unittest.mm delete mode 100644 webrtc/base/mac/launch_services_util.mm delete mode 100644 webrtc/base/mac/mac_logging.mm delete mode 100644 webrtc/base/mac/mac_util.mm delete mode 100644 webrtc/base/mac/mac_util_unittest.mm delete mode 100644 webrtc/base/mac/objc_release_properties.mm delete mode 100644 webrtc/base/mac/objc_release_properties_unittest.mm delete mode 100644 webrtc/base/mac/scoped_authorizationref.mm delete mode 100644 webrtc/base/mac/scoped_nsautorelease_pool.mm delete mode 100644 webrtc/base/mac/scoped_nsobject_unittest.mm delete mode 100644 webrtc/base/mac/scoped_objc_class_swizzler.mm delete mode 100644 webrtc/base/mac/scoped_objc_class_swizzler_unittest.mm delete mode 100644 webrtc/base/mac/scoped_sending_event.mm delete mode 100644 webrtc/base/mac/scoped_sending_event_unittest.mm delete mode 100644 webrtc/base/mac/sdk_forward_declarations.mm delete mode 100644 webrtc/base/memory/OWNERS delete mode 100644 webrtc/base/memory/checked_ptr_unittest.nc delete mode 100644 webrtc/base/memory/ref_counted_unittest.nc delete mode 100644 webrtc/base/memory/weak_ptr_unittest.nc delete mode 100644 webrtc/base/message_loop/message_pump_mac.mm delete mode 100644 webrtc/base/message_loop/message_pump_mac_unittest.mm delete mode 100644 webrtc/base/metrics/OWNERS delete mode 100644 webrtc/base/metrics/field_trial_params_unittest.nc delete mode 100644 webrtc/base/metrics/histogram_unittest.nc delete mode 100644 webrtc/base/native_library_ios.mm delete mode 100644 webrtc/base/native_library_mac.mm delete mode 100644 webrtc/base/nix/OWNERS delete mode 100644 webrtc/base/numerics/BUILD.gn delete mode 100644 webrtc/base/numerics/DEPS delete mode 100644 webrtc/base/numerics/OWNERS delete mode 100644 webrtc/base/numerics/README.md delete mode 100644 webrtc/base/observer_list_unittest.nc delete mode 100644 webrtc/base/optional_unittest.nc delete mode 100644 webrtc/base/power_monitor/power_monitor_device_source_ios.mm delete mode 100644 webrtc/base/power_monitor/power_monitor_device_source_mac.mm delete mode 100644 webrtc/base/process/OWNERS delete mode 100644 webrtc/base/process/memory_mac.mm delete mode 100644 webrtc/base/process/memory_unittest_mac.mm delete mode 100644 webrtc/base/profiler/OWNERS delete mode 100644 webrtc/base/sampling_heap_profiler/OWNERS delete mode 100644 webrtc/base/sampling_heap_profiler/benchmark-octane.js delete mode 100644 webrtc/base/sequence_checker_unittest.nc delete mode 100644 webrtc/base/strings/OWNERS delete mode 100644 webrtc/base/strings/string16_unittest.nc delete mode 100644 webrtc/base/strings/sys_string_conversions_mac.mm delete mode 100644 webrtc/base/strings/sys_string_conversions_mac_unittest.mm delete mode 100644 webrtc/base/system/sys_info_ios.mm delete mode 100644 webrtc/base/system/sys_info_mac.mm delete mode 100644 webrtc/base/task/OWNERS delete mode 100644 webrtc/base/task/README.md delete mode 100644 webrtc/base/task/sequence_manager/OWNERS delete mode 100644 webrtc/base/task/task_traits_extension_unittest.nc delete mode 100644 webrtc/base/task/task_traits_unittest.nc delete mode 100644 webrtc/base/task/thread_pool/OWNERS delete mode 100644 webrtc/base/task/thread_pool/historical_histogram_data.md delete mode 100644 webrtc/base/task/thread_pool/thread_group_native_mac.mm delete mode 100644 webrtc/base/test/BUILD.gn delete mode 100644 webrtc/base/test/DEPS delete mode 100644 webrtc/base/test/OWNERS delete mode 100644 webrtc/base/test/android/OWNERS delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/ContentUriTestUtils.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/GarbageCollectionTestUtils.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/ITestCallback.aidl delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/ITestController.aidl delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MainReturnCodeResult.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientLauncher.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService0.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService1.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService2.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService3.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService4.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService5.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService6.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService7.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService8.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientService9.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/MultiprocessTestClientServiceDelegate.java delete mode 100644 webrtc/base/test/android/java/src/org/chromium/base/OWNERS delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/BaseChromiumRunnerCommon.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4ClassRunner.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/BaseJUnit4TestRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/BaseTestResult.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/BundleTestRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/DestroyActivitiesRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/LifetimeAssertRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/LoadNative.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/ReachedCodeProfiler.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/ScreenshotOnFailureStatement.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/SetUpTestRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/TestChildProcessConnection.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/TestListInstrumentationRunListener.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/TestTraceEvent.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/BaseJUnit4RunnerDelegate.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/BlockJUnit4RunnerDelegate.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/MethodParamAnnotationRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/MethodParamRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterAnnotations.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterProvider.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterSet.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedCommandLineFlags.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedFrameworkMethod.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunner.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunnerDelegate.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunnerDelegateCommon.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunnerDelegateFactory.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/params/SkipCommandLineParameterization.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/task/SchedulerTestHelpers.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/task/ThreadPoolTestHelpers.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/AdvancedMockContext.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/AnnotationProcessingUtils.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/AnnotationRule.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/CallbackHelper.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/CloseableOnMainThread.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/DisableIf.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/DisableIfSkipCheck.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/DisabledTest.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/EnormousTest.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/Feature.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/FlakyTest.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferences.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferencesContext.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/InstrumentationUtils.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/IntegrationTest.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/JniMocker.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/Manual.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/Matchers.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/MetricsUtils.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevel.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheck.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/Restriction.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/RestrictionSkipCheck.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/RetryOnFailure.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/ScalableTimeout.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/SkipCheck.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/TestFileUtil.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/TimeoutScale.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/TimeoutTimer.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/UrlUtils.java delete mode 100644 webrtc/base/test/android/javatests/src/org/chromium/base/test/util/UserActionTester.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/task/test/BackgroundShadowAsyncTask.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/task/test/CustomShadowAsyncTask.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/task/test/ShadowPostTask.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/BaseRobolectricTestRunner.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/SetUpStatementTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/TestListInstrumentationRunListenerTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/params/ExampleParameterizedTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/params/ParameterizedRunnerDelegateCommonTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/params/ParameterizedRunnerDelegateFactoryTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/params/ParameterizedRunnerTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/params/ParameterizedTestNameTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/util/AnnotationProcessingUtilsTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/util/DisableIfTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheckTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/util/RestrictionSkipCheckTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/util/SkipCheckTest.java delete mode 100644 webrtc/base/test/android/junit/src/org/chromium/base/test/util/TestRunnerTestRule.java delete mode 100644 webrtc/base/test/data/file_util/.gitattributes delete mode 100644 webrtc/base/test/data/file_util/binary_file.bin delete mode 100644 webrtc/base/test/data/file_util/binary_file_diff.bin delete mode 100644 webrtc/base/test/data/file_util/binary_file_same.bin delete mode 100644 webrtc/base/test/data/file_util/blank_line.txt delete mode 100644 webrtc/base/test/data/file_util/blank_line_crlf.txt delete mode 100644 webrtc/base/test/data/file_util/crlf.txt delete mode 100644 webrtc/base/test/data/file_util/different.txt delete mode 100644 webrtc/base/test/data/file_util/different_first.txt delete mode 100644 webrtc/base/test/data/file_util/different_last.txt delete mode 100644 webrtc/base/test/data/file_util/empty1.txt delete mode 100644 webrtc/base/test/data/file_util/empty2.txt delete mode 100644 webrtc/base/test/data/file_util/first1.txt delete mode 100644 webrtc/base/test/data/file_util/first2.txt delete mode 100644 webrtc/base/test/data/file_util/original.txt delete mode 100644 webrtc/base/test/data/file_util/red.png delete mode 100644 webrtc/base/test/data/file_util/same.txt delete mode 100644 webrtc/base/test/data/file_util/same_length.txt delete mode 100644 webrtc/base/test/data/file_util/shortened.txt delete mode 100755 webrtc/base/test/data/file_version_info_unittest/FileVersionInfoTest1.dll delete mode 100755 webrtc/base/test/data/file_version_info_unittest/no_version_info.dll delete mode 100644 webrtc/base/test/data/json/bom_feff.json delete mode 100644 webrtc/base/test/data/mach_port_rendezvous_fuzz/dead_name.textproto delete mode 100644 webrtc/base/test/data/mach_port_rendezvous_fuzz/send.textproto delete mode 100755 webrtc/base/test/data/pe_image/pe_image_test_32.dll delete mode 100755 webrtc/base/test/data/pe_image/pe_image_test_64.dll delete mode 100755 webrtc/base/test/data/pe_image/pe_image_test_arm64.dll delete mode 100644 webrtc/base/test/data/serializer_nested_test.json delete mode 100644 webrtc/base/test/data/serializer_test.json delete mode 100644 webrtc/base/test/data/serializer_test_nowhitespace.json delete mode 100644 webrtc/base/test/data/tzdata/2019a/44/le/metaZones.res delete mode 100644 webrtc/base/test/data/tzdata/2019a/44/le/timezoneTypes.res delete mode 100644 webrtc/base/test/data/tzdata/2019a/44/le/zoneinfo64.res delete mode 100644 webrtc/base/test/data/tzdata/README.md delete mode 100644 webrtc/base/test/fonts.conf delete mode 100644 webrtc/base/test/ios/OWNERS delete mode 100644 webrtc/base/test/ios/google_test_runner.mm delete mode 100644 webrtc/base/test/ios/wait_util.mm delete mode 100644 webrtc/base/test/launcher/OWNERS delete mode 100644 webrtc/base/test/metrics/OWNERS delete mode 100644 webrtc/base/test/mock_callback.h.pump delete mode 100644 webrtc/base/test/mock_chrome_application_mac.mm delete mode 100644 webrtc/base/test/test_listener_ios.mm delete mode 100644 webrtc/base/test/test_support_ios.mm delete mode 100644 webrtc/base/third_party/cityhash/COPYING delete mode 100644 webrtc/base/third_party/cityhash/README delete mode 100644 webrtc/base/third_party/cityhash/README.chromium delete mode 100644 webrtc/base/third_party/cityhash/patches/0000-build-bots-jumbo.patch delete mode 100644 webrtc/base/third_party/cityhash_v103/README.chromium delete mode 100644 webrtc/base/third_party/cityhash_v103/patches/000-remove-crc.patch delete mode 100644 webrtc/base/third_party/cityhash_v103/patches/001-fix-include-paths.patch delete mode 100644 webrtc/base/third_party/cityhash_v103/patches/002-fix-include-guards.patch delete mode 100644 webrtc/base/third_party/cityhash_v103/patches/003-use-base.patch delete mode 100644 webrtc/base/third_party/cityhash_v103/patches/004-google-style.patch delete mode 100644 webrtc/base/third_party/double_conversion/BUILD.gn delete mode 100644 webrtc/base/third_party/double_conversion/LICENSE delete mode 100644 webrtc/base/third_party/double_conversion/README.chromium delete mode 100644 webrtc/base/third_party/dynamic_annotations/BUILD.gn delete mode 100644 webrtc/base/third_party/dynamic_annotations/LICENSE delete mode 100644 webrtc/base/third_party/dynamic_annotations/README.chromium delete mode 100644 webrtc/base/third_party/dynamic_annotations/dynamic_annotations.c delete mode 100644 webrtc/base/third_party/icu/LICENSE delete mode 100644 webrtc/base/third_party/icu/README.chromium delete mode 100644 webrtc/base/third_party/libevent/BUILD.gn delete mode 100644 webrtc/base/third_party/libevent/ChangeLog delete mode 100644 webrtc/base/third_party/libevent/Doxyfile delete mode 100644 webrtc/base/third_party/libevent/LICENSE delete mode 100644 webrtc/base/third_party/libevent/Makefile.am delete mode 100644 webrtc/base/third_party/libevent/Makefile.nmake delete mode 100644 webrtc/base/third_party/libevent/README delete mode 100644 webrtc/base/third_party/libevent/README.chromium delete mode 100755 webrtc/base/third_party/libevent/autogen.sh delete mode 100644 webrtc/base/third_party/libevent/buffer.c delete mode 100644 webrtc/base/third_party/libevent/chromium.patch delete mode 100644 webrtc/base/third_party/libevent/configure.in delete mode 100644 webrtc/base/third_party/libevent/devpoll.c delete mode 100644 webrtc/base/third_party/libevent/epoll.c delete mode 100644 webrtc/base/third_party/libevent/epoll_sub.c delete mode 100644 webrtc/base/third_party/libevent/evbuffer.c delete mode 100644 webrtc/base/third_party/libevent/evdns.3 delete mode 100644 webrtc/base/third_party/libevent/evdns.c delete mode 100644 webrtc/base/third_party/libevent/event.3 delete mode 100644 webrtc/base/third_party/libevent/event.c delete mode 100755 webrtc/base/third_party/libevent/event_rpcgen.py delete mode 100644 webrtc/base/third_party/libevent/event_tagging.c delete mode 100644 webrtc/base/third_party/libevent/evport.c delete mode 100644 webrtc/base/third_party/libevent/evrpc.c delete mode 100644 webrtc/base/third_party/libevent/evutil.c delete mode 100644 webrtc/base/third_party/libevent/http.c delete mode 100644 webrtc/base/third_party/libevent/kqueue.c delete mode 100644 webrtc/base/third_party/libevent/log.c delete mode 100644 webrtc/base/third_party/libevent/m4/.dummy delete mode 100644 webrtc/base/third_party/libevent/nacl_nonsfi/random.c delete mode 100644 webrtc/base/third_party/libevent/nacl_nonsfi/signal_stub.c delete mode 100644 webrtc/base/third_party/libevent/poll.c delete mode 100644 webrtc/base/third_party/libevent/sample/Makefile.am delete mode 100644 webrtc/base/third_party/libevent/sample/event-test.c delete mode 100644 webrtc/base/third_party/libevent/sample/signal-test.c delete mode 100644 webrtc/base/third_party/libevent/sample/time-test.c delete mode 100644 webrtc/base/third_party/libevent/select.c delete mode 100644 webrtc/base/third_party/libevent/signal.c delete mode 100644 webrtc/base/third_party/libevent/stamp-h.in delete mode 100644 webrtc/base/third_party/libevent/strlcpy.c delete mode 100644 webrtc/base/third_party/libevent/test/Makefile.am delete mode 100644 webrtc/base/third_party/libevent/test/Makefile.nmake delete mode 100644 webrtc/base/third_party/libevent/test/bench.c delete mode 100644 webrtc/base/third_party/libevent/test/regress.c delete mode 100644 webrtc/base/third_party/libevent/test/regress.rpc delete mode 100644 webrtc/base/third_party/libevent/test/regress_dns.c delete mode 100644 webrtc/base/third_party/libevent/test/regress_http.c delete mode 100644 webrtc/base/third_party/libevent/test/regress_rpc.c delete mode 100644 webrtc/base/third_party/libevent/test/test-eof.c delete mode 100644 webrtc/base/third_party/libevent/test/test-init.c delete mode 100644 webrtc/base/third_party/libevent/test/test-time.c delete mode 100644 webrtc/base/third_party/libevent/test/test-weof.c delete mode 100755 webrtc/base/third_party/libevent/test/test.sh delete mode 100644 webrtc/base/third_party/libevent/whatsnew-14.txt delete mode 100644 webrtc/base/third_party/nspr/LICENSE delete mode 100644 webrtc/base/third_party/nspr/OWNERS delete mode 100644 webrtc/base/third_party/nspr/README.chromium delete mode 100644 webrtc/base/third_party/superfasthash/LICENSE delete mode 100644 webrtc/base/third_party/superfasthash/OWNERS delete mode 100644 webrtc/base/third_party/superfasthash/README.chromium delete mode 100644 webrtc/base/third_party/superfasthash/superfasthash.c delete mode 100644 webrtc/base/third_party/symbolize/BUILD.gn delete mode 100644 webrtc/base/third_party/symbolize/DEPS delete mode 100644 webrtc/base/third_party/symbolize/LICENSE delete mode 100644 webrtc/base/third_party/symbolize/README.chromium delete mode 100644 webrtc/base/third_party/valgrind/LICENSE delete mode 100644 webrtc/base/third_party/valgrind/README.chromium delete mode 100644 webrtc/base/third_party/xdg_mime/BUILD.gn delete mode 100644 webrtc/base/third_party/xdg_mime/LICENSE delete mode 100644 webrtc/base/third_party/xdg_mime/README delete mode 100644 webrtc/base/third_party/xdg_mime/README.chromium delete mode 100644 webrtc/base/third_party/xdg_mime/compile.patch delete mode 100644 webrtc/base/third_party/xdg_mime/free_pointer_later.patch delete mode 100644 webrtc/base/third_party/xdg_mime/function_casts.patch delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmime.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimealias.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimecache.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimeglob.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimeicon.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimeint.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimemagic.c delete mode 100644 webrtc/base/third_party/xdg_mime/xdgmimeparent.c delete mode 100644 webrtc/base/third_party/xdg_user_dirs/BUILD.gn delete mode 100644 webrtc/base/third_party/xdg_user_dirs/LICENSE delete mode 100644 webrtc/base/third_party/xdg_user_dirs/README.chromium delete mode 100644 webrtc/base/thread_annotations_unittest.nc delete mode 100644 webrtc/base/threading/platform_thread_mac.mm delete mode 100644 webrtc/base/time/OWNERS delete mode 100644 webrtc/base/trace_event/OWNERS delete mode 100644 webrtc/base/trace_event/etw_manifest/BUILD.gn delete mode 100644 webrtc/base/trace_event/etw_manifest/chrome_events_win.man delete mode 100644 webrtc/base/trace_event/features.gni delete mode 100644 webrtc/base/traits_bag_unittest.nc delete mode 100644 webrtc/base/util/BUILD.gn delete mode 100644 webrtc/base/util/OWNERS delete mode 100644 webrtc/base/util/README.md delete mode 100644 webrtc/base/util/memory_pressure/BUILD.gn delete mode 100644 webrtc/base/util/memory_pressure/OWNERS delete mode 100644 webrtc/base/util/timer/BUILD.gn delete mode 100644 webrtc/base/util/timer/OWNERS delete mode 100644 webrtc/base/util/type_safety/BUILD.gn delete mode 100644 webrtc/base/util/type_safety/DEPS delete mode 100644 webrtc/base/util/type_safety/OWNERS delete mode 100644 webrtc/base/util/type_safety/pass_key_unittest.nc delete mode 100644 webrtc/base/util/values/BUILD.gn delete mode 100644 webrtc/base/util/values/OWNERS delete mode 100644 webrtc/base/win/.clang-tidy delete mode 100644 webrtc/base/win/BUILD.gn delete mode 100644 webrtc/base/win/OWNERS delete mode 100755 webrtc/base/win/embedded_i18n/create_string_rc.py delete mode 100644 webrtc/base/win/embedded_i18n/generate_embedded_i18n.gni delete mode 100644 webrtc/base/win/windows_defines.inc delete mode 100644 webrtc/base/win/windows_undefines.inc delete mode 100644 webrtc/call/BUILD.gn delete mode 100644 webrtc/call/DEPS delete mode 100644 webrtc/call/OWNERS delete mode 100644 webrtc/call/adaptation/BUILD.gn delete mode 100644 webrtc/call/adaptation/OWNERS delete mode 100644 webrtc/common_video/BUILD.gn delete mode 100644 webrtc/common_video/DEPS delete mode 100644 webrtc/common_video/OWNERS delete mode 100644 webrtc/common_video/generic_frame_descriptor/BUILD.gn delete mode 100644 webrtc/common_video/generic_frame_descriptor/OWNERS delete mode 100644 webrtc/common_video/test/BUILD.gn delete mode 100644 webrtc/logging/BUILD.gn delete mode 100644 webrtc/logging/OWNERS delete mode 100644 webrtc/logging/rtc_event_log/DEPS delete mode 100644 webrtc/logging/rtc_event_log/rtc_event_log.proto delete mode 100644 webrtc/logging/rtc_event_log/rtc_event_log2.proto delete mode 100644 webrtc/media/BUILD.gn delete mode 100644 webrtc/media/DEPS delete mode 100644 webrtc/media/OWNERS delete mode 100644 webrtc/media/sctp/OWNERS delete mode 100644 webrtc/modules/BUILD.gn delete mode 100644 webrtc/modules/audio_coding/BUILD.gn delete mode 100644 webrtc/modules/audio_coding/DEPS delete mode 100644 webrtc/modules/audio_coding/OWNERS delete mode 100644 webrtc/modules/audio_coding/audio_coding.gni delete mode 100644 webrtc/modules/audio_coding/audio_network_adaptor/config.proto delete mode 100644 webrtc/modules/audio_coding/audio_network_adaptor/debug_dump.proto delete mode 100755 webrtc/modules/audio_coding/audio_network_adaptor/parse_ana_dump.py delete mode 100644 webrtc/modules/audio_coding/codecs/g711/g711_interface.c delete mode 100644 webrtc/modules/audio_coding/codecs/g722/g722_interface.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/abs_quant.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/abs_quant_loop.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/augmented_cb_corr.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/bw_expand.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_construct.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_mem_energy.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_mem_energy_augmentation.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_mem_energy_calc.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_search.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_search_core.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/cb_update_best_index.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/chebyshev.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/comp_corr.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/complexityMeasures.m delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/constants.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/create_augmented_vec.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/decode.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/decode_residual.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/decoder_interpolate_lsf.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/do_plc.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/encode.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/energy_inverse.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/enh_upsample.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/enhancer.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/enhancer_interface.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/filtered_cb_vecs.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/frame_classify.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/gain_dequant.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/gain_quant.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/get_cd_vec.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/get_lsp_poly.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/get_sync_seq.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/hp_input.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/hp_output.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/ilbc.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/index_conv_dec.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/index_conv_enc.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/init_decode.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/init_encode.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/interpolate.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/interpolate_samples.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lpc_encode.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lsf_check.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_dec.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lsf_to_lsp.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lsf_to_poly.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/lsp_to_lsf.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/my_corr.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/nearest_neighbor.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/pack_bits.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/poly_to_lsf.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/poly_to_lsp.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/refiner.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/simple_interpolate_lsf.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/simple_lpc_analysis.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/simple_lsf_dequant.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/simple_lsf_quant.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/smooth.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/smooth_out_data.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/sort_sq.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/split_vq.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/state_construct.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/state_search.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/swap_bytes.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/test/iLBC_test.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/test/iLBC_testLib.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/test/iLBC_testprogram.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/unpack_bits.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/vq3.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/vq4.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/window32_w32.c delete mode 100644 webrtc/modules/audio_coding/codecs/ilbc/xcorr_coef.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/decode.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/decode_bwe.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/decode_plc.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/encode.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/entropy_coding_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/entropy_coding_neon.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/fft.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filterbanks.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filterbanks_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filterbanks_neon.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filters.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filters_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/filters_neon.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/initialize.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/isacfix.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lattice.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lattice_armv7.S delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lattice_c.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lattice_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lattice_neon.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_c.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter_armv6.S delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_filter_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/transform.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/transform_mips.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/transform_neon.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/fix/source/transform_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/arith_routines.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/crc.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/decode.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/decode_bwe.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/encode.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/entropy_coding.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/filter_functions.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/filterbanks.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/intialize.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/isac.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/isac_vad.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/lattice.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/lpc_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/pitch_filter.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/source/transform.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/test/simpleKenny.c delete mode 100644 webrtc/modules/audio_coding/codecs/isac/main/util/utility.c delete mode 100644 webrtc/modules/audio_coding/codecs/opus/test/BUILD.gn delete mode 100644 webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.c delete mode 100644 webrtc/modules/audio_coding/neteq/neteq_unittest.proto delete mode 100644 webrtc/modules/audio_coding/neteq/test/delay_tool/parse_delay_file.m delete mode 100644 webrtc/modules/audio_coding/neteq/test/delay_tool/plot_neteq_delay.m delete mode 100644 webrtc/modules/audio_coding/neteq/tools/DEPS delete mode 100644 webrtc/modules/audio_coding/neteq/tools/README.md delete mode 100755 webrtc/modules/audio_coding/neteq/tools/neteq_rtpplay_test.sh delete mode 100644 webrtc/modules/audio_device/BUILD.gn delete mode 100644 webrtc/modules/audio_device/DEPS delete mode 100644 webrtc/modules/audio_device/OWNERS delete mode 100644 webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/BuildInfo.java delete mode 100644 webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java delete mode 100644 webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java delete mode 100644 webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java delete mode 100644 webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java delete mode 100644 webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java delete mode 100644 webrtc/modules/audio_mixer/BUILD.gn delete mode 100644 webrtc/modules/audio_mixer/DEPS delete mode 100644 webrtc/modules/audio_mixer/OWNERS delete mode 100644 webrtc/modules/audio_processing/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/DEPS delete mode 100644 webrtc/modules/audio_processing/OWNERS delete mode 100644 webrtc/modules/audio_processing/aec3/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/aec_dump/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/aecm/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/agc/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/agc2/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/agc2/rnn_vad/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/agc2/rnn_vad/DEPS delete mode 100644 webrtc/modules/audio_processing/debug.proto delete mode 100644 webrtc/modules/audio_processing/ns/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/test/android/apmtest/AndroidManifest.xml delete mode 100644 webrtc/modules/audio_processing/test/android/apmtest/default.properties delete mode 100644 webrtc/modules/audio_processing/test/android/apmtest/jni/main.c delete mode 100644 webrtc/modules/audio_processing/test/android/apmtest/res/values/strings.xml delete mode 100644 webrtc/modules/audio_processing/test/apmtest.m delete mode 100644 webrtc/modules/audio_processing/test/conversational_speech/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/test/conversational_speech/OWNERS delete mode 100644 webrtc/modules/audio_processing/test/conversational_speech/README.md delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/OWNERS delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/README.md delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/apm_configs/default.json delete mode 100755 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.py delete mode 100755 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment.sh delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment_boxplot.py delete mode 100755 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment_export.py delete mode 100755 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment_gencfgs.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment_optimize.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/apm_quality_assessment_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/output/README.md delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/__init__.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/annotations.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/annotations_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/apm_configs/default.json delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/audioproc_wrapper.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/collect_data.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/data_access.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/echo_path_simulation.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/echo_path_simulation_factory.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/echo_path_simulation_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/eval_scores.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/eval_scores_factory.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/eval_scores_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/evaluation.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/exceptions.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/export.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/export_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/external_vad.py delete mode 100755 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/fake_external_vad.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/input_mixer.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/input_mixer_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/input_signal_creator.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.css delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.js delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/signal_processing.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/signal_processing_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/simulation.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/simulation_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation_factory.py delete mode 100644 webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/test_data_generation_unittest.py delete mode 100644 webrtc/modules/audio_processing/test/unittest.proto delete mode 100644 webrtc/modules/audio_processing/transient/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/transient/test/plotDetection.m delete mode 100644 webrtc/modules/audio_processing/transient/test/readDetection.m delete mode 100644 webrtc/modules/audio_processing/transient/test/readPCM.m delete mode 100644 webrtc/modules/audio_processing/utility/BUILD.gn delete mode 100644 webrtc/modules/audio_processing/utility/DEPS delete mode 100644 webrtc/modules/audio_processing/vad/BUILD.gn delete mode 100644 webrtc/modules/congestion_controller/BUILD.gn delete mode 100644 webrtc/modules/congestion_controller/DEPS delete mode 100644 webrtc/modules/congestion_controller/OWNERS delete mode 100644 webrtc/modules/congestion_controller/goog_cc/BUILD.gn delete mode 100644 webrtc/modules/congestion_controller/pcc/BUILD.gn delete mode 100644 webrtc/modules/congestion_controller/rtp/BUILD.gn delete mode 100644 webrtc/modules/desktop_capture/BUILD.gn delete mode 100644 webrtc/modules/desktop_capture/DEPS delete mode 100644 webrtc/modules/desktop_capture/OWNERS delete mode 100644 webrtc/modules/desktop_capture/linux/pipewire.sigs delete mode 100644 webrtc/modules/desktop_capture/linux/pipewire_stub_header.fragment delete mode 100644 webrtc/modules/desktop_capture/mac/desktop_configuration.mm delete mode 100644 webrtc/modules/desktop_capture/mac/desktop_frame_cgimage.mm delete mode 100644 webrtc/modules/desktop_capture/mac/desktop_frame_iosurface.mm delete mode 100644 webrtc/modules/desktop_capture/mac/desktop_frame_provider.mm delete mode 100644 webrtc/modules/desktop_capture/mac/screen_capturer_mac.mm delete mode 100644 webrtc/modules/desktop_capture/mouse_cursor_monitor_mac.mm delete mode 100644 webrtc/modules/desktop_capture/screen_capturer_darwin.mm delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/1_24bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/1_32bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/1_8bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/2_1bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/2_32bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/3_32bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_test_data/3_4bpp.cur delete mode 100644 webrtc/modules/desktop_capture/win/cursor_unittest_resources.rc delete mode 100644 webrtc/modules/desktop_capture/window_capturer_mac.mm delete mode 100644 webrtc/modules/desktop_capture/window_finder_mac.mm delete mode 100644 webrtc/modules/pacing/BUILD.gn delete mode 100644 webrtc/modules/pacing/DEPS delete mode 100644 webrtc/modules/pacing/OWNERS delete mode 100644 webrtc/modules/remote_bitrate_estimator/BUILD.gn delete mode 100644 webrtc/modules/remote_bitrate_estimator/DEPS delete mode 100644 webrtc/modules/remote_bitrate_estimator/OWNERS delete mode 100644 webrtc/modules/rtp_rtcp/BUILD.gn delete mode 100644 webrtc/modules/rtp_rtcp/DEPS delete mode 100644 webrtc/modules/rtp_rtcp/OWNERS delete mode 100644 webrtc/modules/third_party/fft/BUILD.gn delete mode 100644 webrtc/modules/third_party/fft/LICENSE delete mode 100644 webrtc/modules/third_party/fft/README.chromium delete mode 100644 webrtc/modules/third_party/fft/fft.c delete mode 100644 webrtc/modules/third_party/g711/BUILD.gn delete mode 100644 webrtc/modules/third_party/g711/LICENSE delete mode 100644 webrtc/modules/third_party/g711/README.chromium delete mode 100644 webrtc/modules/third_party/g711/g711.c delete mode 100644 webrtc/modules/third_party/g722/BUILD.gn delete mode 100644 webrtc/modules/third_party/g722/LICENSE delete mode 100644 webrtc/modules/third_party/g722/README.chromium delete mode 100644 webrtc/modules/third_party/g722/g722_decode.c delete mode 100644 webrtc/modules/third_party/g722/g722_encode.c delete mode 100644 webrtc/modules/third_party/portaudio/BUILD.gn delete mode 100644 webrtc/modules/third_party/portaudio/LICENSE delete mode 100644 webrtc/modules/third_party/portaudio/README.chromium delete mode 100644 webrtc/modules/third_party/portaudio/pa_ringbuffer.c delete mode 100644 webrtc/modules/utility/BUILD.gn delete mode 100644 webrtc/modules/utility/DEPS delete mode 100644 webrtc/modules/utility/OWNERS delete mode 100644 webrtc/modules/video_capture/BUILD.gn delete mode 100644 webrtc/modules/video_capture/DEPS delete mode 100644 webrtc/modules/video_capture/OWNERS delete mode 100644 webrtc/modules/video_coding/BUILD.gn delete mode 100644 webrtc/modules/video_coding/DEPS delete mode 100644 webrtc/modules/video_coding/OWNERS delete mode 100644 webrtc/modules/video_coding/codecs/av1/BUILD.gn delete mode 100644 webrtc/modules/video_coding/codecs/av1/DEPS delete mode 100644 webrtc/modules/video_coding/codecs/h264/DEPS delete mode 100644 webrtc/modules/video_coding/codecs/h264/OWNERS delete mode 100644 webrtc/modules/video_coding/codecs/test/batch/empty-runtime-deps delete mode 100755 webrtc/modules/video_coding/codecs/test/batch/run-instantiation-tests.sh delete mode 100755 webrtc/modules/video_coding/codecs/test/batch/run-videoprocessor-tests.sh delete mode 100644 webrtc/modules/video_coding/codecs/test/objc_codec_factory_helper.mm delete mode 100755 webrtc/modules/video_coding/codecs/test/plot_webrtc_test_logs.py delete mode 100644 webrtc/modules/video_coding/codecs/vp9/DEPS delete mode 100644 webrtc/modules/video_processing/BUILD.gn delete mode 100644 webrtc/modules/video_processing/DEPS delete mode 100644 webrtc/modules/video_processing/OWNERS delete mode 100644 webrtc/p2p/BUILD.gn delete mode 100644 webrtc/p2p/DEPS delete mode 100644 webrtc/p2p/OWNERS delete mode 100644 webrtc/pc/BUILD.gn delete mode 100644 webrtc/pc/DEPS delete mode 100644 webrtc/pc/OWNERS delete mode 100644 webrtc/pc/scenario_tests/BUILD.gn delete mode 100644 webrtc/pc/test/DEPS delete mode 100644 webrtc/rtc_base/BUILD.gn delete mode 100644 webrtc/rtc_base/DEPS delete mode 100644 webrtc/rtc_base/OWNERS delete mode 100644 webrtc/rtc_base/callback.h.pump delete mode 100644 webrtc/rtc_base/experiments/BUILD.gn delete mode 100644 webrtc/rtc_base/experiments/DEPS delete mode 100644 webrtc/rtc_base/experiments/OWNERS delete mode 100644 webrtc/rtc_base/java/src/org/webrtc/ContextUtils.java delete mode 100644 webrtc/rtc_base/java/src/org/webrtc/Loggable.java delete mode 100644 webrtc/rtc_base/java/src/org/webrtc/Logging.java delete mode 100644 webrtc/rtc_base/java/src/org/webrtc/OWNERS delete mode 100644 webrtc/rtc_base/java/src/org/webrtc/Size.java delete mode 100644 webrtc/rtc_base/java/src/org/webrtc/ThreadUtils.java delete mode 100644 webrtc/rtc_base/memory/BUILD.gn delete mode 100644 webrtc/rtc_base/network/BUILD.gn delete mode 100755 webrtc/rtc_base/sigslottester.h.pump delete mode 100644 webrtc/rtc_base/synchronization/BUILD.gn delete mode 100644 webrtc/rtc_base/system/BUILD.gn delete mode 100644 webrtc/rtc_base/system/DEPS delete mode 100644 webrtc/rtc_base/system/cocoa_threading.mm delete mode 100644 webrtc/rtc_base/system/gcd_helpers.m delete mode 100644 webrtc/rtc_base/task_utils/BUILD.gn delete mode 100644 webrtc/rtc_base/third_party/base64/BUILD.gn delete mode 100644 webrtc/rtc_base/third_party/base64/LICENSE delete mode 100644 webrtc/rtc_base/third_party/base64/README.chromium delete mode 100644 webrtc/rtc_base/third_party/sigslot/BUILD.gn delete mode 100644 webrtc/rtc_base/third_party/sigslot/LICENSE delete mode 100644 webrtc/rtc_base/third_party/sigslot/README.chromium delete mode 100644 webrtc/rtc_base/time/BUILD.gn delete mode 100644 webrtc/rtc_base/units/BUILD.gn delete mode 100644 webrtc/rtc_base/units/OWNERS delete mode 100644 webrtc/system_wrappers/BUILD.gn delete mode 100644 webrtc/system_wrappers/DEPS delete mode 100644 webrtc/system_wrappers/OWNERS delete mode 100644 webrtc/system_wrappers/source/cpu_features_android.c delete mode 100644 webrtc/system_wrappers/source/cpu_features_linux.c diff --git a/webrtc/absl/algorithm/algorithm.h b/include/absl/algorithm/algorithm.h similarity index 100% rename from webrtc/absl/algorithm/algorithm.h rename to include/absl/algorithm/algorithm.h diff --git a/webrtc/absl/algorithm/container.h b/include/absl/algorithm/container.h similarity index 100% rename from webrtc/absl/algorithm/container.h rename to include/absl/algorithm/container.h diff --git a/webrtc/absl/base/attributes.h b/include/absl/base/attributes.h similarity index 100% rename from webrtc/absl/base/attributes.h rename to include/absl/base/attributes.h diff --git a/webrtc/absl/base/call_once.h b/include/absl/base/call_once.h similarity index 100% rename from webrtc/absl/base/call_once.h rename to include/absl/base/call_once.h diff --git a/webrtc/absl/base/casts.h b/include/absl/base/casts.h similarity index 100% rename from webrtc/absl/base/casts.h rename to include/absl/base/casts.h diff --git a/webrtc/absl/base/config.h b/include/absl/base/config.h similarity index 100% rename from webrtc/absl/base/config.h rename to include/absl/base/config.h diff --git a/webrtc/absl/base/const_init.h b/include/absl/base/const_init.h similarity index 100% rename from webrtc/absl/base/const_init.h rename to include/absl/base/const_init.h diff --git a/webrtc/absl/base/dynamic_annotations.h b/include/absl/base/dynamic_annotations.h similarity index 100% rename from webrtc/absl/base/dynamic_annotations.h rename to include/absl/base/dynamic_annotations.h diff --git a/webrtc/absl/base/internal/atomic_hook.h b/include/absl/base/internal/atomic_hook.h similarity index 100% rename from webrtc/absl/base/internal/atomic_hook.h rename to include/absl/base/internal/atomic_hook.h diff --git a/webrtc/absl/base/internal/atomic_hook_test_helper.h b/include/absl/base/internal/atomic_hook_test_helper.h similarity index 100% rename from webrtc/absl/base/internal/atomic_hook_test_helper.h rename to include/absl/base/internal/atomic_hook_test_helper.h diff --git a/webrtc/absl/base/internal/bits.h b/include/absl/base/internal/bits.h similarity index 100% rename from webrtc/absl/base/internal/bits.h rename to include/absl/base/internal/bits.h diff --git a/webrtc/absl/base/internal/cycleclock.h b/include/absl/base/internal/cycleclock.h similarity index 100% rename from webrtc/absl/base/internal/cycleclock.h rename to include/absl/base/internal/cycleclock.h diff --git a/webrtc/absl/base/internal/direct_mmap.h b/include/absl/base/internal/direct_mmap.h similarity index 100% rename from webrtc/absl/base/internal/direct_mmap.h rename to include/absl/base/internal/direct_mmap.h diff --git a/webrtc/absl/base/internal/endian.h b/include/absl/base/internal/endian.h similarity index 100% rename from webrtc/absl/base/internal/endian.h rename to include/absl/base/internal/endian.h diff --git a/webrtc/absl/base/internal/errno_saver.h b/include/absl/base/internal/errno_saver.h similarity index 100% rename from webrtc/absl/base/internal/errno_saver.h rename to include/absl/base/internal/errno_saver.h diff --git a/webrtc/absl/base/internal/exception_safety_testing.h b/include/absl/base/internal/exception_safety_testing.h similarity index 100% rename from webrtc/absl/base/internal/exception_safety_testing.h rename to include/absl/base/internal/exception_safety_testing.h diff --git a/webrtc/absl/base/internal/exception_testing.h b/include/absl/base/internal/exception_testing.h similarity index 100% rename from webrtc/absl/base/internal/exception_testing.h rename to include/absl/base/internal/exception_testing.h diff --git a/webrtc/absl/base/internal/exponential_biased.h b/include/absl/base/internal/exponential_biased.h similarity index 100% rename from webrtc/absl/base/internal/exponential_biased.h rename to include/absl/base/internal/exponential_biased.h diff --git a/webrtc/absl/base/internal/fast_type_id.h b/include/absl/base/internal/fast_type_id.h similarity index 100% rename from webrtc/absl/base/internal/fast_type_id.h rename to include/absl/base/internal/fast_type_id.h diff --git a/webrtc/absl/base/internal/hide_ptr.h b/include/absl/base/internal/hide_ptr.h similarity index 100% rename from webrtc/absl/base/internal/hide_ptr.h rename to include/absl/base/internal/hide_ptr.h diff --git a/webrtc/absl/base/internal/identity.h b/include/absl/base/internal/identity.h similarity index 100% rename from webrtc/absl/base/internal/identity.h rename to include/absl/base/internal/identity.h diff --git a/webrtc/absl/base/internal/inline_variable.h b/include/absl/base/internal/inline_variable.h similarity index 100% rename from webrtc/absl/base/internal/inline_variable.h rename to include/absl/base/internal/inline_variable.h diff --git a/webrtc/absl/base/internal/inline_variable_testing.h b/include/absl/base/internal/inline_variable_testing.h similarity index 100% rename from webrtc/absl/base/internal/inline_variable_testing.h rename to include/absl/base/internal/inline_variable_testing.h diff --git a/webrtc/absl/base/internal/invoke.h b/include/absl/base/internal/invoke.h similarity index 100% rename from webrtc/absl/base/internal/invoke.h rename to include/absl/base/internal/invoke.h diff --git a/webrtc/absl/base/internal/low_level_alloc.h b/include/absl/base/internal/low_level_alloc.h similarity index 100% rename from webrtc/absl/base/internal/low_level_alloc.h rename to include/absl/base/internal/low_level_alloc.h diff --git a/webrtc/absl/base/internal/low_level_scheduling.h b/include/absl/base/internal/low_level_scheduling.h similarity index 100% rename from webrtc/absl/base/internal/low_level_scheduling.h rename to include/absl/base/internal/low_level_scheduling.h diff --git a/webrtc/absl/base/internal/per_thread_tls.h b/include/absl/base/internal/per_thread_tls.h similarity index 100% rename from webrtc/absl/base/internal/per_thread_tls.h rename to include/absl/base/internal/per_thread_tls.h diff --git a/webrtc/absl/base/internal/periodic_sampler.h b/include/absl/base/internal/periodic_sampler.h similarity index 100% rename from webrtc/absl/base/internal/periodic_sampler.h rename to include/absl/base/internal/periodic_sampler.h diff --git a/webrtc/absl/base/internal/pretty_function.h b/include/absl/base/internal/pretty_function.h similarity index 100% rename from webrtc/absl/base/internal/pretty_function.h rename to include/absl/base/internal/pretty_function.h diff --git a/webrtc/absl/base/internal/raw_logging.h b/include/absl/base/internal/raw_logging.h similarity index 100% rename from webrtc/absl/base/internal/raw_logging.h rename to include/absl/base/internal/raw_logging.h diff --git a/webrtc/absl/base/internal/scheduling_mode.h b/include/absl/base/internal/scheduling_mode.h similarity index 100% rename from webrtc/absl/base/internal/scheduling_mode.h rename to include/absl/base/internal/scheduling_mode.h diff --git a/webrtc/absl/base/internal/scoped_set_env.h b/include/absl/base/internal/scoped_set_env.h similarity index 100% rename from webrtc/absl/base/internal/scoped_set_env.h rename to include/absl/base/internal/scoped_set_env.h diff --git a/webrtc/absl/base/internal/spinlock.h b/include/absl/base/internal/spinlock.h similarity index 100% rename from webrtc/absl/base/internal/spinlock.h rename to include/absl/base/internal/spinlock.h diff --git a/webrtc/absl/base/internal/spinlock_wait.h b/include/absl/base/internal/spinlock_wait.h similarity index 100% rename from webrtc/absl/base/internal/spinlock_wait.h rename to include/absl/base/internal/spinlock_wait.h diff --git a/webrtc/absl/base/internal/strerror.h b/include/absl/base/internal/strerror.h similarity index 100% rename from webrtc/absl/base/internal/strerror.h rename to include/absl/base/internal/strerror.h diff --git a/webrtc/absl/base/internal/sysinfo.h b/include/absl/base/internal/sysinfo.h similarity index 100% rename from webrtc/absl/base/internal/sysinfo.h rename to include/absl/base/internal/sysinfo.h diff --git a/webrtc/absl/base/internal/thread_identity.h b/include/absl/base/internal/thread_identity.h similarity index 100% rename from webrtc/absl/base/internal/thread_identity.h rename to include/absl/base/internal/thread_identity.h diff --git a/webrtc/absl/base/internal/throw_delegate.h b/include/absl/base/internal/throw_delegate.h similarity index 100% rename from webrtc/absl/base/internal/throw_delegate.h rename to include/absl/base/internal/throw_delegate.h diff --git a/webrtc/absl/base/internal/tsan_mutex_interface.h b/include/absl/base/internal/tsan_mutex_interface.h similarity index 100% rename from webrtc/absl/base/internal/tsan_mutex_interface.h rename to include/absl/base/internal/tsan_mutex_interface.h diff --git a/webrtc/absl/base/internal/unaligned_access.h b/include/absl/base/internal/unaligned_access.h similarity index 100% rename from webrtc/absl/base/internal/unaligned_access.h rename to include/absl/base/internal/unaligned_access.h diff --git a/webrtc/absl/base/internal/unscaledcycleclock.h b/include/absl/base/internal/unscaledcycleclock.h similarity index 100% rename from webrtc/absl/base/internal/unscaledcycleclock.h rename to include/absl/base/internal/unscaledcycleclock.h diff --git a/webrtc/absl/base/log_severity.h b/include/absl/base/log_severity.h similarity index 100% rename from webrtc/absl/base/log_severity.h rename to include/absl/base/log_severity.h diff --git a/webrtc/absl/base/macros.h b/include/absl/base/macros.h similarity index 100% rename from webrtc/absl/base/macros.h rename to include/absl/base/macros.h diff --git a/webrtc/absl/base/optimization.h b/include/absl/base/optimization.h similarity index 100% rename from webrtc/absl/base/optimization.h rename to include/absl/base/optimization.h diff --git a/webrtc/absl/base/options.h b/include/absl/base/options.h similarity index 100% rename from webrtc/absl/base/options.h rename to include/absl/base/options.h diff --git a/webrtc/absl/base/policy_checks.h b/include/absl/base/policy_checks.h similarity index 100% rename from webrtc/absl/base/policy_checks.h rename to include/absl/base/policy_checks.h diff --git a/webrtc/absl/base/port.h b/include/absl/base/port.h similarity index 100% rename from webrtc/absl/base/port.h rename to include/absl/base/port.h diff --git a/webrtc/absl/base/thread_annotations.h b/include/absl/base/thread_annotations.h similarity index 100% rename from webrtc/absl/base/thread_annotations.h rename to include/absl/base/thread_annotations.h diff --git a/webrtc/absl/container/btree_map.h b/include/absl/container/btree_map.h similarity index 100% rename from webrtc/absl/container/btree_map.h rename to include/absl/container/btree_map.h diff --git a/webrtc/absl/container/btree_set.h b/include/absl/container/btree_set.h similarity index 100% rename from webrtc/absl/container/btree_set.h rename to include/absl/container/btree_set.h diff --git a/webrtc/absl/container/btree_test.h b/include/absl/container/btree_test.h similarity index 100% rename from webrtc/absl/container/btree_test.h rename to include/absl/container/btree_test.h diff --git a/webrtc/absl/container/fixed_array.h b/include/absl/container/fixed_array.h similarity index 100% rename from webrtc/absl/container/fixed_array.h rename to include/absl/container/fixed_array.h diff --git a/webrtc/absl/container/flat_hash_map.h b/include/absl/container/flat_hash_map.h similarity index 100% rename from webrtc/absl/container/flat_hash_map.h rename to include/absl/container/flat_hash_map.h diff --git a/webrtc/absl/container/flat_hash_set.h b/include/absl/container/flat_hash_set.h similarity index 100% rename from webrtc/absl/container/flat_hash_set.h rename to include/absl/container/flat_hash_set.h diff --git a/webrtc/absl/container/inlined_vector.h b/include/absl/container/inlined_vector.h similarity index 100% rename from webrtc/absl/container/inlined_vector.h rename to include/absl/container/inlined_vector.h diff --git a/webrtc/absl/container/internal/btree.h b/include/absl/container/internal/btree.h similarity index 100% rename from webrtc/absl/container/internal/btree.h rename to include/absl/container/internal/btree.h diff --git a/webrtc/absl/container/internal/btree_container.h b/include/absl/container/internal/btree_container.h similarity index 100% rename from webrtc/absl/container/internal/btree_container.h rename to include/absl/container/internal/btree_container.h diff --git a/webrtc/absl/container/internal/common.h b/include/absl/container/internal/common.h similarity index 100% rename from webrtc/absl/container/internal/common.h rename to include/absl/container/internal/common.h diff --git a/webrtc/absl/container/internal/compressed_tuple.h b/include/absl/container/internal/compressed_tuple.h similarity index 100% rename from webrtc/absl/container/internal/compressed_tuple.h rename to include/absl/container/internal/compressed_tuple.h diff --git a/webrtc/absl/container/internal/container_memory.h b/include/absl/container/internal/container_memory.h similarity index 100% rename from webrtc/absl/container/internal/container_memory.h rename to include/absl/container/internal/container_memory.h diff --git a/webrtc/absl/container/internal/counting_allocator.h b/include/absl/container/internal/counting_allocator.h similarity index 100% rename from webrtc/absl/container/internal/counting_allocator.h rename to include/absl/container/internal/counting_allocator.h diff --git a/webrtc/absl/container/internal/hash_function_defaults.h b/include/absl/container/internal/hash_function_defaults.h similarity index 100% rename from webrtc/absl/container/internal/hash_function_defaults.h rename to include/absl/container/internal/hash_function_defaults.h diff --git a/webrtc/absl/container/internal/hash_generator_testing.h b/include/absl/container/internal/hash_generator_testing.h similarity index 100% rename from webrtc/absl/container/internal/hash_generator_testing.h rename to include/absl/container/internal/hash_generator_testing.h diff --git a/webrtc/absl/container/internal/hash_policy_testing.h b/include/absl/container/internal/hash_policy_testing.h similarity index 100% rename from webrtc/absl/container/internal/hash_policy_testing.h rename to include/absl/container/internal/hash_policy_testing.h diff --git a/webrtc/absl/container/internal/hash_policy_traits.h b/include/absl/container/internal/hash_policy_traits.h similarity index 100% rename from webrtc/absl/container/internal/hash_policy_traits.h rename to include/absl/container/internal/hash_policy_traits.h diff --git a/webrtc/absl/container/internal/hashtable_debug.h b/include/absl/container/internal/hashtable_debug.h similarity index 100% rename from webrtc/absl/container/internal/hashtable_debug.h rename to include/absl/container/internal/hashtable_debug.h diff --git a/webrtc/absl/container/internal/hashtable_debug_hooks.h b/include/absl/container/internal/hashtable_debug_hooks.h similarity index 100% rename from webrtc/absl/container/internal/hashtable_debug_hooks.h rename to include/absl/container/internal/hashtable_debug_hooks.h diff --git a/webrtc/absl/container/internal/hashtablez_sampler.h b/include/absl/container/internal/hashtablez_sampler.h similarity index 100% rename from webrtc/absl/container/internal/hashtablez_sampler.h rename to include/absl/container/internal/hashtablez_sampler.h diff --git a/webrtc/absl/container/internal/have_sse.h b/include/absl/container/internal/have_sse.h similarity index 100% rename from webrtc/absl/container/internal/have_sse.h rename to include/absl/container/internal/have_sse.h diff --git a/webrtc/absl/container/internal/inlined_vector.h b/include/absl/container/internal/inlined_vector.h similarity index 100% rename from webrtc/absl/container/internal/inlined_vector.h rename to include/absl/container/internal/inlined_vector.h diff --git a/webrtc/absl/container/internal/layout.h b/include/absl/container/internal/layout.h similarity index 100% rename from webrtc/absl/container/internal/layout.h rename to include/absl/container/internal/layout.h diff --git a/webrtc/absl/container/internal/node_hash_policy.h b/include/absl/container/internal/node_hash_policy.h similarity index 100% rename from webrtc/absl/container/internal/node_hash_policy.h rename to include/absl/container/internal/node_hash_policy.h diff --git a/webrtc/absl/container/internal/raw_hash_map.h b/include/absl/container/internal/raw_hash_map.h similarity index 100% rename from webrtc/absl/container/internal/raw_hash_map.h rename to include/absl/container/internal/raw_hash_map.h diff --git a/webrtc/absl/container/internal/raw_hash_set.h b/include/absl/container/internal/raw_hash_set.h similarity index 100% rename from webrtc/absl/container/internal/raw_hash_set.h rename to include/absl/container/internal/raw_hash_set.h diff --git a/webrtc/absl/container/internal/test_instance_tracker.h b/include/absl/container/internal/test_instance_tracker.h similarity index 100% rename from webrtc/absl/container/internal/test_instance_tracker.h rename to include/absl/container/internal/test_instance_tracker.h diff --git a/webrtc/absl/container/internal/tracked.h b/include/absl/container/internal/tracked.h similarity index 100% rename from webrtc/absl/container/internal/tracked.h rename to include/absl/container/internal/tracked.h diff --git a/webrtc/absl/container/internal/unordered_map_constructor_test.h b/include/absl/container/internal/unordered_map_constructor_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_map_constructor_test.h rename to include/absl/container/internal/unordered_map_constructor_test.h diff --git a/webrtc/absl/container/internal/unordered_map_lookup_test.h b/include/absl/container/internal/unordered_map_lookup_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_map_lookup_test.h rename to include/absl/container/internal/unordered_map_lookup_test.h diff --git a/webrtc/absl/container/internal/unordered_map_members_test.h b/include/absl/container/internal/unordered_map_members_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_map_members_test.h rename to include/absl/container/internal/unordered_map_members_test.h diff --git a/webrtc/absl/container/internal/unordered_map_modifiers_test.h b/include/absl/container/internal/unordered_map_modifiers_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_map_modifiers_test.h rename to include/absl/container/internal/unordered_map_modifiers_test.h diff --git a/webrtc/absl/container/internal/unordered_set_constructor_test.h b/include/absl/container/internal/unordered_set_constructor_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_set_constructor_test.h rename to include/absl/container/internal/unordered_set_constructor_test.h diff --git a/webrtc/absl/container/internal/unordered_set_lookup_test.h b/include/absl/container/internal/unordered_set_lookup_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_set_lookup_test.h rename to include/absl/container/internal/unordered_set_lookup_test.h diff --git a/webrtc/absl/container/internal/unordered_set_members_test.h b/include/absl/container/internal/unordered_set_members_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_set_members_test.h rename to include/absl/container/internal/unordered_set_members_test.h diff --git a/webrtc/absl/container/internal/unordered_set_modifiers_test.h b/include/absl/container/internal/unordered_set_modifiers_test.h similarity index 100% rename from webrtc/absl/container/internal/unordered_set_modifiers_test.h rename to include/absl/container/internal/unordered_set_modifiers_test.h diff --git a/webrtc/absl/container/node_hash_map.h b/include/absl/container/node_hash_map.h similarity index 100% rename from webrtc/absl/container/node_hash_map.h rename to include/absl/container/node_hash_map.h diff --git a/webrtc/absl/container/node_hash_set.h b/include/absl/container/node_hash_set.h similarity index 100% rename from webrtc/absl/container/node_hash_set.h rename to include/absl/container/node_hash_set.h diff --git a/webrtc/absl/debugging/failure_signal_handler.h b/include/absl/debugging/failure_signal_handler.h similarity index 100% rename from webrtc/absl/debugging/failure_signal_handler.h rename to include/absl/debugging/failure_signal_handler.h diff --git a/webrtc/absl/debugging/internal/address_is_readable.h b/include/absl/debugging/internal/address_is_readable.h similarity index 100% rename from webrtc/absl/debugging/internal/address_is_readable.h rename to include/absl/debugging/internal/address_is_readable.h diff --git a/webrtc/absl/debugging/internal/demangle.h b/include/absl/debugging/internal/demangle.h similarity index 100% rename from webrtc/absl/debugging/internal/demangle.h rename to include/absl/debugging/internal/demangle.h diff --git a/webrtc/absl/debugging/internal/elf_mem_image.h b/include/absl/debugging/internal/elf_mem_image.h similarity index 100% rename from webrtc/absl/debugging/internal/elf_mem_image.h rename to include/absl/debugging/internal/elf_mem_image.h diff --git a/webrtc/absl/debugging/internal/examine_stack.h b/include/absl/debugging/internal/examine_stack.h similarity index 100% rename from webrtc/absl/debugging/internal/examine_stack.h rename to include/absl/debugging/internal/examine_stack.h diff --git a/webrtc/absl/debugging/internal/stack_consumption.h b/include/absl/debugging/internal/stack_consumption.h similarity index 100% rename from webrtc/absl/debugging/internal/stack_consumption.h rename to include/absl/debugging/internal/stack_consumption.h diff --git a/webrtc/absl/debugging/internal/stacktrace_config.h b/include/absl/debugging/internal/stacktrace_config.h similarity index 100% rename from webrtc/absl/debugging/internal/stacktrace_config.h rename to include/absl/debugging/internal/stacktrace_config.h diff --git a/webrtc/absl/debugging/internal/symbolize.h b/include/absl/debugging/internal/symbolize.h similarity index 100% rename from webrtc/absl/debugging/internal/symbolize.h rename to include/absl/debugging/internal/symbolize.h diff --git a/webrtc/absl/debugging/internal/vdso_support.h b/include/absl/debugging/internal/vdso_support.h similarity index 100% rename from webrtc/absl/debugging/internal/vdso_support.h rename to include/absl/debugging/internal/vdso_support.h diff --git a/webrtc/absl/debugging/leak_check.h b/include/absl/debugging/leak_check.h similarity index 100% rename from webrtc/absl/debugging/leak_check.h rename to include/absl/debugging/leak_check.h diff --git a/webrtc/absl/debugging/stacktrace.h b/include/absl/debugging/stacktrace.h similarity index 100% rename from webrtc/absl/debugging/stacktrace.h rename to include/absl/debugging/stacktrace.h diff --git a/webrtc/absl/debugging/symbolize.h b/include/absl/debugging/symbolize.h similarity index 100% rename from webrtc/absl/debugging/symbolize.h rename to include/absl/debugging/symbolize.h diff --git a/webrtc/absl/flags/config.h b/include/absl/flags/config.h similarity index 100% rename from webrtc/absl/flags/config.h rename to include/absl/flags/config.h diff --git a/webrtc/absl/flags/declare.h b/include/absl/flags/declare.h similarity index 100% rename from webrtc/absl/flags/declare.h rename to include/absl/flags/declare.h diff --git a/webrtc/absl/flags/flag.h b/include/absl/flags/flag.h similarity index 100% rename from webrtc/absl/flags/flag.h rename to include/absl/flags/flag.h diff --git a/webrtc/absl/flags/internal/commandlineflag.h b/include/absl/flags/internal/commandlineflag.h similarity index 100% rename from webrtc/absl/flags/internal/commandlineflag.h rename to include/absl/flags/internal/commandlineflag.h diff --git a/webrtc/absl/flags/internal/flag.h b/include/absl/flags/internal/flag.h similarity index 100% rename from webrtc/absl/flags/internal/flag.h rename to include/absl/flags/internal/flag.h diff --git a/webrtc/absl/flags/internal/parse.h b/include/absl/flags/internal/parse.h similarity index 100% rename from webrtc/absl/flags/internal/parse.h rename to include/absl/flags/internal/parse.h diff --git a/webrtc/absl/flags/internal/path_util.h b/include/absl/flags/internal/path_util.h similarity index 100% rename from webrtc/absl/flags/internal/path_util.h rename to include/absl/flags/internal/path_util.h diff --git a/webrtc/absl/flags/internal/private_handle_accessor.h b/include/absl/flags/internal/private_handle_accessor.h similarity index 100% rename from webrtc/absl/flags/internal/private_handle_accessor.h rename to include/absl/flags/internal/private_handle_accessor.h diff --git a/webrtc/absl/flags/internal/program_name.h b/include/absl/flags/internal/program_name.h similarity index 100% rename from webrtc/absl/flags/internal/program_name.h rename to include/absl/flags/internal/program_name.h diff --git a/webrtc/absl/flags/internal/registry.h b/include/absl/flags/internal/registry.h similarity index 100% rename from webrtc/absl/flags/internal/registry.h rename to include/absl/flags/internal/registry.h diff --git a/webrtc/absl/flags/internal/type_erased.h b/include/absl/flags/internal/type_erased.h similarity index 100% rename from webrtc/absl/flags/internal/type_erased.h rename to include/absl/flags/internal/type_erased.h diff --git a/webrtc/absl/flags/internal/usage.h b/include/absl/flags/internal/usage.h similarity index 100% rename from webrtc/absl/flags/internal/usage.h rename to include/absl/flags/internal/usage.h diff --git a/webrtc/absl/flags/marshalling.h b/include/absl/flags/marshalling.h similarity index 100% rename from webrtc/absl/flags/marshalling.h rename to include/absl/flags/marshalling.h diff --git a/webrtc/absl/flags/parse.h b/include/absl/flags/parse.h similarity index 100% rename from webrtc/absl/flags/parse.h rename to include/absl/flags/parse.h diff --git a/webrtc/absl/flags/usage.h b/include/absl/flags/usage.h similarity index 100% rename from webrtc/absl/flags/usage.h rename to include/absl/flags/usage.h diff --git a/webrtc/absl/flags/usage_config.h b/include/absl/flags/usage_config.h similarity index 100% rename from webrtc/absl/flags/usage_config.h rename to include/absl/flags/usage_config.h diff --git a/webrtc/absl/functional/bind_front.h b/include/absl/functional/bind_front.h similarity index 100% rename from webrtc/absl/functional/bind_front.h rename to include/absl/functional/bind_front.h diff --git a/webrtc/absl/functional/function_ref.h b/include/absl/functional/function_ref.h similarity index 100% rename from webrtc/absl/functional/function_ref.h rename to include/absl/functional/function_ref.h diff --git a/webrtc/absl/functional/internal/front_binder.h b/include/absl/functional/internal/front_binder.h similarity index 100% rename from webrtc/absl/functional/internal/front_binder.h rename to include/absl/functional/internal/front_binder.h diff --git a/webrtc/absl/functional/internal/function_ref.h b/include/absl/functional/internal/function_ref.h similarity index 100% rename from webrtc/absl/functional/internal/function_ref.h rename to include/absl/functional/internal/function_ref.h diff --git a/webrtc/absl/hash/hash.h b/include/absl/hash/hash.h similarity index 100% rename from webrtc/absl/hash/hash.h rename to include/absl/hash/hash.h diff --git a/webrtc/absl/hash/hash_testing.h b/include/absl/hash/hash_testing.h similarity index 100% rename from webrtc/absl/hash/hash_testing.h rename to include/absl/hash/hash_testing.h diff --git a/webrtc/absl/hash/internal/city.h b/include/absl/hash/internal/city.h similarity index 100% rename from webrtc/absl/hash/internal/city.h rename to include/absl/hash/internal/city.h diff --git a/webrtc/absl/hash/internal/hash.h b/include/absl/hash/internal/hash.h similarity index 100% rename from webrtc/absl/hash/internal/hash.h rename to include/absl/hash/internal/hash.h diff --git a/webrtc/absl/hash/internal/spy_hash_state.h b/include/absl/hash/internal/spy_hash_state.h similarity index 100% rename from webrtc/absl/hash/internal/spy_hash_state.h rename to include/absl/hash/internal/spy_hash_state.h diff --git a/webrtc/absl/memory/memory.h b/include/absl/memory/memory.h similarity index 100% rename from webrtc/absl/memory/memory.h rename to include/absl/memory/memory.h diff --git a/webrtc/absl/meta/type_traits.h b/include/absl/meta/type_traits.h similarity index 100% rename from webrtc/absl/meta/type_traits.h rename to include/absl/meta/type_traits.h diff --git a/webrtc/absl/numeric/int128.h b/include/absl/numeric/int128.h similarity index 100% rename from webrtc/absl/numeric/int128.h rename to include/absl/numeric/int128.h diff --git a/webrtc/absl/random/bernoulli_distribution.h b/include/absl/random/bernoulli_distribution.h similarity index 100% rename from webrtc/absl/random/bernoulli_distribution.h rename to include/absl/random/bernoulli_distribution.h diff --git a/webrtc/absl/random/beta_distribution.h b/include/absl/random/beta_distribution.h similarity index 100% rename from webrtc/absl/random/beta_distribution.h rename to include/absl/random/beta_distribution.h diff --git a/webrtc/absl/random/bit_gen_ref.h b/include/absl/random/bit_gen_ref.h similarity index 100% rename from webrtc/absl/random/bit_gen_ref.h rename to include/absl/random/bit_gen_ref.h diff --git a/webrtc/absl/random/discrete_distribution.h b/include/absl/random/discrete_distribution.h similarity index 100% rename from webrtc/absl/random/discrete_distribution.h rename to include/absl/random/discrete_distribution.h diff --git a/webrtc/absl/random/distributions.h b/include/absl/random/distributions.h similarity index 100% rename from webrtc/absl/random/distributions.h rename to include/absl/random/distributions.h diff --git a/webrtc/absl/random/exponential_distribution.h b/include/absl/random/exponential_distribution.h similarity index 100% rename from webrtc/absl/random/exponential_distribution.h rename to include/absl/random/exponential_distribution.h diff --git a/webrtc/absl/random/gaussian_distribution.h b/include/absl/random/gaussian_distribution.h similarity index 100% rename from webrtc/absl/random/gaussian_distribution.h rename to include/absl/random/gaussian_distribution.h diff --git a/webrtc/absl/random/internal/chi_square.h b/include/absl/random/internal/chi_square.h similarity index 100% rename from webrtc/absl/random/internal/chi_square.h rename to include/absl/random/internal/chi_square.h diff --git a/webrtc/absl/random/internal/distribution_caller.h b/include/absl/random/internal/distribution_caller.h similarity index 100% rename from webrtc/absl/random/internal/distribution_caller.h rename to include/absl/random/internal/distribution_caller.h diff --git a/webrtc/absl/random/internal/distribution_test_util.h b/include/absl/random/internal/distribution_test_util.h similarity index 100% rename from webrtc/absl/random/internal/distribution_test_util.h rename to include/absl/random/internal/distribution_test_util.h diff --git a/webrtc/absl/random/internal/distributions.h b/include/absl/random/internal/distributions.h similarity index 100% rename from webrtc/absl/random/internal/distributions.h rename to include/absl/random/internal/distributions.h diff --git a/webrtc/absl/random/internal/explicit_seed_seq.h b/include/absl/random/internal/explicit_seed_seq.h similarity index 100% rename from webrtc/absl/random/internal/explicit_seed_seq.h rename to include/absl/random/internal/explicit_seed_seq.h diff --git a/webrtc/absl/random/internal/fast_uniform_bits.h b/include/absl/random/internal/fast_uniform_bits.h similarity index 100% rename from webrtc/absl/random/internal/fast_uniform_bits.h rename to include/absl/random/internal/fast_uniform_bits.h diff --git a/webrtc/absl/random/internal/fastmath.h b/include/absl/random/internal/fastmath.h similarity index 100% rename from webrtc/absl/random/internal/fastmath.h rename to include/absl/random/internal/fastmath.h diff --git a/webrtc/absl/random/internal/generate_real.h b/include/absl/random/internal/generate_real.h similarity index 100% rename from webrtc/absl/random/internal/generate_real.h rename to include/absl/random/internal/generate_real.h diff --git a/webrtc/absl/random/internal/iostream_state_saver.h b/include/absl/random/internal/iostream_state_saver.h similarity index 100% rename from webrtc/absl/random/internal/iostream_state_saver.h rename to include/absl/random/internal/iostream_state_saver.h diff --git a/webrtc/absl/random/internal/mock_overload_set.h b/include/absl/random/internal/mock_overload_set.h similarity index 100% rename from webrtc/absl/random/internal/mock_overload_set.h rename to include/absl/random/internal/mock_overload_set.h diff --git a/webrtc/absl/random/internal/mocking_bit_gen_base.h b/include/absl/random/internal/mocking_bit_gen_base.h similarity index 100% rename from webrtc/absl/random/internal/mocking_bit_gen_base.h rename to include/absl/random/internal/mocking_bit_gen_base.h diff --git a/webrtc/absl/random/internal/nanobenchmark.h b/include/absl/random/internal/nanobenchmark.h similarity index 100% rename from webrtc/absl/random/internal/nanobenchmark.h rename to include/absl/random/internal/nanobenchmark.h diff --git a/webrtc/absl/random/internal/nonsecure_base.h b/include/absl/random/internal/nonsecure_base.h similarity index 100% rename from webrtc/absl/random/internal/nonsecure_base.h rename to include/absl/random/internal/nonsecure_base.h diff --git a/webrtc/absl/random/internal/pcg_engine.h b/include/absl/random/internal/pcg_engine.h similarity index 100% rename from webrtc/absl/random/internal/pcg_engine.h rename to include/absl/random/internal/pcg_engine.h diff --git a/webrtc/absl/random/internal/platform.h b/include/absl/random/internal/platform.h similarity index 100% rename from webrtc/absl/random/internal/platform.h rename to include/absl/random/internal/platform.h diff --git a/webrtc/absl/random/internal/pool_urbg.h b/include/absl/random/internal/pool_urbg.h similarity index 100% rename from webrtc/absl/random/internal/pool_urbg.h rename to include/absl/random/internal/pool_urbg.h diff --git a/webrtc/absl/random/internal/randen.h b/include/absl/random/internal/randen.h similarity index 100% rename from webrtc/absl/random/internal/randen.h rename to include/absl/random/internal/randen.h diff --git a/webrtc/absl/random/internal/randen_detect.h b/include/absl/random/internal/randen_detect.h similarity index 100% rename from webrtc/absl/random/internal/randen_detect.h rename to include/absl/random/internal/randen_detect.h diff --git a/webrtc/absl/random/internal/randen_engine.h b/include/absl/random/internal/randen_engine.h similarity index 100% rename from webrtc/absl/random/internal/randen_engine.h rename to include/absl/random/internal/randen_engine.h diff --git a/webrtc/absl/random/internal/randen_hwaes.h b/include/absl/random/internal/randen_hwaes.h similarity index 100% rename from webrtc/absl/random/internal/randen_hwaes.h rename to include/absl/random/internal/randen_hwaes.h diff --git a/webrtc/absl/random/internal/randen_slow.h b/include/absl/random/internal/randen_slow.h similarity index 100% rename from webrtc/absl/random/internal/randen_slow.h rename to include/absl/random/internal/randen_slow.h diff --git a/webrtc/absl/random/internal/randen_traits.h b/include/absl/random/internal/randen_traits.h similarity index 100% rename from webrtc/absl/random/internal/randen_traits.h rename to include/absl/random/internal/randen_traits.h diff --git a/webrtc/absl/random/internal/salted_seed_seq.h b/include/absl/random/internal/salted_seed_seq.h similarity index 100% rename from webrtc/absl/random/internal/salted_seed_seq.h rename to include/absl/random/internal/salted_seed_seq.h diff --git a/webrtc/absl/random/internal/seed_material.h b/include/absl/random/internal/seed_material.h similarity index 100% rename from webrtc/absl/random/internal/seed_material.h rename to include/absl/random/internal/seed_material.h diff --git a/webrtc/absl/random/internal/sequence_urbg.h b/include/absl/random/internal/sequence_urbg.h similarity index 100% rename from webrtc/absl/random/internal/sequence_urbg.h rename to include/absl/random/internal/sequence_urbg.h diff --git a/webrtc/absl/random/internal/traits.h b/include/absl/random/internal/traits.h similarity index 100% rename from webrtc/absl/random/internal/traits.h rename to include/absl/random/internal/traits.h diff --git a/webrtc/absl/random/internal/uniform_helper.h b/include/absl/random/internal/uniform_helper.h similarity index 100% rename from webrtc/absl/random/internal/uniform_helper.h rename to include/absl/random/internal/uniform_helper.h diff --git a/webrtc/absl/random/internal/wide_multiply.h b/include/absl/random/internal/wide_multiply.h similarity index 100% rename from webrtc/absl/random/internal/wide_multiply.h rename to include/absl/random/internal/wide_multiply.h diff --git a/webrtc/absl/random/log_uniform_int_distribution.h b/include/absl/random/log_uniform_int_distribution.h similarity index 100% rename from webrtc/absl/random/log_uniform_int_distribution.h rename to include/absl/random/log_uniform_int_distribution.h diff --git a/webrtc/absl/random/mock_distributions.h b/include/absl/random/mock_distributions.h similarity index 100% rename from webrtc/absl/random/mock_distributions.h rename to include/absl/random/mock_distributions.h diff --git a/webrtc/absl/random/mocking_bit_gen.h b/include/absl/random/mocking_bit_gen.h similarity index 100% rename from webrtc/absl/random/mocking_bit_gen.h rename to include/absl/random/mocking_bit_gen.h diff --git a/webrtc/absl/random/poisson_distribution.h b/include/absl/random/poisson_distribution.h similarity index 100% rename from webrtc/absl/random/poisson_distribution.h rename to include/absl/random/poisson_distribution.h diff --git a/webrtc/absl/random/random.h b/include/absl/random/random.h similarity index 100% rename from webrtc/absl/random/random.h rename to include/absl/random/random.h diff --git a/webrtc/absl/random/seed_gen_exception.h b/include/absl/random/seed_gen_exception.h similarity index 100% rename from webrtc/absl/random/seed_gen_exception.h rename to include/absl/random/seed_gen_exception.h diff --git a/webrtc/absl/random/seed_sequences.h b/include/absl/random/seed_sequences.h similarity index 100% rename from webrtc/absl/random/seed_sequences.h rename to include/absl/random/seed_sequences.h diff --git a/webrtc/absl/random/uniform_int_distribution.h b/include/absl/random/uniform_int_distribution.h similarity index 100% rename from webrtc/absl/random/uniform_int_distribution.h rename to include/absl/random/uniform_int_distribution.h diff --git a/webrtc/absl/random/uniform_real_distribution.h b/include/absl/random/uniform_real_distribution.h similarity index 100% rename from webrtc/absl/random/uniform_real_distribution.h rename to include/absl/random/uniform_real_distribution.h diff --git a/webrtc/absl/random/zipf_distribution.h b/include/absl/random/zipf_distribution.h similarity index 100% rename from webrtc/absl/random/zipf_distribution.h rename to include/absl/random/zipf_distribution.h diff --git a/webrtc/absl/status/status.h b/include/absl/status/status.h similarity index 100% rename from webrtc/absl/status/status.h rename to include/absl/status/status.h diff --git a/webrtc/absl/status/status_payload_printer.h b/include/absl/status/status_payload_printer.h similarity index 100% rename from webrtc/absl/status/status_payload_printer.h rename to include/absl/status/status_payload_printer.h diff --git a/webrtc/absl/strings/ascii.h b/include/absl/strings/ascii.h similarity index 100% rename from webrtc/absl/strings/ascii.h rename to include/absl/strings/ascii.h diff --git a/webrtc/absl/strings/charconv.h b/include/absl/strings/charconv.h similarity index 100% rename from webrtc/absl/strings/charconv.h rename to include/absl/strings/charconv.h diff --git a/webrtc/absl/strings/cord.h b/include/absl/strings/cord.h similarity index 100% rename from webrtc/absl/strings/cord.h rename to include/absl/strings/cord.h diff --git a/webrtc/absl/strings/cord_test_helpers.h b/include/absl/strings/cord_test_helpers.h similarity index 100% rename from webrtc/absl/strings/cord_test_helpers.h rename to include/absl/strings/cord_test_helpers.h diff --git a/webrtc/absl/strings/escaping.h b/include/absl/strings/escaping.h similarity index 100% rename from webrtc/absl/strings/escaping.h rename to include/absl/strings/escaping.h diff --git a/webrtc/absl/strings/internal/char_map.h b/include/absl/strings/internal/char_map.h similarity index 100% rename from webrtc/absl/strings/internal/char_map.h rename to include/absl/strings/internal/char_map.h diff --git a/webrtc/absl/strings/internal/charconv_bigint.h b/include/absl/strings/internal/charconv_bigint.h similarity index 100% rename from webrtc/absl/strings/internal/charconv_bigint.h rename to include/absl/strings/internal/charconv_bigint.h diff --git a/webrtc/absl/strings/internal/charconv_parse.h b/include/absl/strings/internal/charconv_parse.h similarity index 100% rename from webrtc/absl/strings/internal/charconv_parse.h rename to include/absl/strings/internal/charconv_parse.h diff --git a/webrtc/absl/strings/internal/cord_internal.h b/include/absl/strings/internal/cord_internal.h similarity index 100% rename from webrtc/absl/strings/internal/cord_internal.h rename to include/absl/strings/internal/cord_internal.h diff --git a/webrtc/absl/strings/internal/escaping.h b/include/absl/strings/internal/escaping.h similarity index 100% rename from webrtc/absl/strings/internal/escaping.h rename to include/absl/strings/internal/escaping.h diff --git a/webrtc/absl/strings/internal/escaping_test_common.h b/include/absl/strings/internal/escaping_test_common.h similarity index 100% rename from webrtc/absl/strings/internal/escaping_test_common.h rename to include/absl/strings/internal/escaping_test_common.h diff --git a/webrtc/absl/strings/internal/memutil.h b/include/absl/strings/internal/memutil.h similarity index 100% rename from webrtc/absl/strings/internal/memutil.h rename to include/absl/strings/internal/memutil.h diff --git a/webrtc/absl/strings/internal/numbers_test_common.h b/include/absl/strings/internal/numbers_test_common.h similarity index 100% rename from webrtc/absl/strings/internal/numbers_test_common.h rename to include/absl/strings/internal/numbers_test_common.h diff --git a/webrtc/absl/strings/internal/ostringstream.h b/include/absl/strings/internal/ostringstream.h similarity index 100% rename from webrtc/absl/strings/internal/ostringstream.h rename to include/absl/strings/internal/ostringstream.h diff --git a/webrtc/absl/strings/internal/pow10_helper.h b/include/absl/strings/internal/pow10_helper.h similarity index 100% rename from webrtc/absl/strings/internal/pow10_helper.h rename to include/absl/strings/internal/pow10_helper.h diff --git a/webrtc/absl/strings/internal/resize_uninitialized.h b/include/absl/strings/internal/resize_uninitialized.h similarity index 100% rename from webrtc/absl/strings/internal/resize_uninitialized.h rename to include/absl/strings/internal/resize_uninitialized.h diff --git a/webrtc/absl/strings/internal/stl_type_traits.h b/include/absl/strings/internal/stl_type_traits.h similarity index 100% rename from webrtc/absl/strings/internal/stl_type_traits.h rename to include/absl/strings/internal/stl_type_traits.h diff --git a/webrtc/absl/strings/internal/str_format/arg.h b/include/absl/strings/internal/str_format/arg.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/arg.h rename to include/absl/strings/internal/str_format/arg.h diff --git a/webrtc/absl/strings/internal/str_format/bind.h b/include/absl/strings/internal/str_format/bind.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/bind.h rename to include/absl/strings/internal/str_format/bind.h diff --git a/webrtc/absl/strings/internal/str_format/checker.h b/include/absl/strings/internal/str_format/checker.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/checker.h rename to include/absl/strings/internal/str_format/checker.h diff --git a/webrtc/absl/strings/internal/str_format/extension.h b/include/absl/strings/internal/str_format/extension.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/extension.h rename to include/absl/strings/internal/str_format/extension.h diff --git a/webrtc/absl/strings/internal/str_format/float_conversion.h b/include/absl/strings/internal/str_format/float_conversion.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/float_conversion.h rename to include/absl/strings/internal/str_format/float_conversion.h diff --git a/webrtc/absl/strings/internal/str_format/output.h b/include/absl/strings/internal/str_format/output.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/output.h rename to include/absl/strings/internal/str_format/output.h diff --git a/webrtc/absl/strings/internal/str_format/parser.h b/include/absl/strings/internal/str_format/parser.h similarity index 100% rename from webrtc/absl/strings/internal/str_format/parser.h rename to include/absl/strings/internal/str_format/parser.h diff --git a/webrtc/absl/strings/internal/str_join_internal.h b/include/absl/strings/internal/str_join_internal.h similarity index 100% rename from webrtc/absl/strings/internal/str_join_internal.h rename to include/absl/strings/internal/str_join_internal.h diff --git a/webrtc/absl/strings/internal/str_split_internal.h b/include/absl/strings/internal/str_split_internal.h similarity index 100% rename from webrtc/absl/strings/internal/str_split_internal.h rename to include/absl/strings/internal/str_split_internal.h diff --git a/webrtc/absl/strings/internal/utf8.h b/include/absl/strings/internal/utf8.h similarity index 100% rename from webrtc/absl/strings/internal/utf8.h rename to include/absl/strings/internal/utf8.h diff --git a/webrtc/absl/strings/match.h b/include/absl/strings/match.h similarity index 100% rename from webrtc/absl/strings/match.h rename to include/absl/strings/match.h diff --git a/webrtc/absl/strings/numbers.h b/include/absl/strings/numbers.h similarity index 100% rename from webrtc/absl/strings/numbers.h rename to include/absl/strings/numbers.h diff --git a/webrtc/absl/strings/str_cat.h b/include/absl/strings/str_cat.h similarity index 100% rename from webrtc/absl/strings/str_cat.h rename to include/absl/strings/str_cat.h diff --git a/webrtc/absl/strings/str_format.h b/include/absl/strings/str_format.h similarity index 100% rename from webrtc/absl/strings/str_format.h rename to include/absl/strings/str_format.h diff --git a/webrtc/absl/strings/str_join.h b/include/absl/strings/str_join.h similarity index 100% rename from webrtc/absl/strings/str_join.h rename to include/absl/strings/str_join.h diff --git a/webrtc/absl/strings/str_replace.h b/include/absl/strings/str_replace.h similarity index 100% rename from webrtc/absl/strings/str_replace.h rename to include/absl/strings/str_replace.h diff --git a/webrtc/absl/strings/str_split.h b/include/absl/strings/str_split.h similarity index 100% rename from webrtc/absl/strings/str_split.h rename to include/absl/strings/str_split.h diff --git a/webrtc/absl/strings/string_view.h b/include/absl/strings/string_view.h similarity index 100% rename from webrtc/absl/strings/string_view.h rename to include/absl/strings/string_view.h diff --git a/webrtc/absl/strings/strip.h b/include/absl/strings/strip.h similarity index 100% rename from webrtc/absl/strings/strip.h rename to include/absl/strings/strip.h diff --git a/webrtc/absl/strings/substitute.h b/include/absl/strings/substitute.h similarity index 100% rename from webrtc/absl/strings/substitute.h rename to include/absl/strings/substitute.h diff --git a/webrtc/absl/synchronization/barrier.h b/include/absl/synchronization/barrier.h similarity index 100% rename from webrtc/absl/synchronization/barrier.h rename to include/absl/synchronization/barrier.h diff --git a/webrtc/absl/synchronization/blocking_counter.h b/include/absl/synchronization/blocking_counter.h similarity index 100% rename from webrtc/absl/synchronization/blocking_counter.h rename to include/absl/synchronization/blocking_counter.h diff --git a/webrtc/absl/synchronization/internal/create_thread_identity.h b/include/absl/synchronization/internal/create_thread_identity.h similarity index 100% rename from webrtc/absl/synchronization/internal/create_thread_identity.h rename to include/absl/synchronization/internal/create_thread_identity.h diff --git a/webrtc/absl/synchronization/internal/graphcycles.h b/include/absl/synchronization/internal/graphcycles.h similarity index 100% rename from webrtc/absl/synchronization/internal/graphcycles.h rename to include/absl/synchronization/internal/graphcycles.h diff --git a/webrtc/absl/synchronization/internal/kernel_timeout.h b/include/absl/synchronization/internal/kernel_timeout.h similarity index 100% rename from webrtc/absl/synchronization/internal/kernel_timeout.h rename to include/absl/synchronization/internal/kernel_timeout.h diff --git a/webrtc/absl/synchronization/internal/per_thread_sem.h b/include/absl/synchronization/internal/per_thread_sem.h similarity index 100% rename from webrtc/absl/synchronization/internal/per_thread_sem.h rename to include/absl/synchronization/internal/per_thread_sem.h diff --git a/webrtc/absl/synchronization/internal/thread_pool.h b/include/absl/synchronization/internal/thread_pool.h similarity index 100% rename from webrtc/absl/synchronization/internal/thread_pool.h rename to include/absl/synchronization/internal/thread_pool.h diff --git a/webrtc/absl/synchronization/internal/waiter.h b/include/absl/synchronization/internal/waiter.h similarity index 100% rename from webrtc/absl/synchronization/internal/waiter.h rename to include/absl/synchronization/internal/waiter.h diff --git a/webrtc/absl/synchronization/mutex.h b/include/absl/synchronization/mutex.h similarity index 100% rename from webrtc/absl/synchronization/mutex.h rename to include/absl/synchronization/mutex.h diff --git a/webrtc/absl/synchronization/notification.h b/include/absl/synchronization/notification.h similarity index 100% rename from webrtc/absl/synchronization/notification.h rename to include/absl/synchronization/notification.h diff --git a/webrtc/absl/time/civil_time.h b/include/absl/time/civil_time.h similarity index 100% rename from webrtc/absl/time/civil_time.h rename to include/absl/time/civil_time.h diff --git a/webrtc/absl/time/clock.h b/include/absl/time/clock.h similarity index 100% rename from webrtc/absl/time/clock.h rename to include/absl/time/clock.h diff --git a/webrtc/absl/time/internal/cctz/include/cctz/civil_time.h b/include/absl/time/internal/cctz/include/cctz/civil_time.h similarity index 100% rename from webrtc/absl/time/internal/cctz/include/cctz/civil_time.h rename to include/absl/time/internal/cctz/include/cctz/civil_time.h diff --git a/webrtc/absl/time/internal/cctz/include/cctz/civil_time_detail.h b/include/absl/time/internal/cctz/include/cctz/civil_time_detail.h similarity index 100% rename from webrtc/absl/time/internal/cctz/include/cctz/civil_time_detail.h rename to include/absl/time/internal/cctz/include/cctz/civil_time_detail.h diff --git a/webrtc/absl/time/internal/cctz/include/cctz/time_zone.h b/include/absl/time/internal/cctz/include/cctz/time_zone.h similarity index 100% rename from webrtc/absl/time/internal/cctz/include/cctz/time_zone.h rename to include/absl/time/internal/cctz/include/cctz/time_zone.h diff --git a/webrtc/absl/time/internal/cctz/include/cctz/zone_info_source.h b/include/absl/time/internal/cctz/include/cctz/zone_info_source.h similarity index 100% rename from webrtc/absl/time/internal/cctz/include/cctz/zone_info_source.h rename to include/absl/time/internal/cctz/include/cctz/zone_info_source.h diff --git a/webrtc/absl/time/internal/cctz/src/time_zone_fixed.h b/include/absl/time/internal/cctz/src/time_zone_fixed.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/time_zone_fixed.h rename to include/absl/time/internal/cctz/src/time_zone_fixed.h diff --git a/webrtc/absl/time/internal/cctz/src/time_zone_if.h b/include/absl/time/internal/cctz/src/time_zone_if.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/time_zone_if.h rename to include/absl/time/internal/cctz/src/time_zone_if.h diff --git a/webrtc/absl/time/internal/cctz/src/time_zone_impl.h b/include/absl/time/internal/cctz/src/time_zone_impl.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/time_zone_impl.h rename to include/absl/time/internal/cctz/src/time_zone_impl.h diff --git a/webrtc/absl/time/internal/cctz/src/time_zone_info.h b/include/absl/time/internal/cctz/src/time_zone_info.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/time_zone_info.h rename to include/absl/time/internal/cctz/src/time_zone_info.h diff --git a/webrtc/absl/time/internal/cctz/src/time_zone_libc.h b/include/absl/time/internal/cctz/src/time_zone_libc.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/time_zone_libc.h rename to include/absl/time/internal/cctz/src/time_zone_libc.h diff --git a/webrtc/absl/time/internal/cctz/src/time_zone_posix.h b/include/absl/time/internal/cctz/src/time_zone_posix.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/time_zone_posix.h rename to include/absl/time/internal/cctz/src/time_zone_posix.h diff --git a/webrtc/absl/time/internal/cctz/src/tzfile.h b/include/absl/time/internal/cctz/src/tzfile.h similarity index 100% rename from webrtc/absl/time/internal/cctz/src/tzfile.h rename to include/absl/time/internal/cctz/src/tzfile.h diff --git a/webrtc/absl/time/internal/test_util.h b/include/absl/time/internal/test_util.h similarity index 100% rename from webrtc/absl/time/internal/test_util.h rename to include/absl/time/internal/test_util.h diff --git a/webrtc/absl/time/time.h b/include/absl/time/time.h similarity index 100% rename from webrtc/absl/time/time.h rename to include/absl/time/time.h diff --git a/webrtc/absl/types/any.h b/include/absl/types/any.h similarity index 100% rename from webrtc/absl/types/any.h rename to include/absl/types/any.h diff --git a/webrtc/absl/types/bad_any_cast.h b/include/absl/types/bad_any_cast.h similarity index 100% rename from webrtc/absl/types/bad_any_cast.h rename to include/absl/types/bad_any_cast.h diff --git a/webrtc/absl/types/bad_optional_access.h b/include/absl/types/bad_optional_access.h similarity index 100% rename from webrtc/absl/types/bad_optional_access.h rename to include/absl/types/bad_optional_access.h diff --git a/webrtc/absl/types/bad_variant_access.h b/include/absl/types/bad_variant_access.h similarity index 100% rename from webrtc/absl/types/bad_variant_access.h rename to include/absl/types/bad_variant_access.h diff --git a/webrtc/absl/types/compare.h b/include/absl/types/compare.h similarity index 100% rename from webrtc/absl/types/compare.h rename to include/absl/types/compare.h diff --git a/webrtc/absl/types/internal/conformance_aliases.h b/include/absl/types/internal/conformance_aliases.h similarity index 100% rename from webrtc/absl/types/internal/conformance_aliases.h rename to include/absl/types/internal/conformance_aliases.h diff --git a/webrtc/absl/types/internal/conformance_archetype.h b/include/absl/types/internal/conformance_archetype.h similarity index 100% rename from webrtc/absl/types/internal/conformance_archetype.h rename to include/absl/types/internal/conformance_archetype.h diff --git a/webrtc/absl/types/internal/conformance_profile.h b/include/absl/types/internal/conformance_profile.h similarity index 100% rename from webrtc/absl/types/internal/conformance_profile.h rename to include/absl/types/internal/conformance_profile.h diff --git a/webrtc/absl/types/internal/conformance_testing.h b/include/absl/types/internal/conformance_testing.h similarity index 100% rename from webrtc/absl/types/internal/conformance_testing.h rename to include/absl/types/internal/conformance_testing.h diff --git a/webrtc/absl/types/internal/conformance_testing_helpers.h b/include/absl/types/internal/conformance_testing_helpers.h similarity index 100% rename from webrtc/absl/types/internal/conformance_testing_helpers.h rename to include/absl/types/internal/conformance_testing_helpers.h diff --git a/webrtc/absl/types/internal/optional.h b/include/absl/types/internal/optional.h similarity index 100% rename from webrtc/absl/types/internal/optional.h rename to include/absl/types/internal/optional.h diff --git a/webrtc/absl/types/internal/parentheses.h b/include/absl/types/internal/parentheses.h similarity index 100% rename from webrtc/absl/types/internal/parentheses.h rename to include/absl/types/internal/parentheses.h diff --git a/webrtc/absl/types/internal/span.h b/include/absl/types/internal/span.h similarity index 100% rename from webrtc/absl/types/internal/span.h rename to include/absl/types/internal/span.h diff --git a/webrtc/absl/types/internal/transform_args.h b/include/absl/types/internal/transform_args.h similarity index 100% rename from webrtc/absl/types/internal/transform_args.h rename to include/absl/types/internal/transform_args.h diff --git a/webrtc/absl/types/internal/variant.h b/include/absl/types/internal/variant.h similarity index 100% rename from webrtc/absl/types/internal/variant.h rename to include/absl/types/internal/variant.h diff --git a/webrtc/absl/types/optional.h b/include/absl/types/optional.h similarity index 100% rename from webrtc/absl/types/optional.h rename to include/absl/types/optional.h diff --git a/webrtc/absl/types/span.h b/include/absl/types/span.h similarity index 100% rename from webrtc/absl/types/span.h rename to include/absl/types/span.h diff --git a/webrtc/absl/types/variant.h b/include/absl/types/variant.h similarity index 100% rename from webrtc/absl/types/variant.h rename to include/absl/types/variant.h diff --git a/webrtc/absl/utility/utility.h b/include/absl/utility/utility.h similarity index 100% rename from webrtc/absl/utility/utility.h rename to include/absl/utility/utility.h diff --git a/webrtc/third_party/json/allocator.h b/include/json/allocator.h similarity index 100% rename from webrtc/third_party/json/allocator.h rename to include/json/allocator.h diff --git a/webrtc/third_party/json/assertions.h b/include/json/assertions.h similarity index 100% rename from webrtc/third_party/json/assertions.h rename to include/json/assertions.h diff --git a/webrtc/third_party/json/autolink.h b/include/json/autolink.h similarity index 100% rename from webrtc/third_party/json/autolink.h rename to include/json/autolink.h diff --git a/webrtc/third_party/json/config.h b/include/json/config.h similarity index 100% rename from webrtc/third_party/json/config.h rename to include/json/config.h diff --git a/webrtc/third_party/json/features.h b/include/json/features.h similarity index 100% rename from webrtc/third_party/json/features.h rename to include/json/features.h diff --git a/webrtc/third_party/json/forwards.h b/include/json/forwards.h similarity index 100% rename from webrtc/third_party/json/forwards.h rename to include/json/forwards.h diff --git a/webrtc/third_party/json/json.h b/include/json/json.h similarity index 100% rename from webrtc/third_party/json/json.h rename to include/json/json.h diff --git a/webrtc/third_party/json/reader.h b/include/json/reader.h similarity index 100% rename from webrtc/third_party/json/reader.h rename to include/json/reader.h diff --git a/webrtc/third_party/json/value.h b/include/json/value.h similarity index 100% rename from webrtc/third_party/json/value.h rename to include/json/value.h diff --git a/webrtc/third_party/json/version.h b/include/json/version.h similarity index 100% rename from webrtc/third_party/json/version.h rename to include/json/version.h diff --git a/webrtc/third_party/json/writer.h b/include/json/writer.h similarity index 100% rename from webrtc/third_party/json/writer.h rename to include/json/writer.h diff --git a/include/libc++/CMakeLists.txt b/include/libc++/CMakeLists.txt new file mode 100644 index 00000000..302da8a1 --- /dev/null +++ b/include/libc++/CMakeLists.txt @@ -0,0 +1,274 @@ +set(files + __bit_reference + __bsd_locale_defaults.h + __bsd_locale_fallbacks.h + __errc + __debug + __functional_03 + __functional_base + __functional_base_03 + __hash_table + __libcpp_version + __locale + __mutex_base + __node_handle + __nullptr + __split_buffer + __sso_allocator + __std_stream + __string + __threading_support + __tree + __tuple + __undef_macros + algorithm + any + array + atomic + bit + bitset + cassert + ccomplex + cctype + cerrno + cfenv + cfloat + charconv + chrono + cinttypes + ciso646 + climits + clocale + cmath + codecvt + compare + complex + complex.h + condition_variable + csetjmp + csignal + cstdarg + cstdbool + cstddef + cstdint + cstdio + cstdlib + cstring + ctgmath + ctime + ctype.h + cwchar + cwctype + deque + errno.h + exception + execution + experimental/__config + experimental/__memory + experimental/algorithm + experimental/coroutine + experimental/deque + experimental/filesystem + experimental/forward_list + experimental/functional + experimental/iterator + experimental/list + experimental/map + experimental/memory_resource + experimental/propagate_const + experimental/regex + experimental/set + experimental/simd + experimental/string + experimental/type_traits + experimental/unordered_map + experimental/unordered_set + experimental/utility + experimental/vector + ext/__hash + ext/hash_map + ext/hash_set + fenv.h + filesystem + float.h + forward_list + fstream + functional + future + initializer_list + inttypes.h + iomanip + ios + iosfwd + iostream + istream + iterator + limits + limits.h + list + locale + locale.h + map + math.h + memory + module.modulemap + mutex + new + numeric + optional + ostream + queue + random + ratio + regex + scoped_allocator + set + setjmp.h + shared_mutex + span + sstream + stack + stdbool.h + stddef.h + stdexcept + stdint.h + stdio.h + stdlib.h + streambuf + string + string.h + string_view + strstream + system_error + tgmath.h + thread + tuple + type_traits + typeindex + typeinfo + unordered_map + unordered_set + utility + valarray + variant + vector + version + wchar.h + wctype.h + ) + +if(LIBCXX_INSTALL_SUPPORT_HEADERS) + set(files + ${files} + support/android/locale_bionic.h + support/fuchsia/xlocale.h + support/ibm/limits.h + support/ibm/locale_mgmt_aix.h + support/ibm/support.h + support/ibm/xlocale.h + support/musl/xlocale.h + support/newlib/xlocale.h + support/solaris/floatingpoint.h + support/solaris/wchar.h + support/solaris/xlocale.h + support/win32/limits_msvc_win32.h + support/win32/locale_win32.h + support/xlocale/__nop_locale_mgmt.h + support/xlocale/__posix_l_fallback.h + support/xlocale/__strtonum_fallback.h + ) +endif() + +if (LIBCXX_NEEDS_SITE_CONFIG) + # Generate a custom __config header. The new header is created + # by prepending __config_site to the current __config header. + add_custom_command(OUTPUT ${LIBCXX_BINARY_DIR}/__generated_config + COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py + ${LIBCXX_BINARY_DIR}/__config_site + ${LIBCXX_SOURCE_DIR}/include/__config + -o ${LIBCXX_BINARY_DIR}/__generated_config + DEPENDS ${LIBCXX_SOURCE_DIR}/include/__config + ${LIBCXX_BINARY_DIR}/__config_site + ) + # Add a target that executes the generation commands. + add_custom_target(cxx-generated-config ALL + DEPENDS ${LIBCXX_BINARY_DIR}/__generated_config) + set(generated_config_deps cxx-generated-config) +else() + set(files + ${files} + __config + ) +endif() + +# In some build configurations (like bootstrapping clang), we need to be able to +# install the libcxx headers before the CMake configuration for libcxx runs. Making +# the name of this target configurable allows LLVM/runtimes/CMakeLists.txt to +# add this subdirectory to the LLVM build to put libcxx's headers in place +# before libcxx's build configuration is run. +if (NOT CXX_HEADER_TARGET) + set(CXX_HEADER_TARGET cxx-headers) +endif() +if(NOT LIBCXX_USING_INSTALLED_LLVM AND LIBCXX_HEADER_DIR) + set(output_dir ${LIBCXX_HEADER_DIR}/include/c++/v1) + + set(out_files) + foreach(f ${files}) + set(src ${CMAKE_CURRENT_SOURCE_DIR}/${f}) + set(dst ${output_dir}/${f}) + add_custom_command(OUTPUT ${dst} + DEPENDS ${src} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst} + COMMENT "Copying CXX header ${f}") + list(APPEND out_files ${dst}) + endforeach() + + if (LIBCXX_NEEDS_SITE_CONFIG) + # Copy the generated header as __config into build directory. + set(src ${LIBCXX_BINARY_DIR}/__generated_config) + set(dst ${output_dir}/__config) + add_custom_command(OUTPUT ${dst} + DEPENDS ${src} ${generated_config_deps} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst} + COMMENT "Copying CXX __config") + list(APPEND out_files ${dst}) + endif() + + add_custom_target(${CXX_HEADER_TARGET} ALL DEPENDS ${out_files} ${LIBCXX_CXX_ABI_HEADER_TARGET}) +else() + add_custom_target(${CXX_HEADER_TARGET}) +endif() +set_target_properties(${CXX_HEADER_TARGET} PROPERTIES FOLDER "Misc") + +if (LIBCXX_INSTALL_HEADERS) + foreach(file ${files}) + get_filename_component(dir ${file} DIRECTORY) + install(FILES ${file} + DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir} + COMPONENT ${CXX_HEADER_TARGET} + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + ) + endforeach() + + if (LIBCXX_NEEDS_SITE_CONFIG) + # Install the generated header as __config. + install(FILES ${LIBCXX_BINARY_DIR}/__generated_config + DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1 + PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + RENAME __config + COMPONENT ${CXX_HEADER_TARGET}) + endif() + + if (NOT CMAKE_CONFIGURATION_TYPES) + add_custom_target(install-${CXX_HEADER_TARGET} + DEPENDS ${CXX_HEADER_TARGET} ${generated_config_deps} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${CXX_HEADER_TARGET} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + # Stripping is a no-op for headers + add_custom_target(install-${CXX_HEADER_TARGET}-stripped DEPENDS install-${CXX_HEADER_TARGET}) + + add_custom_target(install-libcxx-headers DEPENDS install-${CXX_HEADER_TARGET}) + add_custom_target(install-libcxx-headers-stripped DEPENDS install-${CXX_HEADER_TARGET}-stripped) + endif() +endif() diff --git a/include/libc++/__bit_reference b/include/libc++/__bit_reference new file mode 100644 index 00000000..cce74fb5 --- /dev/null +++ b/include/libc++/__bit_reference @@ -0,0 +1,1280 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_REFERENCE +#define _LIBCPP___BIT_REFERENCE + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +template class __bit_iterator; +template class __bit_const_reference; + +template +struct __has_storage_type +{ + static const bool value = false; +}; + +template ::value> +class __bit_reference +{ + typedef typename _Cp::__storage_type __storage_type; + typedef typename _Cp::__storage_pointer __storage_pointer; + + __storage_pointer __seg_; + __storage_type __mask_; + + friend typename _Cp::__self; + + friend class __bit_const_reference<_Cp>; + friend class __bit_iterator<_Cp, false>; +public: + _LIBCPP_INLINE_VISIBILITY operator bool() const _NOEXCEPT + {return static_cast(*__seg_ & __mask_);} + _LIBCPP_INLINE_VISIBILITY bool operator ~() const _NOEXCEPT + {return !static_cast(*this);} + + _LIBCPP_INLINE_VISIBILITY + __bit_reference& operator=(bool __x) _NOEXCEPT + { + if (__x) + *__seg_ |= __mask_; + else + *__seg_ &= ~__mask_; + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __bit_reference& operator=(const __bit_reference& __x) _NOEXCEPT + {return operator=(static_cast(__x));} + + _LIBCPP_INLINE_VISIBILITY void flip() _NOEXCEPT {*__seg_ ^= __mask_;} + _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, false> operator&() const _NOEXCEPT + {return __bit_iterator<_Cp, false>(__seg_, static_cast(__libcpp_ctz(__mask_)));} +private: + _LIBCPP_INLINE_VISIBILITY + __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT + : __seg_(__s), __mask_(__m) {} +}; + +template +class __bit_reference<_Cp, false> +{ +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT +{ + bool __t = __x; + __x = __y; + __y = __t; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT +{ + bool __t = __x; + __x = __y; + __y = __t; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT +{ + bool __t = __x; + __x = __y; + __y = __t; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT +{ + bool __t = __x; + __x = __y; + __y = __t; +} + +template +class __bit_const_reference +{ + typedef typename _Cp::__storage_type __storage_type; + typedef typename _Cp::__const_storage_pointer __storage_pointer; + + __storage_pointer __seg_; + __storage_type __mask_; + + friend typename _Cp::__self; + friend class __bit_iterator<_Cp, true>; +public: + _LIBCPP_INLINE_VISIBILITY + __bit_const_reference(const __bit_reference<_Cp>& __x) _NOEXCEPT + : __seg_(__x.__seg_), __mask_(__x.__mask_) {} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator bool() const _NOEXCEPT + {return static_cast(*__seg_ & __mask_);} + + _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, true> operator&() const _NOEXCEPT + {return __bit_iterator<_Cp, true>(__seg_, static_cast(__libcpp_ctz(__mask_)));} +private: + _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR + __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT + : __seg_(__s), __mask_(__m) {} + + __bit_const_reference& operator=(const __bit_const_reference& __x); +}; + +// find + +template +__bit_iterator<_Cp, _IsConst> +__find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) +{ + typedef __bit_iterator<_Cp, _IsConst> _It; + typedef typename _It::__storage_type __storage_type; + static const int __bits_per_word = _It::__bits_per_word; + // do first partial word + if (__first.__ctz_ != 0) + { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = _VSTD::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = *__first.__seg_ & __m; + if (__b) + return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); + if (__n == __dn) + return __first + __n; + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) + if (*__first.__seg_) + return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(*__first.__seg_))); + // do last partial word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first.__seg_ & __m; + if (__b) + return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); + } + return _It(__first.__seg_, static_cast(__n)); +} + +template +__bit_iterator<_Cp, _IsConst> +__find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) +{ + typedef __bit_iterator<_Cp, _IsConst> _It; + typedef typename _It::__storage_type __storage_type; + const int __bits_per_word = _It::__bits_per_word; + // do first partial word + if (__first.__ctz_ != 0) + { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = _VSTD::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = ~*__first.__seg_ & __m; + if (__b) + return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); + if (__n == __dn) + return __first + __n; + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) + { + __storage_type __b = ~*__first.__seg_; + if (__b) + return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); + } + // do last partial word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = ~*__first.__seg_ & __m; + if (__b) + return _It(__first.__seg_, static_cast(_VSTD::__libcpp_ctz(__b))); + } + return _It(__first.__seg_, static_cast(__n)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +__bit_iterator<_Cp, _IsConst> +find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_) +{ + if (static_cast(__value_)) + return __find_bool_true(__first, static_cast(__last - __first)); + return __find_bool_false(__first, static_cast(__last - __first)); +} + +// count + +template +typename __bit_iterator<_Cp, _IsConst>::difference_type +__count_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) +{ + typedef __bit_iterator<_Cp, _IsConst> _It; + typedef typename _It::__storage_type __storage_type; + typedef typename _It::difference_type difference_type; + const int __bits_per_word = _It::__bits_per_word; + difference_type __r = 0; + // do first partial word + if (__first.__ctz_ != 0) + { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = _VSTD::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __r = _VSTD::__libcpp_popcount(*__first.__seg_ & __m); + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) + __r += _VSTD::__libcpp_popcount(*__first.__seg_); + // do last partial word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __r += _VSTD::__libcpp_popcount(*__first.__seg_ & __m); + } + return __r; +} + +template +typename __bit_iterator<_Cp, _IsConst>::difference_type +__count_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) +{ + typedef __bit_iterator<_Cp, _IsConst> _It; + typedef typename _It::__storage_type __storage_type; + typedef typename _It::difference_type difference_type; + const int __bits_per_word = _It::__bits_per_word; + difference_type __r = 0; + // do first partial word + if (__first.__ctz_ != 0) + { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = _VSTD::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __r = _VSTD::__libcpp_popcount(~*__first.__seg_ & __m); + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + for (; __n >= __bits_per_word; ++__first.__seg_, __n -= __bits_per_word) + __r += _VSTD::__libcpp_popcount(~*__first.__seg_); + // do last partial word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __r += _VSTD::__libcpp_popcount(~*__first.__seg_ & __m); + } + return __r; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __bit_iterator<_Cp, _IsConst>::difference_type +count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_) +{ + if (static_cast(__value_)) + return __count_bool_true(__first, static_cast(__last - __first)); + return __count_bool_false(__first, static_cast(__last - __first)); +} + +// fill_n + +template +void +__fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) +{ + typedef __bit_iterator<_Cp, false> _It; + typedef typename _It::__storage_type __storage_type; + const int __bits_per_word = _It::__bits_per_word; + // do first partial word + if (__first.__ctz_ != 0) + { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = _VSTD::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + *__first.__seg_ &= ~__m; + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + __storage_type __nw = __n / __bits_per_word; + _VSTD::memset(_VSTD::__to_raw_pointer(__first.__seg_), 0, __nw * sizeof(__storage_type)); + __n -= __nw * __bits_per_word; + // do last partial word + if (__n > 0) + { + __first.__seg_ += __nw; + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + *__first.__seg_ &= ~__m; + } +} + +template +void +__fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) +{ + typedef __bit_iterator<_Cp, false> _It; + typedef typename _It::__storage_type __storage_type; + const int __bits_per_word = _It::__bits_per_word; + // do first partial word + if (__first.__ctz_ != 0) + { + __storage_type __clz_f = static_cast<__storage_type>(__bits_per_word - __first.__ctz_); + __storage_type __dn = _VSTD::min(__clz_f, __n); + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + *__first.__seg_ |= __m; + __n -= __dn; + ++__first.__seg_; + } + // do middle whole words + __storage_type __nw = __n / __bits_per_word; + _VSTD::memset(_VSTD::__to_raw_pointer(__first.__seg_), -1, __nw * sizeof(__storage_type)); + __n -= __nw * __bits_per_word; + // do last partial word + if (__n > 0) + { + __first.__seg_ += __nw; + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + *__first.__seg_ |= __m; + } +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value_) +{ + if (__n > 0) + { + if (__value_) + __fill_n_true(__first, __n); + else + __fill_n_false(__first, __n); + } +} + +// fill + +template +inline _LIBCPP_INLINE_VISIBILITY +void +fill(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __last, bool __value_) +{ + _VSTD::fill_n(__first, static_cast(__last - __first), __value_); +} + +// copy + +template +__bit_iterator<_Cp, false> +__copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, + __bit_iterator<_Cp, false> __result) +{ + typedef __bit_iterator<_Cp, _IsConst> _In; + typedef typename _In::difference_type difference_type; + typedef typename _In::__storage_type __storage_type; + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) + { + // do first word + if (__first.__ctz_ != 0) + { + unsigned __clz = __bits_per_word - __first.__ctz_; + difference_type __dn = _VSTD::min(static_cast(__clz), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); + __storage_type __b = *__first.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + ++__first.__seg_; + // __first.__ctz_ = 0; + } + // __first.__ctz_ == 0; + // do middle words + __storage_type __nw = __n / __bits_per_word; + _VSTD::memmove(_VSTD::__to_raw_pointer(__result.__seg_), + _VSTD::__to_raw_pointer(__first.__seg_), + __nw * sizeof(__storage_type)); + __n -= __nw * __bits_per_word; + __result.__seg_ += __nw; + // do last word + if (__n > 0) + { + __first.__seg_ += __nw; + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__ctz_ = static_cast(__n); + } + } + return __result; +} + +template +__bit_iterator<_Cp, false> +__copy_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, + __bit_iterator<_Cp, false> __result) +{ + typedef __bit_iterator<_Cp, _IsConst> _In; + typedef typename _In::difference_type difference_type; + typedef typename _In::__storage_type __storage_type; + static const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) + { + // do first word + if (__first.__ctz_ != 0) + { + unsigned __clz_f = __bits_per_word - __first.__ctz_; + difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = *__first.__seg_ & __m; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); + *__result.__seg_ &= ~__m; + if (__result.__ctz_ > __first.__ctz_) + *__result.__seg_ |= __b << (__result.__ctz_ - __first.__ctz_); + else + *__result.__seg_ |= __b >> (__first.__ctz_ - __result.__ctz_); + __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); + __dn -= __ddn; + if (__dn > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __dn); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> (__first.__ctz_ + __ddn); + __result.__ctz_ = static_cast(__dn); + } + ++__first.__seg_; + // __first.__ctz_ = 0; + } + // __first.__ctz_ == 0; + // do middle words + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __m = ~__storage_type(0) << __result.__ctz_; + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) + { + __storage_type __b = *__first.__seg_; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b << __result.__ctz_; + ++__result.__seg_; + *__result.__seg_ &= __m; + *__result.__seg_ |= __b >> __clz_r; + } + // do last word + if (__n > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first.__seg_ & __m; + __storage_type __dn = _VSTD::min(__n, static_cast(__clz_r)); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b << __result.__ctz_; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> __dn; + __result.__ctz_ = static_cast(__n); + } + } + } + return __result; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +__bit_iterator<_Cp, false> +copy(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) +{ + if (__first.__ctz_ == __result.__ctz_) + return __copy_aligned(__first, __last, __result); + return __copy_unaligned(__first, __last, __result); +} + +// copy_backward + +template +__bit_iterator<_Cp, false> +__copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, + __bit_iterator<_Cp, false> __result) +{ + typedef __bit_iterator<_Cp, _IsConst> _In; + typedef typename _In::difference_type difference_type; + typedef typename _In::__storage_type __storage_type; + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) + { + // do first word + if (__last.__ctz_ != 0) + { + difference_type __dn = _VSTD::min(static_cast(__last.__ctz_), __n); + __n -= __dn; + unsigned __clz = __bits_per_word - __last.__ctz_; + __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz); + __storage_type __b = *__last.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + + __result.__ctz_) % __bits_per_word); + // __last.__ctz_ = 0 + } + // __last.__ctz_ == 0 || __n == 0 + // __result.__ctz_ == 0 || __n == 0 + // do middle words + __storage_type __nw = __n / __bits_per_word; + __result.__seg_ -= __nw; + __last.__seg_ -= __nw; + _VSTD::memmove(_VSTD::__to_raw_pointer(__result.__seg_), + _VSTD::__to_raw_pointer(__last.__seg_), + __nw * sizeof(__storage_type)); + __n -= __nw * __bits_per_word; + // do last word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) << (__bits_per_word - __n); + __storage_type __b = *--__last.__seg_ & __m; + *--__result.__seg_ &= ~__m; + *__result.__seg_ |= __b; + __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); + } + } + return __result; +} + +template +__bit_iterator<_Cp, false> +__copy_backward_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, + __bit_iterator<_Cp, false> __result) +{ + typedef __bit_iterator<_Cp, _IsConst> _In; + typedef typename _In::difference_type difference_type; + typedef typename _In::__storage_type __storage_type; + const int __bits_per_word = _In::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) + { + // do first word + if (__last.__ctz_ != 0) + { + difference_type __dn = _VSTD::min(static_cast(__last.__ctz_), __n); + __n -= __dn; + unsigned __clz_l = __bits_per_word - __last.__ctz_; + __storage_type __m = (~__storage_type(0) << (__last.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_l); + __storage_type __b = *__last.__seg_ & __m; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __ddn = _VSTD::min(__dn, static_cast(__result.__ctz_)); + if (__ddn > 0) + { + __m = (~__storage_type(0) << (__result.__ctz_ - __ddn)) & (~__storage_type(0) >> __clz_r); + *__result.__seg_ &= ~__m; + if (__result.__ctz_ > __last.__ctz_) + *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); + else + *__result.__seg_ |= __b >> (__last.__ctz_ - __result.__ctz_); + __result.__ctz_ = static_cast(((-__ddn & (__bits_per_word - 1)) + + __result.__ctz_) % __bits_per_word); + __dn -= __ddn; + } + if (__dn > 0) + { + // __result.__ctz_ == 0 + --__result.__seg_; + __result.__ctz_ = static_cast(-__dn & (__bits_per_word - 1)); + __m = ~__storage_type(0) << __result.__ctz_; + *__result.__seg_ &= ~__m; + __last.__ctz_ -= __dn + __ddn; + *__result.__seg_ |= __b << (__result.__ctz_ - __last.__ctz_); + } + // __last.__ctz_ = 0 + } + // __last.__ctz_ == 0 || __n == 0 + // __result.__ctz_ != 0 || __n == 0 + // do middle words + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __m = ~__storage_type(0) >> __clz_r; + for (; __n >= __bits_per_word; __n -= __bits_per_word) + { + __storage_type __b = *--__last.__seg_; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> __clz_r; + *--__result.__seg_ &= __m; + *__result.__seg_ |= __b << __result.__ctz_; + } + // do last word + if (__n > 0) + { + __m = ~__storage_type(0) << (__bits_per_word - __n); + __storage_type __b = *--__last.__seg_ & __m; + __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __dn = _VSTD::min(__n, static_cast(__result.__ctz_)); + __m = (~__storage_type(0) << (__result.__ctz_ - __dn)) & (~__storage_type(0) >> __clz_r); + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b >> (__bits_per_word - __result.__ctz_); + __result.__ctz_ = static_cast(((-__dn & (__bits_per_word - 1)) + + __result.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) + { + // __result.__ctz_ == 0 + --__result.__seg_; + __result.__ctz_ = static_cast(-__n & (__bits_per_word - 1)); + __m = ~__storage_type(0) << __result.__ctz_; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b << (__result.__ctz_ - (__bits_per_word - __n - __dn)); + } + } + } + return __result; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +__bit_iterator<_Cp, false> +copy_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) +{ + if (__last.__ctz_ == __result.__ctz_) + return __copy_backward_aligned(__first, __last, __result); + return __copy_backward_unaligned(__first, __last, __result); +} + +// move + +template +inline _LIBCPP_INLINE_VISIBILITY +__bit_iterator<_Cp, false> +move(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) +{ + return _VSTD::copy(__first, __last, __result); +} + +// move_backward + +template +inline _LIBCPP_INLINE_VISIBILITY +__bit_iterator<_Cp, false> +move_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) +{ + return _VSTD::copy_backward(__first, __last, __result); +} + +// swap_ranges + +template +__bit_iterator<__C2, false> +__swap_ranges_aligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, + __bit_iterator<__C2, false> __result) +{ + typedef __bit_iterator<__C1, false> _I1; + typedef typename _I1::difference_type difference_type; + typedef typename _I1::__storage_type __storage_type; + const int __bits_per_word = _I1::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) + { + // do first word + if (__first.__ctz_ != 0) + { + unsigned __clz = __bits_per_word - __first.__ctz_; + difference_type __dn = _VSTD::min(static_cast(__clz), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1; + *__first.__seg_ |= __b2; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + ++__first.__seg_; + // __first.__ctz_ = 0; + } + // __first.__ctz_ == 0; + // do middle words + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_, ++__result.__seg_) + swap(*__first.__seg_, *__result.__seg_); + // do last word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1; + *__first.__seg_ |= __b2; + __result.__ctz_ = static_cast(__n); + } + } + return __result; +} + +template +__bit_iterator<__C2, false> +__swap_ranges_unaligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, + __bit_iterator<__C2, false> __result) +{ + typedef __bit_iterator<__C1, false> _I1; + typedef typename _I1::difference_type difference_type; + typedef typename _I1::__storage_type __storage_type; + const int __bits_per_word = _I1::__bits_per_word; + difference_type __n = __last - __first; + if (__n > 0) + { + // do first word + if (__first.__ctz_ != 0) + { + unsigned __clz_f = __bits_per_word - __first.__ctz_; + difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + if (__result.__ctz_ > __first.__ctz_) + { + unsigned __s = __result.__ctz_ - __first.__ctz_; + *__result.__seg_ |= __b1 << __s; + *__first.__seg_ |= __b2 >> __s; + } + else + { + unsigned __s = __first.__ctz_ - __result.__ctz_; + *__result.__seg_ |= __b1 >> __s; + *__first.__seg_ |= __b2 << __s; + } + __result.__seg_ += (__ddn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__ddn + __result.__ctz_) % __bits_per_word); + __dn -= __ddn; + if (__dn > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __dn); + __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + unsigned __s = __first.__ctz_ + __ddn; + *__result.__seg_ |= __b1 >> __s; + *__first.__seg_ |= __b2 << __s; + __result.__ctz_ = static_cast(__dn); + } + ++__first.__seg_; + // __first.__ctz_ = 0; + } + // __first.__ctz_ == 0; + // do middle words + __storage_type __m = ~__storage_type(0) << __result.__ctz_; + unsigned __clz_r = __bits_per_word - __result.__ctz_; + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first.__seg_) + { + __storage_type __b1 = *__first.__seg_; + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1 << __result.__ctz_; + *__first.__seg_ = __b2 >> __result.__ctz_; + ++__result.__seg_; + __b2 = *__result.__seg_ & ~__m; + *__result.__seg_ &= __m; + *__result.__seg_ |= __b1 >> __clz_r; + *__first.__seg_ |= __b2 << __clz_r; + } + // do last word + if (__n > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b1 = *__first.__seg_ & __m; + *__first.__seg_ &= ~__m; + __storage_type __dn = _VSTD::min<__storage_type>(__n, __clz_r); + __m = (~__storage_type(0) << __result.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); + __storage_type __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1 << __result.__ctz_; + *__first.__seg_ |= __b2 >> __result.__ctz_; + __result.__seg_ += (__dn + __result.__ctz_) / __bits_per_word; + __result.__ctz_ = static_cast((__dn + __result.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __b2 = *__result.__seg_ & __m; + *__result.__seg_ &= ~__m; + *__result.__seg_ |= __b1 >> __dn; + *__first.__seg_ |= __b2 << __dn; + __result.__ctz_ = static_cast(__n); + } + } + } + return __result; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +__bit_iterator<__C2, false> +swap_ranges(__bit_iterator<__C1, false> __first1, __bit_iterator<__C1, false> __last1, + __bit_iterator<__C2, false> __first2) +{ + if (__first1.__ctz_ == __first2.__ctz_) + return __swap_ranges_aligned(__first1, __last1, __first2); + return __swap_ranges_unaligned(__first1, __last1, __first2); +} + +// rotate + +template +struct __bit_array +{ + typedef typename _Cp::difference_type difference_type; + typedef typename _Cp::__storage_type __storage_type; + typedef typename _Cp::__storage_pointer __storage_pointer; + typedef typename _Cp::iterator iterator; + static const unsigned __bits_per_word = _Cp::__bits_per_word; + static const unsigned _Np = 4; + + difference_type __size_; + __storage_type __word_[_Np]; + + _LIBCPP_INLINE_VISIBILITY static difference_type capacity() + {return static_cast(_Np * __bits_per_word);} + _LIBCPP_INLINE_VISIBILITY explicit __bit_array(difference_type __s) : __size_(__s) {} + _LIBCPP_INLINE_VISIBILITY iterator begin() + { + return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0); + } + _LIBCPP_INLINE_VISIBILITY iterator end() + { + return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word, + static_cast(__size_ % __bits_per_word)); + } +}; + +template +__bit_iterator<_Cp, false> +rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, __bit_iterator<_Cp, false> __last) +{ + typedef __bit_iterator<_Cp, false> _I1; + typedef typename _I1::difference_type difference_type; + difference_type __d1 = __middle - __first; + difference_type __d2 = __last - __middle; + _I1 __r = __first + __d2; + while (__d1 != 0 && __d2 != 0) + { + if (__d1 <= __d2) + { + if (__d1 <= __bit_array<_Cp>::capacity()) + { + __bit_array<_Cp> __b(__d1); + _VSTD::copy(__first, __middle, __b.begin()); + _VSTD::copy(__b.begin(), __b.end(), _VSTD::copy(__middle, __last, __first)); + break; + } + else + { + __bit_iterator<_Cp, false> __mp = _VSTD::swap_ranges(__first, __middle, __middle); + __first = __middle; + __middle = __mp; + __d2 -= __d1; + } + } + else + { + if (__d2 <= __bit_array<_Cp>::capacity()) + { + __bit_array<_Cp> __b(__d2); + _VSTD::copy(__middle, __last, __b.begin()); + _VSTD::copy_backward(__b.begin(), __b.end(), _VSTD::copy_backward(__first, __middle, __last)); + break; + } + else + { + __bit_iterator<_Cp, false> __mp = __first + __d2; + _VSTD::swap_ranges(__first, __mp, __middle); + __first = __mp; + __d1 -= __d2; + } + } + } + return __r; +} + +// equal + +template +bool +__equal_unaligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, + __bit_iterator<_Cp, _IC2> __first2) +{ + typedef __bit_iterator<_Cp, _IC1> _It; + typedef typename _It::difference_type difference_type; + typedef typename _It::__storage_type __storage_type; + static const int __bits_per_word = _It::__bits_per_word; + difference_type __n = __last1 - __first1; + if (__n > 0) + { + // do first word + if (__first1.__ctz_ != 0) + { + unsigned __clz_f = __bits_per_word - __first1.__ctz_; + difference_type __dn = _VSTD::min(static_cast(__clz_f), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz_f - __dn)); + __storage_type __b = *__first1.__seg_ & __m; + unsigned __clz_r = __bits_per_word - __first2.__ctz_; + __storage_type __ddn = _VSTD::min<__storage_type>(__dn, __clz_r); + __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __ddn)); + if (__first2.__ctz_ > __first1.__ctz_) + { + if ((*__first2.__seg_ & __m) != (__b << (__first2.__ctz_ - __first1.__ctz_))) + return false; + } + else + { + if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ - __first2.__ctz_))) + return false; + } + __first2.__seg_ += (__ddn + __first2.__ctz_) / __bits_per_word; + __first2.__ctz_ = static_cast((__ddn + __first2.__ctz_) % __bits_per_word); + __dn -= __ddn; + if (__dn > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __dn); + if ((*__first2.__seg_ & __m) != (__b >> (__first1.__ctz_ + __ddn))) + return false; + __first2.__ctz_ = static_cast(__dn); + } + ++__first1.__seg_; + // __first1.__ctz_ = 0; + } + // __first1.__ctz_ == 0; + // do middle words + unsigned __clz_r = __bits_per_word - __first2.__ctz_; + __storage_type __m = ~__storage_type(0) << __first2.__ctz_; + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_) + { + __storage_type __b = *__first1.__seg_; + if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) + return false; + ++__first2.__seg_; + if ((*__first2.__seg_ & ~__m) != (__b >> __clz_r)) + return false; + } + // do last word + if (__n > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + __storage_type __b = *__first1.__seg_ & __m; + __storage_type __dn = _VSTD::min(__n, static_cast(__clz_r)); + __m = (~__storage_type(0) << __first2.__ctz_) & (~__storage_type(0) >> (__clz_r - __dn)); + if ((*__first2.__seg_ & __m) != (__b << __first2.__ctz_)) + return false; + __first2.__seg_ += (__dn + __first2.__ctz_) / __bits_per_word; + __first2.__ctz_ = static_cast((__dn + __first2.__ctz_) % __bits_per_word); + __n -= __dn; + if (__n > 0) + { + __m = ~__storage_type(0) >> (__bits_per_word - __n); + if ((*__first2.__seg_ & __m) != (__b >> __dn)) + return false; + } + } + } + return true; +} + +template +bool +__equal_aligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, + __bit_iterator<_Cp, _IC2> __first2) +{ + typedef __bit_iterator<_Cp, _IC1> _It; + typedef typename _It::difference_type difference_type; + typedef typename _It::__storage_type __storage_type; + static const int __bits_per_word = _It::__bits_per_word; + difference_type __n = __last1 - __first1; + if (__n > 0) + { + // do first word + if (__first1.__ctz_ != 0) + { + unsigned __clz = __bits_per_word - __first1.__ctz_; + difference_type __dn = _VSTD::min(static_cast(__clz), __n); + __n -= __dn; + __storage_type __m = (~__storage_type(0) << __first1.__ctz_) & (~__storage_type(0) >> (__clz - __dn)); + if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) + return false; + ++__first2.__seg_; + ++__first1.__seg_; + // __first1.__ctz_ = 0; + // __first2.__ctz_ = 0; + } + // __first1.__ctz_ == 0; + // __first2.__ctz_ == 0; + // do middle words + for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_, ++__first2.__seg_) + if (*__first2.__seg_ != *__first1.__seg_) + return false; + // do last word + if (__n > 0) + { + __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n); + if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m)) + return false; + } + } + return true; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +equal(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) +{ + if (__first1.__ctz_ == __first2.__ctz_) + return __equal_aligned(__first1, __last1, __first2); + return __equal_unaligned(__first1, __last1, __first2); +} + +template +class __bit_iterator +{ +public: + typedef typename _Cp::difference_type difference_type; + typedef bool value_type; + typedef __bit_iterator pointer; + typedef typename conditional<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >::type reference; + typedef random_access_iterator_tag iterator_category; + +private: + typedef typename _Cp::__storage_type __storage_type; + typedef typename conditional<_IsConst, typename _Cp::__const_storage_pointer, + typename _Cp::__storage_pointer>::type __storage_pointer; + static const unsigned __bits_per_word = _Cp::__bits_per_word; + + __storage_pointer __seg_; + unsigned __ctz_; + +public: + _LIBCPP_INLINE_VISIBILITY __bit_iterator() _NOEXCEPT +#if _LIBCPP_STD_VER > 11 + : __seg_(nullptr), __ctz_(0) +#endif + {} + + _LIBCPP_INLINE_VISIBILITY + __bit_iterator(const __bit_iterator<_Cp, false>& __it) _NOEXCEPT + : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {} + + _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT + {return reference(__seg_, __storage_type(1) << __ctz_);} + + _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator++() + { + if (__ctz_ != __bits_per_word-1) + ++__ctz_; + else + { + __ctz_ = 0; + ++__seg_; + } + return *this; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator operator++(int) + { + __bit_iterator __tmp = *this; + ++(*this); + return __tmp; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator--() + { + if (__ctz_ != 0) + --__ctz_; + else + { + __ctz_ = __bits_per_word - 1; + --__seg_; + } + return *this; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator operator--(int) + { + __bit_iterator __tmp = *this; + --(*this); + return __tmp; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator+=(difference_type __n) + { + if (__n >= 0) + __seg_ += (__n + __ctz_) / __bits_per_word; + else + __seg_ += static_cast(__n - __bits_per_word + __ctz_ + 1) + / static_cast(__bits_per_word); + __n &= (__bits_per_word - 1); + __ctz_ = static_cast((__n + __ctz_) % __bits_per_word); + return *this; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator-=(difference_type __n) + { + return *this += -__n; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator operator+(difference_type __n) const + { + __bit_iterator __t(*this); + __t += __n; + return __t; + } + + _LIBCPP_INLINE_VISIBILITY __bit_iterator operator-(difference_type __n) const + { + __bit_iterator __t(*this); + __t -= __n; + return __t; + } + + _LIBCPP_INLINE_VISIBILITY + friend __bit_iterator operator+(difference_type __n, const __bit_iterator& __it) {return __it + __n;} + + _LIBCPP_INLINE_VISIBILITY + friend difference_type operator-(const __bit_iterator& __x, const __bit_iterator& __y) + {return (__x.__seg_ - __y.__seg_) * __bits_per_word + __x.__ctz_ - __y.__ctz_;} + + _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const {return *(*this + __n);} + + _LIBCPP_INLINE_VISIBILITY friend bool operator==(const __bit_iterator& __x, const __bit_iterator& __y) + {return __x.__seg_ == __y.__seg_ && __x.__ctz_ == __y.__ctz_;} + + _LIBCPP_INLINE_VISIBILITY friend bool operator!=(const __bit_iterator& __x, const __bit_iterator& __y) + {return !(__x == __y);} + + _LIBCPP_INLINE_VISIBILITY friend bool operator<(const __bit_iterator& __x, const __bit_iterator& __y) + {return __x.__seg_ < __y.__seg_ || (__x.__seg_ == __y.__seg_ && __x.__ctz_ < __y.__ctz_);} + + _LIBCPP_INLINE_VISIBILITY friend bool operator>(const __bit_iterator& __x, const __bit_iterator& __y) + {return __y < __x;} + + _LIBCPP_INLINE_VISIBILITY friend bool operator<=(const __bit_iterator& __x, const __bit_iterator& __y) + {return !(__y < __x);} + + _LIBCPP_INLINE_VISIBILITY friend bool operator>=(const __bit_iterator& __x, const __bit_iterator& __y) + {return !(__x < __y);} + +private: + _LIBCPP_INLINE_VISIBILITY + __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT + : __seg_(__s), __ctz_(__ctz) {} + + friend typename _Cp::__self; + + friend class __bit_reference<_Cp>; + friend class __bit_const_reference<_Cp>; + friend class __bit_iterator<_Cp, true>; + template friend struct __bit_array; + template friend void __fill_n_false(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); + template friend void __fill_n_true(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); + template friend __bit_iterator<_Dp, false> __copy_aligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template friend __bit_iterator<_Dp, false> __copy_unaligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template friend __bit_iterator<_Dp, false> copy(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template friend __bit_iterator<_Dp, false> __copy_backward_aligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template friend __bit_iterator<_Dp, false> __copy_backward_unaligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template friend __bit_iterator<_Dp, false> copy_backward(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template friend __bit_iterator<__C2, false> __swap_ranges_aligned(__bit_iterator<__C1, false>, + __bit_iterator<__C1, false>, + __bit_iterator<__C2, false>); + template friend __bit_iterator<__C2, false> __swap_ranges_unaligned(__bit_iterator<__C1, false>, + __bit_iterator<__C1, false>, + __bit_iterator<__C2, false>); + template friend __bit_iterator<__C2, false> swap_ranges(__bit_iterator<__C1, false>, + __bit_iterator<__C1, false>, + __bit_iterator<__C2, false>); + template friend __bit_iterator<_Dp, false> rotate(__bit_iterator<_Dp, false>, + __bit_iterator<_Dp, false>, + __bit_iterator<_Dp, false>); + template friend bool __equal_aligned(__bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC2>); + template friend bool __equal_unaligned(__bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC2>); + template friend bool equal(__bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC2>); + template friend __bit_iterator<_Dp, _IC> __find_bool_true(__bit_iterator<_Dp, _IC>, + typename _Dp::size_type); + template friend __bit_iterator<_Dp, _IC> __find_bool_false(__bit_iterator<_Dp, _IC>, + typename _Dp::size_type); + template friend typename __bit_iterator<_Dp, _IC>::difference_type + __count_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); + template friend typename __bit_iterator<_Dp, _IC>::difference_type + __count_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); +}; + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___BIT_REFERENCE diff --git a/include/libc++/__bsd_locale_defaults.h b/include/libc++/__bsd_locale_defaults.h new file mode 100644 index 00000000..2ace2a21 --- /dev/null +++ b/include/libc++/__bsd_locale_defaults.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===---------------------- __bsd_locale_defaults.h -----------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// The BSDs have lots of *_l functions. We don't want to define those symbols +// on other platforms though, for fear of conflicts with user code. So here, +// we will define the mapping from an internal macro to the real BSD symbol. +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_BSD_LOCALE_DEFAULTS_H +#define _LIBCPP_BSD_LOCALE_DEFAULTS_H + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +#define __libcpp_mb_cur_max_l(loc) MB_CUR_MAX_L(loc) +#define __libcpp_btowc_l(ch, loc) btowc_l(ch, loc) +#define __libcpp_wctob_l(wch, loc) wctob_l(wch, loc) +#define __libcpp_wcsnrtombs_l(dst, src, nwc, len, ps, loc) wcsnrtombs_l(dst, src, nwc, len, ps, loc) +#define __libcpp_wcrtomb_l(src, wc, ps, loc) wcrtomb_l(src, wc, ps, loc) +#define __libcpp_mbsnrtowcs_l(dst, src, nms, len, ps, loc) mbsnrtowcs_l(dst, src, nms, len, ps, loc) +#define __libcpp_mbrtowc_l(pwc, s, n, ps, l) mbrtowc_l(pwc, s, n, ps, l) +#define __libcpp_mbtowc_l(pwc, pmb, max, l) mbtowc_l(pwc, pmb, max, l) +#define __libcpp_mbrlen_l(s, n, ps, l) mbrlen_l(s, n, ps, l) +#define __libcpp_localeconv_l(l) localeconv_l(l) +#define __libcpp_mbsrtowcs_l(dest, src, len, ps, l) mbsrtowcs_l(dest, src, len, ps, l) +#define __libcpp_snprintf_l(...) snprintf_l(__VA_ARGS__) +#define __libcpp_asprintf_l(...) asprintf_l(__VA_ARGS__) +#define __libcpp_sscanf_l(...) sscanf_l(__VA_ARGS__) + +#endif // _LIBCPP_BSD_LOCALE_DEFAULTS_H diff --git a/include/libc++/__bsd_locale_fallbacks.h b/include/libc++/__bsd_locale_fallbacks.h new file mode 100644 index 00000000..a807fe03 --- /dev/null +++ b/include/libc++/__bsd_locale_fallbacks.h @@ -0,0 +1,139 @@ +// -*- C++ -*- +//===---------------------- __bsd_locale_fallbacks.h ----------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// The BSDs have lots of *_l functions. This file provides reimplementations +// of those functions for non-BSD platforms. +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H +#define _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H + +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline _LIBCPP_INLINE_VISIBILITY +decltype(MB_CUR_MAX) __libcpp_mb_cur_max_l(locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return MB_CUR_MAX; +} + +inline _LIBCPP_INLINE_VISIBILITY +wint_t __libcpp_btowc_l(int __c, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return btowc(__c); +} + +inline _LIBCPP_INLINE_VISIBILITY +int __libcpp_wctob_l(wint_t __c, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return wctob(__c); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t __libcpp_wcsnrtombs_l(char *__dest, const wchar_t **__src, size_t __nwc, + size_t __len, mbstate_t *__ps, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return wcsnrtombs(__dest, __src, __nwc, __len, __ps); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t __libcpp_wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return wcrtomb(__s, __wc, __ps); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t __libcpp_mbsnrtowcs_l(wchar_t * __dest, const char **__src, size_t __nms, + size_t __len, mbstate_t *__ps, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return mbsnrtowcs(__dest, __src, __nms, __len, __ps); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t __libcpp_mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n, + mbstate_t *__ps, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return mbrtowc(__pwc, __s, __n, __ps); +} + +inline _LIBCPP_INLINE_VISIBILITY +int __libcpp_mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return mbtowc(__pwc, __pmb, __max); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t __libcpp_mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return mbrlen(__s, __n, __ps); +} + +inline _LIBCPP_INLINE_VISIBILITY +lconv *__libcpp_localeconv_l(locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return localeconv(); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t __libcpp_mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len, + mbstate_t *__ps, locale_t __l) +{ + __libcpp_locale_guard __current(__l); + return mbsrtowcs(__dest, __src, __len, __ps); +} + +inline +int __libcpp_snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) { + va_list __va; + va_start(__va, __format); + __libcpp_locale_guard __current(__l); + int __res = vsnprintf(__s, __n, __format, __va); + va_end(__va); + return __res; +} + +inline +int __libcpp_asprintf_l(char **__s, locale_t __l, const char *__format, ...) { + va_list __va; + va_start(__va, __format); + __libcpp_locale_guard __current(__l); + int __res = vasprintf(__s, __format, __va); + va_end(__va); + return __res; +} + +inline +int __libcpp_sscanf_l(const char *__s, locale_t __l, const char *__format, ...) { + va_list __va; + va_start(__va, __format); + __libcpp_locale_guard __current(__l); + int __res = vsscanf(__s, __format, __va); + va_end(__va); + return __res; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H diff --git a/include/libc++/__config b/include/libc++/__config new file mode 100644 index 00000000..044cd0ce --- /dev/null +++ b/include/libc++/__config @@ -0,0 +1,1483 @@ +// -*- C++ -*- +//===--------------------------- __config ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_CONFIG +#define _LIBCPP_CONFIG + +#if defined(_MSC_VER) && !defined(__clang__) +# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# endif +#endif + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +#pragma GCC system_header +#endif + +#ifdef __cplusplus + +#ifdef __GNUC__ +# define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) +// The _GNUC_VER_NEW macro better represents the new GCC versioning scheme +// introduced in GCC 5.0. +# define _GNUC_VER_NEW (_GNUC_VER * 10 + __GNUC_PATCHLEVEL__) +#else +# define _GNUC_VER 0 +# define _GNUC_VER_NEW 0 +#endif + +#define _LIBCPP_VERSION 10000 + +#ifndef _LIBCPP_ABI_VERSION +# define _LIBCPP_ABI_VERSION 1 +#endif + +#ifndef __STDC_HOSTED__ +# define _LIBCPP_FREESTANDING +#endif + +#ifndef _LIBCPP_STD_VER +# if __cplusplus <= 201103L +# define _LIBCPP_STD_VER 11 +# elif __cplusplus <= 201402L +# define _LIBCPP_STD_VER 14 +# elif __cplusplus <= 201703L +# define _LIBCPP_STD_VER 17 +# else +# define _LIBCPP_STD_VER 18 // current year, or date of c++2a ratification +# endif +#endif // _LIBCPP_STD_VER + +#if defined(__ELF__) +# define _LIBCPP_OBJECT_FORMAT_ELF 1 +#elif defined(__MACH__) +# define _LIBCPP_OBJECT_FORMAT_MACHO 1 +#elif defined(_WIN32) +# define _LIBCPP_OBJECT_FORMAT_COFF 1 +#elif defined(__wasm__) +# define _LIBCPP_OBJECT_FORMAT_WASM 1 +#else +# error Unknown object file format +#endif + +#if defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2 +// Change short string representation so that string data starts at offset 0, +// improving its alignment in some cases. +# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +// Fix deque iterator type in order to support incomplete types. +# define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE +// Fix undefined behavior in how std::list stores its linked nodes. +# define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB +// Fix undefined behavior in how __tree stores its end and parent nodes. +# define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB +// Fix undefined behavior in how __hash_table stores its pointer types. +# define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB +# define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB +# define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE +// Don't use a nullptr_t simulation type in C++03 instead using C++11 nullptr +// provided under the alternate keyword __nullptr, which changes the mangling +// of nullptr_t. This option is ABI incompatible with GCC in C++03 mode. +# define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR +// Define the `pointer_safety` enum as a C++11 strongly typed enumeration +// instead of as a class simulating an enum. If this option is enabled +// `pointer_safety` and `get_pointer_safety()` will no longer be available +// in C++03. +# define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE +// Define a key function for `bad_function_call` in the library, to centralize +// its vtable and typeinfo to libc++ rather than having all other libraries +// using that class define their own copies. +# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION +// Enable optimized version of __do_get_(un)signed which avoids redundant copies. +# define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET +// Use the smallest possible integer type to represent the index of the variant. +// Previously libc++ used "unsigned int" exclusively. +# define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION +// Unstable attempt to provide a more optimized std::function +# define _LIBCPP_ABI_OPTIMIZED_FUNCTION +// All the regex constants must be distinct and nonzero. +# define _LIBCPP_ABI_REGEX_CONSTANTS_NONZERO +#elif _LIBCPP_ABI_VERSION == 1 +# if !defined(_LIBCPP_OBJECT_FORMAT_COFF) +// Enable compiling copies of now inline methods into the dylib to support +// applications compiled against older libraries. This is unnecessary with +// COFF dllexport semantics, since dllexport forces a non-inline definition +// of inline functions to be emitted anyway. Our own non-inline copy would +// conflict with the dllexport-emitted copy, so we disable it. +# define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS +# endif +// Feature macros for disabling pre ABI v1 features. All of these options +// are deprecated. +# if defined(__FreeBSD__) +# define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR +# endif +#endif + +#ifdef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR +#error "_LIBCPP_TRIVIAL_PAIR_COPY_CTOR" is no longer supported. \ + use _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR instead +#endif + +#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y +#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) + +#ifndef _LIBCPP_ABI_NAMESPACE +# define _LIBCPP_ABI_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) +#endif + +#if __cplusplus < 201103L +#define _LIBCPP_CXX03_LANG +#endif + +#ifndef __has_attribute +#define __has_attribute(__x) 0 +#endif + +#ifndef __has_builtin +#define __has_builtin(__x) 0 +#endif + +#ifndef __has_extension +#define __has_extension(__x) 0 +#endif + +#ifndef __has_feature +#define __has_feature(__x) 0 +#endif + +#ifndef __has_cpp_attribute +#define __has_cpp_attribute(__x) 0 +#endif + +// '__is_identifier' returns '0' if '__x' is a reserved identifier provided by +// the compiler and '1' otherwise. +#ifndef __is_identifier +#define __is_identifier(__x) 1 +#endif + +#ifndef __has_declspec_attribute +#define __has_declspec_attribute(__x) 0 +#endif + +#define __has_keyword(__x) !(__is_identifier(__x)) + +#ifndef __has_include +#define __has_include(...) 0 +#endif + +#if defined(__clang__) +# define _LIBCPP_COMPILER_CLANG +# ifndef __apple_build_version__ +# define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) +# endif +#elif defined(__GNUC__) +# define _LIBCPP_COMPILER_GCC +#elif defined(_MSC_VER) +# define _LIBCPP_COMPILER_MSVC +#elif defined(__IBMCPP__) +# define _LIBCPP_COMPILER_IBM +#endif + +#if defined(_LIBCPP_COMPILER_GCC) && __cplusplus < 201103L +#error "libc++ does not support using GCC with C++03. Please enable C++11" +#endif + +// FIXME: ABI detection should be done via compiler builtin macros. This +// is just a placeholder until Clang implements such macros. For now assume +// that Windows compilers pretending to be MSVC++ target the Microsoft ABI, +// and allow the user to explicitly specify the ABI to handle cases where this +// heuristic falls short. +#if defined(_LIBCPP_ABI_FORCE_ITANIUM) && defined(_LIBCPP_ABI_FORCE_MICROSOFT) +# error "Only one of _LIBCPP_ABI_FORCE_ITANIUM and _LIBCPP_ABI_FORCE_MICROSOFT can be defined" +#elif defined(_LIBCPP_ABI_FORCE_ITANIUM) +# define _LIBCPP_ABI_ITANIUM +#elif defined(_LIBCPP_ABI_FORCE_MICROSOFT) +# define _LIBCPP_ABI_MICROSOFT +#else +# if defined(_WIN32) && defined(_MSC_VER) +# define _LIBCPP_ABI_MICROSOFT +# else +# define _LIBCPP_ABI_ITANIUM +# endif +#endif + +#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME) +# define _LIBCPP_ABI_VCRUNTIME +#endif + +// Need to detect which libc we're using if we're on Linux. +#if defined(__linux__) +# include +# if defined(__GLIBC_PREREQ) +# define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b) +# else +# define _LIBCPP_GLIBC_PREREQ(a, b) 0 +# endif // defined(__GLIBC_PREREQ) +#endif // defined(__linux__) + +#ifdef __LITTLE_ENDIAN__ +# if __LITTLE_ENDIAN__ +# define _LIBCPP_LITTLE_ENDIAN +# endif // __LITTLE_ENDIAN__ +#endif // __LITTLE_ENDIAN__ + +#ifdef __BIG_ENDIAN__ +# if __BIG_ENDIAN__ +# define _LIBCPP_BIG_ENDIAN +# endif // __BIG_ENDIAN__ +#endif // __BIG_ENDIAN__ + +#ifdef __BYTE_ORDER__ +# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define _LIBCPP_LITTLE_ENDIAN +# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define _LIBCPP_BIG_ENDIAN +# endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#endif // __BYTE_ORDER__ + +#ifdef __FreeBSD__ +# include +# include +# if _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# else // _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_BIG_ENDIAN +# endif // _BYTE_ORDER == _LITTLE_ENDIAN +# ifndef __LONG_LONG_SUPPORTED +# define _LIBCPP_HAS_NO_LONG_LONG +# endif // __LONG_LONG_SUPPORTED +#endif // __FreeBSD__ + +#ifdef __NetBSD__ +# include +# if _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# else // _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_BIG_ENDIAN +# endif // _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_HAS_QUICK_EXIT +#endif // __NetBSD__ + +#if defined(_WIN32) +# define _LIBCPP_WIN32API +# define _LIBCPP_LITTLE_ENDIAN +# define _LIBCPP_SHORT_WCHAR 1 +// Both MinGW and native MSVC provide a "MSVC"-like environment +# define _LIBCPP_MSVCRT_LIKE +// If mingw not explicitly detected, assume using MS C runtime only if +// a MS compatibility version is specified. +# if defined(_MSC_VER) && !defined(__MINGW32__) +# define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library +# endif +# if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__)) +# define _LIBCPP_HAS_BITSCAN64 +# endif +# define _LIBCPP_HAS_OPEN_WITH_WCHAR +# if defined(_LIBCPP_MSVCRT) +# define _LIBCPP_HAS_QUICK_EXIT +# endif + +// Some CRT APIs are unavailable to store apps +# if defined(WINAPI_FAMILY) +# include +# if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + (!defined(WINAPI_PARTITION_SYSTEM) || \ + !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_SYSTEM)) +# define _LIBCPP_WINDOWS_STORE_APP +# endif +# endif +#endif // defined(_WIN32) + +#ifdef __sun__ +# include +# ifdef _LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# else +# define _LIBCPP_BIG_ENDIAN +# endif +#endif // __sun__ + +#if defined(__CloudABI__) + // Certain architectures provide arc4random(). Prefer using + // arc4random() over /dev/{u,}random to make it possible to obtain + // random data even when using sandboxing mechanisms such as chroots, + // Capsicum, etc. +# define _LIBCPP_USING_ARC4_RANDOM +#elif defined(__Fuchsia__) || defined(__wasi__) +# define _LIBCPP_USING_GETENTROPY +#elif defined(__native_client__) + // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, + // including accesses to the special files under /dev. C++11's + // std::random_device is instead exposed through a NaCl syscall. +# define _LIBCPP_USING_NACL_RANDOM +#elif defined(_LIBCPP_WIN32API) +# define _LIBCPP_USING_WIN32_RANDOM +#else +# define _LIBCPP_USING_DEV_RANDOM +#endif + +#if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) +# include +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# elif __BYTE_ORDER == __BIG_ENDIAN +# define _LIBCPP_BIG_ENDIAN +# else // __BYTE_ORDER == __BIG_ENDIAN +# error unable to determine endian +# endif +#endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) + +#if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) +#else +# define _LIBCPP_NO_CFI +#endif + +#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L +# if defined(__FreeBSD__) +# define _LIBCPP_HAS_QUICK_EXIT +# define _LIBCPP_HAS_C11_FEATURES +# elif defined(__Fuchsia__) || defined(__wasi__) +# define _LIBCPP_HAS_QUICK_EXIT +# define _LIBCPP_HAS_TIMESPEC_GET +# define _LIBCPP_HAS_C11_FEATURES +# elif defined(__linux__) +# if !defined(_LIBCPP_HAS_MUSL_LIBC) +# if _LIBCPP_GLIBC_PREREQ(2, 15) || defined(__BIONIC__) +# define _LIBCPP_HAS_QUICK_EXIT +# endif +# if _LIBCPP_GLIBC_PREREQ(2, 17) +# define _LIBCPP_HAS_C11_FEATURES +# define _LIBCPP_HAS_TIMESPEC_GET +# endif +# else // defined(_LIBCPP_HAS_MUSL_LIBC) +# define _LIBCPP_HAS_QUICK_EXIT +# define _LIBCPP_HAS_TIMESPEC_GET +# define _LIBCPP_HAS_C11_FEATURES +# endif +# endif // __linux__ +#endif + +#ifndef _LIBCPP_CXX03_LANG +# define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp) +#elif defined(_LIBCPP_COMPILER_CLANG) +# define _LIBCPP_ALIGNOF(_Tp) _Alignof(_Tp) +#else +// This definition is potentially buggy, but it's only taken with GCC in C++03, +// which we barely support anyway. See llvm.org/PR39713 +# define _LIBCPP_ALIGNOF(_Tp) __alignof(_Tp) +#endif + +#define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp) + +#if defined(_LIBCPP_COMPILER_CLANG) + +// _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for +// _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility. +#if (defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && \ + (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)) || \ + defined(_LIBCPP_ALTERNATE_STRING_LAYOUT) +#define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +#endif + +#if __has_feature(cxx_alignas) +# define _ALIGNAS_TYPE(x) alignas(x) +# define _ALIGNAS(x) alignas(x) +#else +# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) +# define _ALIGNAS(x) __attribute__((__aligned__(x))) +#endif + +#if __cplusplus < 201103L +typedef __char16_t char16_t; +typedef __char32_t char32_t; +#endif + +#if !(__has_feature(cxx_exceptions)) && !defined(_LIBCPP_NO_EXCEPTIONS) +#define _LIBCPP_NO_EXCEPTIONS +#endif + +#if !(__has_feature(cxx_rtti)) && !defined(_LIBCPP_NO_RTTI) +#define _LIBCPP_NO_RTTI +#endif + +#if !(__has_feature(cxx_strong_enums)) +#define _LIBCPP_HAS_NO_STRONG_ENUMS +#endif + +#if __has_feature(cxx_attributes) +# define _LIBCPP_NORETURN [[noreturn]] +#else +# define _LIBCPP_NORETURN __attribute__ ((noreturn)) +#endif + +#if !(__has_feature(cxx_lambdas)) +#define _LIBCPP_HAS_NO_LAMBDAS +#endif + +#if !(__has_feature(cxx_nullptr)) +# if (__has_extension(cxx_nullptr) || __has_keyword(__nullptr)) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR) +# define nullptr __nullptr +# else +# define _LIBCPP_HAS_NO_NULLPTR +# endif +#endif + +#if !(__has_feature(cxx_rvalue_references)) +#define _LIBCPP_HAS_NO_RVALUE_REFERENCES +#endif + +#if !(__has_feature(cxx_auto_type)) +#define _LIBCPP_HAS_NO_AUTO_TYPE +#endif + +#if !(__has_feature(cxx_variadic_templates)) +#define _LIBCPP_HAS_NO_VARIADICS +#endif + +// Objective-C++ features (opt-in) +#if __has_feature(objc_arc) +#define _LIBCPP_HAS_OBJC_ARC +#endif + +#if __has_feature(objc_arc_weak) +#define _LIBCPP_HAS_OBJC_ARC_WEAK +#endif + +#if !(__has_feature(cxx_relaxed_constexpr)) +#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR +#endif + +#if !(__has_feature(cxx_variable_templates)) +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES +#endif + +#if !(__has_feature(cxx_noexcept)) +#define _LIBCPP_HAS_NO_NOEXCEPT +#endif + +#if !defined(_LIBCPP_HAS_NO_ASAN) && !__has_feature(address_sanitizer) +#define _LIBCPP_HAS_NO_ASAN +#endif + +// Allow for build-time disabling of unsigned integer sanitization +#if !defined(_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK) && __has_attribute(no_sanitize) +#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) +#endif + +#if __has_builtin(__builtin_launder) +#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER +#endif + +#if !__is_identifier(__has_unique_object_representations) +#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS +#endif + +#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) + +// Literal operators ""d and ""y are supported starting with LLVM Clang 8 and AppleClang 10.0.1 +#if (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 800) || \ + (defined(__apple_build_version__) && __apple_build_version__ < 10010000) +#define _LIBCPP_HAS_NO_CXX20_CHRONO_LITERALS +#endif + +#define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ + +#elif defined(_LIBCPP_COMPILER_GCC) + +#define _ALIGNAS(x) __attribute__((__aligned__(x))) +#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) + +#define _LIBCPP_NORETURN __attribute__((noreturn)) + +#if !__EXCEPTIONS && !defined(_LIBCPP_NO_EXCEPTIONS) +#define _LIBCPP_NO_EXCEPTIONS +#endif + +// Determine if GCC supports relaxed constexpr +#if !defined(__cpp_constexpr) || __cpp_constexpr < 201304L +#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR +#endif + +// GCC 5 supports variable templates +#if !defined(__cpp_variable_templates) || __cpp_variable_templates < 201304L +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES +#endif + +#if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__) +#define _LIBCPP_HAS_NO_ASAN +#endif + +#if _GNUC_VER >= 700 +#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER +#endif + +#if _GNUC_VER >= 700 +#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS +#endif + +#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) + +#define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ + +#elif defined(_LIBCPP_COMPILER_MSVC) + +#define _LIBCPP_TOSTRING2(x) #x +#define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) +#define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x)) + +#if _MSC_VER < 1900 +#error "MSVC versions prior to Visual Studio 2015 are not supported" +#endif + +#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES +#define __alignof__ __alignof +#define _LIBCPP_NORETURN __declspec(noreturn) +#define _ALIGNAS(x) __declspec(align(x)) +#define _ALIGNAS_TYPE(x) alignas(x) + +#define _LIBCPP_WEAK + +#define _LIBCPP_HAS_NO_ASAN + +#define _LIBCPP_ALWAYS_INLINE __forceinline + +#define _LIBCPP_HAS_NO_VECTOR_EXTENSION + +#define _LIBCPP_DISABLE_EXTENSION_WARNING + +#elif defined(_LIBCPP_COMPILER_IBM) + +#define _ALIGNAS(x) __attribute__((__aligned__(x))) +#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) +#define _ATTRIBUTE(x) __attribute__((x)) +#define _LIBCPP_NORETURN __attribute__((noreturn)) + +#define _LIBCPP_HAS_NO_UNICODE_CHARS +#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES + +#if defined(_AIX) +#define __MULTILOCALE_API +#endif + +#define _LIBCPP_HAS_NO_ASAN + +#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) + +#define _LIBCPP_HAS_NO_VECTOR_EXTENSION + +#define _LIBCPP_DISABLE_EXTENSION_WARNING + +#endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM] + +#if defined(_LIBCPP_OBJECT_FORMAT_COFF) + +#ifdef _DLL +# define _LIBCPP_CRT_FUNC __declspec(dllimport) +#else +# define _LIBCPP_CRT_FUNC +#endif + +#if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_DLL_VIS +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +# define _LIBCPP_OVERRIDABLE_FUNC_VIS +# define _LIBCPP_EXPORTED_FROM_ABI +#elif defined(_LIBCPP_BUILDING_LIBRARY) +# define _LIBCPP_DLL_VIS __declspec(dllexport) +# if defined(__MINGW32__) +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +# else +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS +# endif +# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport) +#else +# define _LIBCPP_DLL_VIS __declspec(dllimport) +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +# define _LIBCPP_OVERRIDABLE_FUNC_VIS +# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport) +#endif + +#define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS +#define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS +#define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS +#define _LIBCPP_HIDDEN +#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS +#define _LIBCPP_TEMPLATE_VIS +#define _LIBCPP_ENUM_VIS + +#endif // defined(_LIBCPP_OBJECT_FORMAT_COFF) + +#ifndef _LIBCPP_HIDDEN +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) +# else +# define _LIBCPP_HIDDEN +# endif +#endif + +#ifndef _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +// The inline should be removed once PR32114 is resolved +# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN +# else +# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS +# endif +#endif + +#ifndef _LIBCPP_FUNC_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default"))) +# else +# define _LIBCPP_FUNC_VIS +# endif +#endif + +#ifndef _LIBCPP_TYPE_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default"))) +# else +# define _LIBCPP_TYPE_VIS +# endif +#endif + +#ifndef _LIBCPP_TEMPLATE_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# if __has_attribute(__type_visibility__) +# define _LIBCPP_TEMPLATE_VIS __attribute__ ((__type_visibility__("default"))) +# else +# define _LIBCPP_TEMPLATE_VIS __attribute__ ((__visibility__("default"))) +# endif +# else +# define _LIBCPP_TEMPLATE_VIS +# endif +#endif + +#ifndef _LIBCPP_EXPORTED_FROM_ABI +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_EXPORTED_FROM_ABI __attribute__((__visibility__("default"))) +# else +# define _LIBCPP_EXPORTED_FROM_ABI +# endif +#endif + +#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS +#define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_FUNC_VIS +#endif + +#ifndef _LIBCPP_EXCEPTION_ABI +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) +# else +# define _LIBCPP_EXCEPTION_ABI +# endif +#endif + +#ifndef _LIBCPP_ENUM_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) +# define _LIBCPP_ENUM_VIS __attribute__ ((__type_visibility__("default"))) +# else +# define _LIBCPP_ENUM_VIS +# endif +#endif + +#ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__visibility__("default"))) +# else +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS +# endif +#endif + +#ifndef _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +#endif + +#if __has_attribute(internal_linkage) +# define _LIBCPP_INTERNAL_LINKAGE __attribute__ ((internal_linkage)) +#else +# define _LIBCPP_INTERNAL_LINKAGE _LIBCPP_ALWAYS_INLINE +#endif + +#if __has_attribute(exclude_from_explicit_instantiation) +# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION __attribute__ ((__exclude_from_explicit_instantiation__)) +#else + // Try to approximate the effect of exclude_from_explicit_instantiation + // (which is that entities are not assumed to be provided by explicit + // template instantiations in the dylib) by always inlining those entities. +# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION _LIBCPP_ALWAYS_INLINE +#endif + +#ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU +# ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT +# define _LIBCPP_HIDE_FROM_ABI_PER_TU 0 +# else +# define _LIBCPP_HIDE_FROM_ABI_PER_TU 1 +# endif +#endif + +#ifndef _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT +# ifdef _LIBCPP_OBJECT_FORMAT_COFF // Windows binaries can't merge typeinfos. +# define _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT 0 +#else +// TODO: This isn't strictly correct on ELF platforms due to llvm.org/PR37398 +// And we should consider defaulting to OFF. +# define _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT 1 +#endif +#endif + +#ifndef _LIBCPP_HIDE_FROM_ABI +# if _LIBCPP_HIDE_FROM_ABI_PER_TU +# define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_INTERNAL_LINKAGE +# else +# define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION +# endif +#endif + +#ifdef _LIBCPP_BUILDING_LIBRARY +# if _LIBCPP_ABI_VERSION > 1 +# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI +# else +# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 +# endif +#else +# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI +#endif + +// Just so we can migrate to the new macros gradually. +#define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI + +// Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect. +#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE { +#define _LIBCPP_END_NAMESPACE_STD } } +#define _VSTD std::_LIBCPP_ABI_NAMESPACE +_LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 +#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ + _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem { +#else +#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ + _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem { +#endif + +#define _LIBCPP_END_NAMESPACE_FILESYSTEM \ + _LIBCPP_END_NAMESPACE_STD } } + +#define _VSTD_FS _VSTD::__fs::filesystem + +#ifndef _LIBCPP_PREFERRED_OVERLOAD +# if __has_attribute(__enable_if__) +# define _LIBCPP_PREFERRED_OVERLOAD __attribute__ ((__enable_if__(true, ""))) +# endif +#endif + +#ifndef _LIBCPP_HAS_NO_NOEXCEPT +# define _NOEXCEPT noexcept +# define _NOEXCEPT_(x) noexcept(x) +#else +# define _NOEXCEPT throw() +# define _NOEXCEPT_(x) +#endif + +#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS +typedef unsigned short char16_t; +typedef unsigned int char32_t; +#endif // _LIBCPP_HAS_NO_UNICODE_CHARS + +#ifndef __SIZEOF_INT128__ +#define _LIBCPP_HAS_NO_INT128 +#endif + +#ifdef _LIBCPP_CXX03_LANG +# define static_assert(...) _Static_assert(__VA_ARGS__) +# define decltype(...) __decltype(__VA_ARGS__) +#endif // _LIBCPP_CXX03_LANG + +#ifdef _LIBCPP_CXX03_LANG +# define _LIBCPP_CONSTEXPR +#else +# define _LIBCPP_CONSTEXPR constexpr +#endif + +#ifdef _LIBCPP_CXX03_LANG +# define _LIBCPP_DEFAULT {} +#else +# define _LIBCPP_DEFAULT = default; +#endif + +#ifdef _LIBCPP_CXX03_LANG +# define _LIBCPP_EQUAL_DELETE +#else +# define _LIBCPP_EQUAL_DELETE = delete +#endif + +#ifdef __GNUC__ +# define _LIBCPP_NOALIAS __attribute__((__malloc__)) +#else +# define _LIBCPP_NOALIAS +#endif + +#if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__) || \ + (!defined(_LIBCPP_CXX03_LANG) && defined(__GNUC__)) // All supported GCC versions +# define _LIBCPP_EXPLICIT explicit +#else +# define _LIBCPP_EXPLICIT +#endif + +#if !__has_builtin(__builtin_operator_new) || !__has_builtin(__builtin_operator_delete) +#define _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE +#endif + +#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS +# define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_TYPE_VIS x { enum __lx +# define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ + __lx __v_; \ + _LIBCPP_INLINE_VISIBILITY x(__lx __v) : __v_(__v) {} \ + _LIBCPP_INLINE_VISIBILITY explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ + _LIBCPP_INLINE_VISIBILITY operator int() const {return __v_;} \ + }; +#else // _LIBCPP_HAS_NO_STRONG_ENUMS +# define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x +# define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) +#endif // _LIBCPP_HAS_NO_STRONG_ENUMS + +#ifdef _LIBCPP_DEBUG +# if _LIBCPP_DEBUG == 0 +# define _LIBCPP_DEBUG_LEVEL 1 +# elif _LIBCPP_DEBUG == 1 +# define _LIBCPP_DEBUG_LEVEL 2 +# else +# error Supported values for _LIBCPP_DEBUG are 0 and 1 +# endif +# if !defined(_LIBCPP_BUILDING_LIBRARY) +# define _LIBCPP_EXTERN_TEMPLATE(...) +# endif +#endif + +#ifdef _LIBCPP_DISABLE_EXTERN_TEMPLATE +#define _LIBCPP_EXTERN_TEMPLATE(...) +#define _LIBCPP_EXTERN_TEMPLATE2(...) +#endif + +#ifndef _LIBCPP_EXTERN_TEMPLATE +#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__; +#endif + +#ifndef _LIBCPP_EXTERN_TEMPLATE2 +#define _LIBCPP_EXTERN_TEMPLATE2(...) extern template __VA_ARGS__; +#endif + +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || \ + defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__) +#define _LIBCPP_LOCALE__L_EXTENSIONS 1 +#endif + +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +// Most unix variants have catopen. These are the specific ones that don't. +# if !defined(__BIONIC__) && !defined(_NEWLIB_VERSION) +# define _LIBCPP_HAS_CATOPEN 1 +# endif +#endif + +#ifdef __FreeBSD__ +#define _DECLARE_C99_LDBL_MATH 1 +#endif + +// If we are getting operator new from the MSVC CRT, then allocation overloads +// for align_val_t were added in 19.12, aka VS 2017 version 15.3. +#if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912 +# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION +#elif defined(_LIBCPP_ABI_VCRUNTIME) && !defined(__cpp_aligned_new) + // We're deferring to Microsoft's STL to provide aligned new et al. We don't + // have it unless the language feature test macro is defined. +# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION +#endif + +#if defined(__APPLE__) +# if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \ + defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) +# define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ +# endif +#endif // defined(__APPLE__) + +#if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) && \ + (defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) || \ + (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606)) +# define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION +#endif + +#if defined(__APPLE__) || defined(__FreeBSD__) +#define _LIBCPP_HAS_DEFAULTRUNELOCALE +#endif + +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__) +#define _LIBCPP_WCTYPE_IS_MASK +#endif + +#if _LIBCPP_STD_VER <= 17 || !defined(__cpp_char8_t) +#define _LIBCPP_NO_HAS_CHAR8_T +#endif + +// Deprecation macros. +// +// Deprecations warnings are always enabled, except when users explicitly opt-out +// by defining _LIBCPP_DISABLE_DEPRECATION_WARNINGS. +#if !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) +# if __has_attribute(deprecated) +# define _LIBCPP_DEPRECATED __attribute__ ((deprecated)) +# elif _LIBCPP_STD_VER > 11 +# define _LIBCPP_DEPRECATED [[deprecated]] +# else +# define _LIBCPP_DEPRECATED +# endif +#else +# define _LIBCPP_DEPRECATED +#endif + +#if !defined(_LIBCPP_CXX03_LANG) +# define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED +#else +# define _LIBCPP_DEPRECATED_IN_CXX11 +#endif + +#if _LIBCPP_STD_VER >= 14 +# define _LIBCPP_DEPRECATED_IN_CXX14 _LIBCPP_DEPRECATED +#else +# define _LIBCPP_DEPRECATED_IN_CXX14 +#endif + +#if _LIBCPP_STD_VER >= 17 +# define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED +#else +# define _LIBCPP_DEPRECATED_IN_CXX17 +#endif + +// Macros to enter and leave a state where deprecation warnings are suppressed. +#if !defined(_LIBCPP_SUPPRESS_DEPRECATED_PUSH) && \ + (defined(_LIBCPP_COMPILER_CLANG) || defined(_LIBCPP_COMPILER_GCC)) +# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated\"") +# define _LIBCPP_SUPPRESS_DEPRECATED_POP \ + _Pragma("GCC diagnostic pop") +#endif +#if !defined(_LIBCPP_SUPPRESS_DEPRECATED_PUSH) +# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH +# define _LIBCPP_SUPPRESS_DEPRECATED_POP +#endif + +#if _LIBCPP_STD_VER <= 11 +# define _LIBCPP_EXPLICIT_AFTER_CXX11 +#else +# define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit +#endif + +#if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) +# define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr +#else +# define _LIBCPP_CONSTEXPR_AFTER_CXX11 +#endif + +#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) +# define _LIBCPP_CONSTEXPR_AFTER_CXX14 constexpr +#else +# define _LIBCPP_CONSTEXPR_AFTER_CXX14 +#endif + +#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) +# define _LIBCPP_CONSTEXPR_AFTER_CXX17 constexpr +#else +# define _LIBCPP_CONSTEXPR_AFTER_CXX17 +#endif + +// The _LIBCPP_NODISCARD_ATTRIBUTE should only be used to define other +// NODISCARD macros to the correct attribute. +#if __has_cpp_attribute(nodiscard) || defined(_LIBCPP_COMPILER_MSVC) +# define _LIBCPP_NODISCARD_ATTRIBUTE [[nodiscard]] +#elif defined(_LIBCPP_COMPILER_CLANG) && !defined(_LIBCPP_CXX03_LANG) +# define _LIBCPP_NODISCARD_ATTRIBUTE [[clang::warn_unused_result]] +#else +// We can't use GCC's [[gnu::warn_unused_result]] and +// __attribute__((warn_unused_result)), because GCC does not silence them via +// (void) cast. +# define _LIBCPP_NODISCARD_ATTRIBUTE +#endif + +// _LIBCPP_NODISCARD_EXT may be used to apply [[nodiscard]] to entities not +// specified as such as an extension. +#if defined(_LIBCPP_ENABLE_NODISCARD) && !defined(_LIBCPP_DISABLE_NODISCARD_EXT) +# define _LIBCPP_NODISCARD_EXT _LIBCPP_NODISCARD_ATTRIBUTE +#else +# define _LIBCPP_NODISCARD_EXT +#endif + +#if !defined(_LIBCPP_DISABLE_NODISCARD_AFTER_CXX17) && \ + (_LIBCPP_STD_VER > 17 || defined(_LIBCPP_ENABLE_NODISCARD)) +# define _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_NODISCARD_ATTRIBUTE +#else +# define _LIBCPP_NODISCARD_AFTER_CXX17 +#endif + +#if _LIBCPP_STD_VER > 14 && defined(__cpp_inline_variables) && (__cpp_inline_variables >= 201606L) +# define _LIBCPP_INLINE_VAR inline +#else +# define _LIBCPP_INLINE_VAR +#endif + +#ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES +# define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x) +#else +# define _LIBCPP_EXPLICIT_MOVE(x) (x) +#endif + +#ifndef _LIBCPP_CONSTEXPR_IF_NODEBUG +#if defined(_LIBCPP_DEBUG) || defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) +#define _LIBCPP_CONSTEXPR_IF_NODEBUG +#else +#define _LIBCPP_CONSTEXPR_IF_NODEBUG constexpr +#endif +#endif + +#if __has_attribute(no_destroy) +# define _LIBCPP_NO_DESTROY __attribute__((__no_destroy__)) +#else +# define _LIBCPP_NO_DESTROY +#endif + +#ifndef _LIBCPP_HAS_NO_ASAN +_LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( + const void *, const void *, const void *, const void *); +#endif + +// Try to find out if RTTI is disabled. +// g++ and cl.exe have RTTI on by default and define a macro when it is. +// g++ only defines the macro in 4.3.2 and onwards. +#if !defined(_LIBCPP_NO_RTTI) +# if defined(__GNUC__) && \ + ((__GNUC__ >= 5) || \ + (__GNUC__ == 4 && (__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && \ + !defined(__GXX_RTTI) +# define _LIBCPP_NO_RTTI +# elif defined(_LIBCPP_COMPILER_MSVC) && !defined(_CPPRTTI) +# define _LIBCPP_NO_RTTI +# endif +#endif + +#ifndef _LIBCPP_WEAK +#define _LIBCPP_WEAK __attribute__((__weak__)) +#endif + +// Thread API +#if !defined(_LIBCPP_HAS_NO_THREADS) && \ + !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \ + !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \ + !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +# if defined(__FreeBSD__) || \ + defined(__Fuchsia__) || \ + defined(__wasi__) || \ + defined(__NetBSD__) || \ + defined(__linux__) || \ + defined(__GNU__) || \ + defined(__APPLE__) || \ + defined(__CloudABI__) || \ + defined(__sun__) || \ + (defined(__MINGW32__) && __has_include()) +# define _LIBCPP_HAS_THREAD_API_PTHREAD +# elif defined(_LIBCPP_WIN32API) +# define _LIBCPP_HAS_THREAD_API_WIN32 +# else +# error "No thread API" +# endif // _LIBCPP_HAS_THREAD_API +#endif // _LIBCPP_HAS_NO_THREADS + +#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +#if defined(__ANDROID__) && __ANDROID_API__ >= 30 +#define _LIBCPP_HAS_COND_CLOCKWAIT +#elif defined(_LIBCPP_GLIBC_PREREQ) +#if _LIBCPP_GLIBC_PREREQ(2, 30) +#define _LIBCPP_HAS_COND_CLOCKWAIT +#endif +#endif +#endif + +#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +#error _LIBCPP_HAS_THREAD_API_PTHREAD may only be defined when \ + _LIBCPP_HAS_NO_THREADS is not defined. +#endif + +#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +#error _LIBCPP_HAS_THREAD_API_EXTERNAL may not be defined when \ + _LIBCPP_HAS_NO_THREADS is defined. +#endif + +#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS) +#error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \ + _LIBCPP_HAS_NO_THREADS is defined. +#endif + +#if defined(__STDCPP_THREADS__) && defined(_LIBCPP_HAS_NO_THREADS) +#error _LIBCPP_HAS_NO_THREADS cannot be set when __STDCPP_THREADS__ is set. +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(__STDCPP_THREADS__) +#define __STDCPP_THREADS__ 1 +#endif + +// The glibc and Bionic implementation of pthreads implements +// pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32 +// mutexes have no destroy mechanism. +// +// This optimization can't be performed on Apple platforms, where +// pthread_mutex_destroy can allow the kernel to release resources. +// See https://llvm.org/D64298 for details. +// +// TODO(EricWF): Enable this optimization on Bionic after speaking to their +// respective stakeholders. +#if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && defined(__GLIBC__)) \ + || defined(_LIBCPP_HAS_THREAD_API_WIN32) +# define _LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION +#endif + +// Destroying a condvar is a nop on Windows. +// +// This optimization can't be performed on Apple platforms, where +// pthread_cond_destroy can allow the kernel to release resources. +// See https://llvm.org/D64298 for details. +// +// TODO(EricWF): This is potentially true for some pthread implementations +// as well. +#if defined(_LIBCPP_HAS_THREAD_API_WIN32) +# define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION +#endif + +// Systems that use capability-based security (FreeBSD with Capsicum, +// Nuxi CloudABI) may only provide local filesystem access (using *at()). +// Functions like open(), rename(), unlink() and stat() should not be +// used, as they attempt to access the global filesystem namespace. +#ifdef __CloudABI__ +#define _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE +#endif + +// CloudABI is intended for running networked services. Processes do not +// have standard input and output channels. +#ifdef __CloudABI__ +#define _LIBCPP_HAS_NO_STDIN +#define _LIBCPP_HAS_NO_STDOUT +#endif + +// Some systems do not provide gets() in their C library, for security reasons. +#ifndef _LIBCPP_C_HAS_NO_GETS +# if defined(_LIBCPP_MSVCRT) || \ + (defined(__FreeBSD_version) && __FreeBSD_version >= 1300043) +# define _LIBCPP_C_HAS_NO_GETS +# endif +#endif + +#if defined(__BIONIC__) || defined(__CloudABI__) || \ + defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC) +#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE +#endif + +// Thread-unsafe functions such as strtok() and localtime() +// are not available. +#ifdef __CloudABI__ +#define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS +#endif + +#if __has_feature(cxx_atomic) || __has_extension(c_atomic) || __has_keyword(_Atomic) +# define _LIBCPP_HAS_C_ATOMIC_IMP +#elif defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_HAS_GCC_ATOMIC_IMP +#endif + +#if (!defined(_LIBCPP_HAS_C_ATOMIC_IMP) && \ + !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) && \ + !defined(_LIBCPP_HAS_EXTERNAL_ATOMIC_IMP)) \ + || defined(_LIBCPP_HAS_NO_THREADS) +# define _LIBCPP_HAS_NO_ATOMIC_HEADER +#else +# ifndef _LIBCPP_ATOMIC_FLAG_TYPE +# define _LIBCPP_ATOMIC_FLAG_TYPE bool +# endif +# ifdef _LIBCPP_FREESTANDING +# define _LIBCPP_ATOMIC_ONLY_USE_BUILTINS +# endif +#endif + +#ifndef _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +#endif + +#if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) +# if defined(__clang__) && __has_attribute(acquire_capability) +// Work around the attribute handling in clang. When both __declspec and +// __attribute__ are present, the processing goes awry preventing the definition +// of the types. +# if !defined(_LIBCPP_OBJECT_FORMAT_COFF) +# define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS +# endif +# endif +#endif + +#if __has_attribute(require_constant_initialization) +# define _LIBCPP_SAFE_STATIC __attribute__((__require_constant_initialization__)) +#else +# define _LIBCPP_SAFE_STATIC +#endif + +#if !__has_builtin(__builtin_addressof) && _GNUC_VER < 700 +#define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF +#endif + +#if !__has_builtin(__builtin_is_constant_evaluated) && _GNUC_VER < 900 +#define _LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED +#endif + +#if !defined(_LIBCPP_HAS_NO_OFF_T_FUNCTIONS) +# if defined(_LIBCPP_MSVCRT) || defined(_NEWLIB_VERSION) +# define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS +# endif +#endif + +#if __has_attribute(diagnose_if) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS) +# define _LIBCPP_DIAGNOSE_WARNING(...) \ + __attribute__((diagnose_if(__VA_ARGS__, "warning"))) +# define _LIBCPP_DIAGNOSE_ERROR(...) \ + __attribute__((diagnose_if(__VA_ARGS__, "error"))) +#else +# define _LIBCPP_DIAGNOSE_WARNING(...) +# define _LIBCPP_DIAGNOSE_ERROR(...) +#endif + +// Use a function like macro to imply that it must be followed by a semicolon +#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough) +# define _LIBCPP_FALLTHROUGH() [[fallthrough]] +#elif __has_cpp_attribute(clang::fallthrough) +# define _LIBCPP_FALLTHROUGH() [[clang::fallthrough]] +#elif __has_attribute(fallthough) || _GNUC_VER >= 700 +# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__)) +#else +# define _LIBCPP_FALLTHROUGH() ((void)0) +#endif + +#if __has_attribute(__nodebug__) +#define _LIBCPP_NODEBUG __attribute__((__nodebug__)) +#else +#define _LIBCPP_NODEBUG +#endif + +#ifndef _LIBCPP_NODEBUG_TYPE +#if __has_attribute(__nodebug__) && \ + (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER >= 900) +#define _LIBCPP_NODEBUG_TYPE __attribute__((nodebug)) +#else +#define _LIBCPP_NODEBUG_TYPE +#endif +#endif // !defined(_LIBCPP_NODEBUG_TYPE) + +#if defined(_LIBCPP_ABI_MICROSOFT) && \ + (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases)) +# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) +#else +# define _LIBCPP_DECLSPEC_EMPTY_BASES +#endif + +#if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES) +#define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR +#define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS +#define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE +#define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS +#endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES + +#if !defined(__cpp_deduction_guides) || __cpp_deduction_guides < 201611 +#define _LIBCPP_HAS_NO_DEDUCTION_GUIDES +#endif + +#if !__has_keyword(__is_aggregate) && (_GNUC_VER_NEW < 7001) +#define _LIBCPP_HAS_NO_IS_AGGREGATE +#endif + +#if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L +#define _LIBCPP_HAS_NO_COROUTINES +#endif + +// FIXME: Correct this macro when either (A) a feature test macro for the +// spaceship operator is provided, or (B) a compiler provides a complete +// implementation. +#define _LIBCPP_HAS_NO_SPACESHIP_OPERATOR + +// Decide whether to use availability macros. +#if !defined(_LIBCPP_BUILDING_LIBRARY) && \ + !defined(_LIBCPP_DISABLE_AVAILABILITY) && \ + __has_feature(attribute_availability_with_strict) && \ + __has_feature(attribute_availability_in_templates) && \ + __has_extension(pragma_clang_attribute_external_declaration) +# ifdef __APPLE__ +# define _LIBCPP_USE_AVAILABILITY_APPLE +# endif +#endif + +// Define availability macros. +#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) +# define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS \ + __attribute__((availability(macosx,strict,introduced=10.14))) \ + __attribute__((availability(ios,strict,introduced=12.0))) \ + __attribute__((availability(tvos,strict,introduced=12.0))) \ + __attribute__((availability(watchos,strict,introduced=5.0))) +# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS \ + _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST \ + _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +# define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ + __attribute__((availability(ios,strict,introduced=6.0))) +# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +# define _LIBCPP_AVAILABILITY_FILESYSTEM \ + __attribute__((availability(macosx,strict,introduced=10.15))) \ + __attribute__((availability(ios,strict,introduced=13.0))) \ + __attribute__((availability(tvos,strict,introduced=13.0))) \ + __attribute__((availability(watchos,strict,introduced=6.0))) +# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH \ + _Pragma("clang attribute push(__attribute__((availability(macosx,strict,introduced=10.15))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))") +# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP \ + _Pragma("clang attribute pop") \ + _Pragma("clang attribute pop") \ + _Pragma("clang attribute pop") \ + _Pragma("clang attribute pop") +#else +# define _LIBCPP_AVAILABILITY_SHARED_MUTEX +# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS +# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST +# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS +# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE +# define _LIBCPP_AVAILABILITY_FUTURE_ERROR +# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE +# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY +# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR +# define _LIBCPP_AVAILABILITY_FILESYSTEM +# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP +#endif + +// Define availability that depends on _LIBCPP_NO_EXCEPTIONS. +#ifdef _LIBCPP_NO_EXCEPTIONS +# define _LIBCPP_AVAILABILITY_FUTURE +# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST +# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS +#else +# define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR +# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _LIBCPP_AVAILABILITY_BAD_ANY_CAST +# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS +#endif + +// The stream API was dropped and re-added in the dylib shipped on macOS +// and iOS. We can only assume the dylib to provide these definitions for +// macosx >= 10.9 and ios >= 7.0. Otherwise, the definitions are available +// from the headers, but not from the dylib. Explicit instantiation +// declarations for streams exist conditionally to this; if we provide +// an explicit instantiation declaration and we try to deploy to a dylib +// that does not provide those symbols, we'll get a load-time error. +#if !defined(_LIBCPP_BUILDING_LIBRARY) && \ + ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1090) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 70000)) +# define _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB +#endif + +#if defined(_LIBCPP_COMPILER_IBM) +#define _LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO +#endif + +#if defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) +# define _LIBCPP_PUSH_MACROS +# define _LIBCPP_POP_MACROS +#else + // Don't warn about macro conflicts when we can restore them at the + // end of the header. +# ifndef _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS +# define _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS +# endif +# if defined(_LIBCPP_COMPILER_MSVC) +# define _LIBCPP_PUSH_MACROS \ + __pragma(push_macro("min")) \ + __pragma(push_macro("max")) +# define _LIBCPP_POP_MACROS \ + __pragma(pop_macro("min")) \ + __pragma(pop_macro("max")) +# else +# define _LIBCPP_PUSH_MACROS \ + _Pragma("push_macro(\"min\")") \ + _Pragma("push_macro(\"max\")") +# define _LIBCPP_POP_MACROS \ + _Pragma("pop_macro(\"min\")") \ + _Pragma("pop_macro(\"max\")") +# endif +#endif // defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) + +#ifndef _LIBCPP_NO_AUTO_LINK +# if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) +# if defined(_DLL) +# pragma comment(lib, "c++.lib") +# else +# pragma comment(lib, "libc++.lib") +# endif +# endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) +#endif // _LIBCPP_NO_AUTO_LINK + +#define _LIBCPP_UNUSED_VAR(x) ((void)(x)) + +// Configures the fopen close-on-exec mode character, if any. This string will +// be appended to any mode string used by fstream for fopen/fdopen. +// +// Not all platforms support this, but it helps avoid fd-leaks on platforms that +// do. +#if defined(__BIONIC__) +# define _LIBCPP_FOPEN_CLOEXEC_MODE "e" +#else +# define _LIBCPP_FOPEN_CLOEXEC_MODE +#endif + +#endif // __cplusplus + +#endif // _LIBCPP_CONFIG diff --git a/include/libc++/__config_site.in b/include/libc++/__config_site.in new file mode 100644 index 00000000..1ccc158c --- /dev/null +++ b/include/libc++/__config_site.in @@ -0,0 +1,36 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_CONFIG_SITE +#define _LIBCPP_CONFIG_SITE + +#cmakedefine _LIBCPP_ABI_VERSION @_LIBCPP_ABI_VERSION@ +#cmakedefine _LIBCPP_ABI_UNSTABLE +#cmakedefine _LIBCPP_ABI_FORCE_ITANIUM +#cmakedefine _LIBCPP_ABI_FORCE_MICROSOFT +#cmakedefine _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT +#cmakedefine _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE +#cmakedefine _LIBCPP_HAS_NO_STDIN +#cmakedefine _LIBCPP_HAS_NO_STDOUT +#cmakedefine _LIBCPP_HAS_NO_THREADS +#cmakedefine _LIBCPP_HAS_NO_MONOTONIC_CLOCK +#cmakedefine _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS +#cmakedefine _LIBCPP_HAS_MUSL_LIBC +#cmakedefine _LIBCPP_HAS_THREAD_API_PTHREAD +#cmakedefine _LIBCPP_HAS_THREAD_API_EXTERNAL +#cmakedefine _LIBCPP_HAS_THREAD_API_WIN32 +#cmakedefine _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL +#cmakedefine _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS +#cmakedefine _LIBCPP_NO_VCRUNTIME +#cmakedefine01 _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT +#cmakedefine _LIBCPP_ABI_NAMESPACE @_LIBCPP_ABI_NAMESPACE@ +#cmakedefine _LIBCPP_HAS_PARALLEL_ALGORITHMS + +@_LIBCPP_ABI_DEFINES@ + +#endif // _LIBCPP_CONFIG_SITE diff --git a/include/libc++/__debug b/include/libc++/__debug new file mode 100644 index 00000000..524c5ff0 --- /dev/null +++ b/include/libc++/__debug @@ -0,0 +1,279 @@ +// -*- C++ -*- +//===--------------------------- __debug ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_DEBUG_H +#define _LIBCPP_DEBUG_H + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +#if defined(_LIBCPP_HAS_NO_NULLPTR) +# include +#endif + +#if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY) +# include +# include +# include +#endif + +#if _LIBCPP_DEBUG_LEVEL >= 1 && !defined(_LIBCPP_ASSERT) +# define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : \ + _VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, #x, m))) +#endif + +#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifndef _LIBCPP_DEBUG_ASSERT +#define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(x, m) +#endif +#define _LIBCPP_DEBUG_MODE(...) __VA_ARGS__ +#endif + +#ifndef _LIBCPP_ASSERT +# define _LIBCPP_ASSERT(x, m) ((void)0) +#endif +#ifndef _LIBCPP_DEBUG_ASSERT +# define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0) +#endif +#ifndef _LIBCPP_DEBUG_MODE +#define _LIBCPP_DEBUG_MODE(...) ((void)0) +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info { + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + __libcpp_debug_info() + : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m) + : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {} + + _LIBCPP_FUNC_VIS std::string what() const; + + const char* __file_; + int __line_; + const char* __pred_; + const char* __msg_; +}; + +/// __libcpp_debug_function_type - The type of the assertion failure handler. +typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&); + +/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT +/// fails. +extern _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_function_type __libcpp_debug_function; + +/// __libcpp_abort_debug_function - A debug handler that aborts when called. +_LIBCPP_NORETURN _LIBCPP_FUNC_VIS +void __libcpp_abort_debug_function(__libcpp_debug_info const&); + +/// __libcpp_set_debug_function - Set the debug handler to the specified +/// function. +_LIBCPP_FUNC_VIS +bool __libcpp_set_debug_function(__libcpp_debug_function_type __func); + +#if _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY) + +struct _LIBCPP_TYPE_VIS __c_node; + +struct _LIBCPP_TYPE_VIS __i_node +{ + void* __i_; + __i_node* __next_; + __c_node* __c_; + +#ifndef _LIBCPP_CXX03_LANG + __i_node(const __i_node&) = delete; + __i_node& operator=(const __i_node&) = delete; +#else +private: + __i_node(const __i_node&); + __i_node& operator=(const __i_node&); +public: +#endif + _LIBCPP_INLINE_VISIBILITY + __i_node(void* __i, __i_node* __next, __c_node* __c) + : __i_(__i), __next_(__next), __c_(__c) {} + ~__i_node(); +}; + +struct _LIBCPP_TYPE_VIS __c_node +{ + void* __c_; + __c_node* __next_; + __i_node** beg_; + __i_node** end_; + __i_node** cap_; + +#ifndef _LIBCPP_CXX03_LANG + __c_node(const __c_node&) = delete; + __c_node& operator=(const __c_node&) = delete; +#else +private: + __c_node(const __c_node&); + __c_node& operator=(const __c_node&); +public: +#endif + _LIBCPP_INLINE_VISIBILITY + __c_node(void* __c, __c_node* __next) + : __c_(__c), __next_(__next), beg_(nullptr), end_(nullptr), cap_(nullptr) {} + virtual ~__c_node(); + + virtual bool __dereferenceable(const void*) const = 0; + virtual bool __decrementable(const void*) const = 0; + virtual bool __addable(const void*, ptrdiff_t) const = 0; + virtual bool __subscriptable(const void*, ptrdiff_t) const = 0; + + void __add(__i_node* __i); + _LIBCPP_HIDDEN void __remove(__i_node* __i); +}; + +template +struct _C_node + : public __c_node +{ + _C_node(void* __c, __c_node* __n) + : __c_node(__c, __n) {} + + virtual bool __dereferenceable(const void*) const; + virtual bool __decrementable(const void*) const; + virtual bool __addable(const void*, ptrdiff_t) const; + virtual bool __subscriptable(const void*, ptrdiff_t) const; +}; + +template +inline bool +_C_node<_Cont>::__dereferenceable(const void* __i) const +{ + typedef typename _Cont::const_iterator iterator; + const iterator* __j = static_cast(__i); + _Cont* _Cp = static_cast<_Cont*>(__c_); + return _Cp->__dereferenceable(__j); +} + +template +inline bool +_C_node<_Cont>::__decrementable(const void* __i) const +{ + typedef typename _Cont::const_iterator iterator; + const iterator* __j = static_cast(__i); + _Cont* _Cp = static_cast<_Cont*>(__c_); + return _Cp->__decrementable(__j); +} + +template +inline bool +_C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const +{ + typedef typename _Cont::const_iterator iterator; + const iterator* __j = static_cast(__i); + _Cont* _Cp = static_cast<_Cont*>(__c_); + return _Cp->__addable(__j, __n); +} + +template +inline bool +_C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const +{ + typedef typename _Cont::const_iterator iterator; + const iterator* __j = static_cast(__i); + _Cont* _Cp = static_cast<_Cont*>(__c_); + return _Cp->__subscriptable(__j, __n); +} + +class _LIBCPP_TYPE_VIS __libcpp_db +{ + __c_node** __cbeg_; + __c_node** __cend_; + size_t __csz_; + __i_node** __ibeg_; + __i_node** __iend_; + size_t __isz_; + + __libcpp_db(); +public: +#ifndef _LIBCPP_CXX03_LANG + __libcpp_db(const __libcpp_db&) = delete; + __libcpp_db& operator=(const __libcpp_db&) = delete; +#else +private: + __libcpp_db(const __libcpp_db&); + __libcpp_db& operator=(const __libcpp_db&); +public: +#endif + ~__libcpp_db(); + + class __db_c_iterator; + class __db_c_const_iterator; + class __db_i_iterator; + class __db_i_const_iterator; + + __db_c_const_iterator __c_end() const; + __db_i_const_iterator __i_end() const; + + typedef __c_node*(_InsertConstruct)(void*, void*, __c_node*); + + template + _LIBCPP_INLINE_VISIBILITY static __c_node* __create_C_node(void *__mem, void *__c, __c_node *__next) { + return ::new(__mem) _C_node<_Cont>(__c, __next); + } + + template + _LIBCPP_INLINE_VISIBILITY + void __insert_c(_Cont* __c) + { + __insert_c(static_cast(__c), &__create_C_node<_Cont>); + } + + void __insert_i(void* __i); + void __insert_c(void* __c, _InsertConstruct* __fn); + void __erase_c(void* __c); + + void __insert_ic(void* __i, const void* __c); + void __iterator_copy(void* __i, const void* __i0); + void __erase_i(void* __i); + + void* __find_c_from_i(void* __i) const; + void __invalidate_all(void* __c); + __c_node* __find_c_and_lock(void* __c) const; + __c_node* __find_c(void* __c) const; + void unlock() const; + + void swap(void* __c1, void* __c2); + + + bool __dereferenceable(const void* __i) const; + bool __decrementable(const void* __i) const; + bool __addable(const void* __i, ptrdiff_t __n) const; + bool __subscriptable(const void* __i, ptrdiff_t __n) const; + bool __less_than_comparable(const void* __i, const void* __j) const; +private: + _LIBCPP_HIDDEN + __i_node* __insert_iterator(void* __i); + _LIBCPP_HIDDEN + __i_node* __find_iterator(const void* __i) const; + + friend _LIBCPP_FUNC_VIS __libcpp_db* __get_db(); +}; + +_LIBCPP_FUNC_VIS __libcpp_db* __get_db(); +_LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db(); + + +#endif // _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_DEBUG_H + diff --git a/include/libc++/__errc b/include/libc++/__errc new file mode 100644 index 00000000..a8ad29f3 --- /dev/null +++ b/include/libc++/__errc @@ -0,0 +1,217 @@ +// -*- C++ -*- +//===---------------------------- __errc ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ERRC +#define _LIBCPP___ERRC + +/* + system_error synopsis + +namespace std +{ + +enum class errc +{ + address_family_not_supported, // EAFNOSUPPORT + address_in_use, // EADDRINUSE + address_not_available, // EADDRNOTAVAIL + already_connected, // EISCONN + argument_list_too_long, // E2BIG + argument_out_of_domain, // EDOM + bad_address, // EFAULT + bad_file_descriptor, // EBADF + bad_message, // EBADMSG + broken_pipe, // EPIPE + connection_aborted, // ECONNABORTED + connection_already_in_progress, // EALREADY + connection_refused, // ECONNREFUSED + connection_reset, // ECONNRESET + cross_device_link, // EXDEV + destination_address_required, // EDESTADDRREQ + device_or_resource_busy, // EBUSY + directory_not_empty, // ENOTEMPTY + executable_format_error, // ENOEXEC + file_exists, // EEXIST + file_too_large, // EFBIG + filename_too_long, // ENAMETOOLONG + function_not_supported, // ENOSYS + host_unreachable, // EHOSTUNREACH + identifier_removed, // EIDRM + illegal_byte_sequence, // EILSEQ + inappropriate_io_control_operation, // ENOTTY + interrupted, // EINTR + invalid_argument, // EINVAL + invalid_seek, // ESPIPE + io_error, // EIO + is_a_directory, // EISDIR + message_size, // EMSGSIZE + network_down, // ENETDOWN + network_reset, // ENETRESET + network_unreachable, // ENETUNREACH + no_buffer_space, // ENOBUFS + no_child_process, // ECHILD + no_link, // ENOLINK + no_lock_available, // ENOLCK + no_message_available, // ENODATA + no_message, // ENOMSG + no_protocol_option, // ENOPROTOOPT + no_space_on_device, // ENOSPC + no_stream_resources, // ENOSR + no_such_device_or_address, // ENXIO + no_such_device, // ENODEV + no_such_file_or_directory, // ENOENT + no_such_process, // ESRCH + not_a_directory, // ENOTDIR + not_a_socket, // ENOTSOCK + not_a_stream, // ENOSTR + not_connected, // ENOTCONN + not_enough_memory, // ENOMEM + not_supported, // ENOTSUP + operation_canceled, // ECANCELED + operation_in_progress, // EINPROGRESS + operation_not_permitted, // EPERM + operation_not_supported, // EOPNOTSUPP + operation_would_block, // EWOULDBLOCK + owner_dead, // EOWNERDEAD + permission_denied, // EACCES + protocol_error, // EPROTO + protocol_not_supported, // EPROTONOSUPPORT + read_only_file_system, // EROFS + resource_deadlock_would_occur, // EDEADLK + resource_unavailable_try_again, // EAGAIN + result_out_of_range, // ERANGE + state_not_recoverable, // ENOTRECOVERABLE + stream_timeout, // ETIME + text_file_busy, // ETXTBSY + timed_out, // ETIMEDOUT + too_many_files_open_in_system, // ENFILE + too_many_files_open, // EMFILE + too_many_links, // EMLINK + too_many_symbolic_link_levels, // ELOOP + value_too_large, // EOVERFLOW + wrong_protocol_type // EPROTOTYPE +}; + +*/ + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Some error codes are not present on all platforms, so we provide equivalents +// for them: + +//enum class errc +_LIBCPP_DECLARE_STRONG_ENUM(errc) +{ + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + bad_message = EBADMSG, + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + identifier_removed = EIDRM, + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + no_link = ENOLINK, + no_lock_available = ENOLCK, +#ifdef ENODATA + no_message_available = ENODATA, +#else + no_message_available = ENOMSG, +#endif + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, +#ifdef ENOSR + no_stream_resources = ENOSR, +#else + no_stream_resources = ENOMEM, +#endif + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, +#ifdef ENOSTR + not_a_stream = ENOSTR, +#else + not_a_stream = EINVAL, +#endif + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + not_supported = ENOTSUP, + operation_canceled = ECANCELED, + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + owner_dead = EOWNERDEAD, + permission_denied = EACCES, + protocol_error = EPROTO, + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + state_not_recoverable = ENOTRECOVERABLE, +#ifdef ETIME + stream_timeout = ETIME, +#else + stream_timeout = ETIMEDOUT, +#endif + text_file_busy = ETXTBSY, + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + value_too_large = EOVERFLOW, + wrong_protocol_type = EPROTOTYPE +}; +_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ERRC diff --git a/include/libc++/__functional_03 b/include/libc++/__functional_03 new file mode 100644 index 00000000..a90cbb75 --- /dev/null +++ b/include/libc++/__functional_03 @@ -0,0 +1,1591 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_FUNCTIONAL_03 +#define _LIBCPP_FUNCTIONAL_03 + +// manual variadic expansion for + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +namespace __function { + +template class __base; + +template +class __base<_Rp()> +{ + __base(const __base&); + __base& operator=(const __base&); +public: + __base() {} + virtual ~__base() {} + virtual __base* __clone() const = 0; + virtual void __clone(__base*) const = 0; + virtual void destroy() = 0; + virtual void destroy_deallocate() = 0; + virtual _Rp operator()() = 0; +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const = 0; + virtual const std::type_info& target_type() const = 0; +#endif // _LIBCPP_NO_RTTI +}; + +template +class __base<_Rp(_A0)> +{ + __base(const __base&); + __base& operator=(const __base&); +public: + __base() {} + virtual ~__base() {} + virtual __base* __clone() const = 0; + virtual void __clone(__base*) const = 0; + virtual void destroy() = 0; + virtual void destroy_deallocate() = 0; + virtual _Rp operator()(_A0) = 0; +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const = 0; + virtual const std::type_info& target_type() const = 0; +#endif // _LIBCPP_NO_RTTI +}; + +template +class __base<_Rp(_A0, _A1)> +{ + __base(const __base&); + __base& operator=(const __base&); +public: + __base() {} + virtual ~__base() {} + virtual __base* __clone() const = 0; + virtual void __clone(__base*) const = 0; + virtual void destroy() = 0; + virtual void destroy_deallocate() = 0; + virtual _Rp operator()(_A0, _A1) = 0; +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const = 0; + virtual const std::type_info& target_type() const = 0; +#endif // _LIBCPP_NO_RTTI +}; + +template +class __base<_Rp(_A0, _A1, _A2)> +{ + __base(const __base&); + __base& operator=(const __base&); +public: + __base() {} + virtual ~__base() {} + virtual __base* __clone() const = 0; + virtual void __clone(__base*) const = 0; + virtual void destroy() = 0; + virtual void destroy_deallocate() = 0; + virtual _Rp operator()(_A0, _A1, _A2) = 0; +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const = 0; + virtual const std::type_info& target_type() const = 0; +#endif // _LIBCPP_NO_RTTI +}; + +template class __func; + +template +class __func<_Fp, _Alloc, _Rp()> + : public __base<_Rp()> +{ + __compressed_pair<_Fp, _Alloc> __f_; +public: + explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} + explicit __func(_Fp __f, _Alloc __a) : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} + virtual __base<_Rp()>* __clone() const; + virtual void __clone(__base<_Rp()>*) const; + virtual void destroy(); + virtual void destroy_deallocate(); + virtual _Rp operator()(); +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const; + virtual const std::type_info& target_type() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +__base<_Rp()>* +__func<_Fp, _Alloc, _Rp()>::__clone() const +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); + return __hold.release(); +} + +template +void +__func<_Fp, _Alloc, _Rp()>::__clone(__base<_Rp()>* __p) const +{ + ::new (__p) __func(__f_.first(), __f_.second()); +} + +template +void +__func<_Fp, _Alloc, _Rp()>::destroy() +{ + __f_.~__compressed_pair<_Fp, _Alloc>(); +} + +template +void +__func<_Fp, _Alloc, _Rp()>::destroy_deallocate() +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + __f_.~__compressed_pair<_Fp, _Alloc>(); + __a.deallocate(this, 1); +} + +template +_Rp +__func<_Fp, _Alloc, _Rp()>::operator()() +{ + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_.first()); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const void* +__func<_Fp, _Alloc, _Rp()>::target(const type_info& __ti) const +{ + if (__ti == typeid(_Fp)) + return &__f_.first(); + return (const void*)0; +} + +template +const std::type_info& +__func<_Fp, _Alloc, _Rp()>::target_type() const +{ + return typeid(_Fp); +} + +#endif // _LIBCPP_NO_RTTI + +template +class __func<_Fp, _Alloc, _Rp(_A0)> + : public __base<_Rp(_A0)> +{ + __compressed_pair<_Fp, _Alloc> __f_; +public: + _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} + _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a) + : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} + virtual __base<_Rp(_A0)>* __clone() const; + virtual void __clone(__base<_Rp(_A0)>*) const; + virtual void destroy(); + virtual void destroy_deallocate(); + virtual _Rp operator()(_A0); +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const; + virtual const std::type_info& target_type() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +__base<_Rp(_A0)>* +__func<_Fp, _Alloc, _Rp(_A0)>::__clone() const +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); + return __hold.release(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0)>::__clone(__base<_Rp(_A0)>* __p) const +{ + ::new (__p) __func(__f_.first(), __f_.second()); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0)>::destroy() +{ + __f_.~__compressed_pair<_Fp, _Alloc>(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0)>::destroy_deallocate() +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + __f_.~__compressed_pair<_Fp, _Alloc>(); + __a.deallocate(this, 1); +} + +template +_Rp +__func<_Fp, _Alloc, _Rp(_A0)>::operator()(_A0 __a0) +{ + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_.first(), __a0); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const void* +__func<_Fp, _Alloc, _Rp(_A0)>::target(const type_info& __ti) const +{ + if (__ti == typeid(_Fp)) + return &__f_.first(); + return (const void*)0; +} + +template +const std::type_info& +__func<_Fp, _Alloc, _Rp(_A0)>::target_type() const +{ + return typeid(_Fp); +} + +#endif // _LIBCPP_NO_RTTI + +template +class __func<_Fp, _Alloc, _Rp(_A0, _A1)> + : public __base<_Rp(_A0, _A1)> +{ + __compressed_pair<_Fp, _Alloc> __f_; +public: + _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} + _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a) + : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} + virtual __base<_Rp(_A0, _A1)>* __clone() const; + virtual void __clone(__base<_Rp(_A0, _A1)>*) const; + virtual void destroy(); + virtual void destroy_deallocate(); + virtual _Rp operator()(_A0, _A1); +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const; + virtual const std::type_info& target_type() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +__base<_Rp(_A0, _A1)>* +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::__clone() const +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); + return __hold.release(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::__clone(__base<_Rp(_A0, _A1)>* __p) const +{ + ::new (__p) __func(__f_.first(), __f_.second()); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::destroy() +{ + __f_.~__compressed_pair<_Fp, _Alloc>(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::destroy_deallocate() +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + __f_.~__compressed_pair<_Fp, _Alloc>(); + __a.deallocate(this, 1); +} + +template +_Rp +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::operator()(_A0 __a0, _A1 __a1) +{ + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_.first(), __a0, __a1); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const void* +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::target(const type_info& __ti) const +{ + if (__ti == typeid(_Fp)) + return &__f_.first(); + return (const void*)0; +} + +template +const std::type_info& +__func<_Fp, _Alloc, _Rp(_A0, _A1)>::target_type() const +{ + return typeid(_Fp); +} + +#endif // _LIBCPP_NO_RTTI + +template +class __func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)> + : public __base<_Rp(_A0, _A1, _A2)> +{ + __compressed_pair<_Fp, _Alloc> __f_; +public: + _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f) : __f_(_VSTD::move(__f)) {} + _LIBCPP_INLINE_VISIBILITY explicit __func(_Fp __f, _Alloc __a) + : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} + virtual __base<_Rp(_A0, _A1, _A2)>* __clone() const; + virtual void __clone(__base<_Rp(_A0, _A1, _A2)>*) const; + virtual void destroy(); + virtual void destroy_deallocate(); + virtual _Rp operator()(_A0, _A1, _A2); +#ifndef _LIBCPP_NO_RTTI + virtual const void* target(const type_info&) const; + virtual const std::type_info& target_type() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +__base<_Rp(_A0, _A1, _A2)>* +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::__clone() const +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) __func(__f_.first(), _Alloc(__a)); + return __hold.release(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::__clone(__base<_Rp(_A0, _A1, _A2)>* __p) const +{ + ::new (__p) __func(__f_.first(), __f_.second()); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::destroy() +{ + __f_.~__compressed_pair<_Fp, _Alloc>(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::destroy_deallocate() +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_alloc_helper<__alloc_traits, __func>::type _Ap; + _Ap __a(__f_.second()); + __f_.~__compressed_pair<_Fp, _Alloc>(); + __a.deallocate(this, 1); +} + +template +_Rp +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::operator()(_A0 __a0, _A1 __a1, _A2 __a2) +{ + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_.first(), __a0, __a1, __a2); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const void* +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target(const type_info& __ti) const +{ + if (__ti == typeid(_Fp)) + return &__f_.first(); + return (const void*)0; +} + +template +const std::type_info& +__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>::target_type() const +{ + return typeid(_Fp); +} + +#endif // _LIBCPP_NO_RTTI + +} // __function + +template +class _LIBCPP_TEMPLATE_VIS function<_Rp()> +{ + typedef __function::__base<_Rp()> __base; + aligned_storage<3*sizeof(void*)>::type __buf_; + __base* __f_; + +public: + typedef _Rp result_type; + + // 20.7.16.2.1, construct/copy/destroy: + _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} + _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} + function(const function&); + template + function(_Fp, + typename enable_if::value>::type* = 0); + + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&) : __f_(0) {} + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} + template + function(allocator_arg_t, const _Alloc&, const function&); + template + function(allocator_arg_t, const _Alloc& __a, _Fp __f, + typename enable_if::value>::type* = 0); + + function& operator=(const function&); + function& operator=(nullptr_t); + template + typename enable_if + < + !is_integral<_Fp>::value, + function& + >::type + operator=(_Fp); + + ~function(); + + // 20.7.16.2.2, function modifiers: + void swap(function&); + template + _LIBCPP_INLINE_VISIBILITY + void assign(_Fp __f, const _Alloc& __a) + {function(allocator_arg, __a, __f).swap(*this);} + + // 20.7.16.2.3, function capacity: + _LIBCPP_INLINE_VISIBILITY operator bool() const {return __f_;} + +private: + // deleted overloads close possible hole in the type system + template + bool operator==(const function<_R2()>&) const;// = delete; + template + bool operator!=(const function<_R2()>&) const;// = delete; +public: + // 20.7.16.2.4, function invocation: + _Rp operator()() const; + +#ifndef _LIBCPP_NO_RTTI + // 20.7.16.2.5, function target access: + const std::type_info& target_type() const; + template _Tp* target(); + template const _Tp* target() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +function<_Rp()>::function(const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp()>::function(allocator_arg_t, const _Alloc&, const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp()>::function(_Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, allocator<_Fp>, _Rp()> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f); + } + else + { + typedef allocator<_FF> _Ap; + _Ap __a; + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); + __f_ = __hold.release(); + } + } +} + +template +template +function<_Rp()>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + typedef allocator_traits<_Alloc> __alloc_traits; + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, _Alloc, _Rp()> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f, __a0); + } + else + { + typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; + _Ap __a(__a0); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, _Alloc(__a)); + __f_ = __hold.release(); + } + } +} + +template +function<_Rp()>& +function<_Rp()>::operator=(const function& __f) +{ + if (__f) + function(__f).swap(*this); + else + *this = nullptr; + return *this; +} + +template +function<_Rp()>& +function<_Rp()>::operator=(nullptr_t) +{ + __base* __t = __f_; + __f_ = 0; + if (__t == (__base*)&__buf_) + __t->destroy(); + else if (__t) + __t->destroy_deallocate(); + return *this; +} + +template +template +typename enable_if +< + !is_integral<_Fp>::value, + function<_Rp()>& +>::type +function<_Rp()>::operator=(_Fp __f) +{ + function(_VSTD::move(__f)).swap(*this); + return *this; +} + +template +function<_Rp()>::~function() +{ + if (__f_ == (__base*)&__buf_) + __f_->destroy(); + else if (__f_) + __f_->destroy_deallocate(); +} + +template +void +function<_Rp()>::swap(function& __f) +{ + if (_VSTD::addressof(__f) == this) + return; + if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) + { + typename aligned_storage::type __tempbuf; + __base* __t = (__base*)&__tempbuf; + __f_->__clone(__t); + __f_->destroy(); + __f_ = 0; + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = 0; + __f_ = (__base*)&__buf_; + __t->__clone((__base*)&__f.__buf_); + __t->destroy(); + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f_ == (__base*)&__buf_) + { + __f_->__clone((__base*)&__f.__buf_); + __f_->destroy(); + __f_ = __f.__f_; + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f.__f_ == (__base*)&__f.__buf_) + { + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = __f_; + __f_ = (__base*)&__buf_; + } + else + _VSTD::swap(__f_, __f.__f_); +} + +template +_Rp +function<_Rp()>::operator()() const +{ + if (__f_ == 0) + __throw_bad_function_call(); + return (*__f_)(); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const std::type_info& +function<_Rp()>::target_type() const +{ + if (__f_ == 0) + return typeid(void); + return __f_->target_type(); +} + +template +template +_Tp* +function<_Rp()>::target() +{ + if (__f_ == 0) + return (_Tp*)0; + return (_Tp*) const_cast(__f_->target(typeid(_Tp))); +} + +template +template +const _Tp* +function<_Rp()>::target() const +{ + if (__f_ == 0) + return (const _Tp*)0; + return (const _Tp*)__f_->target(typeid(_Tp)); +} + +#endif // _LIBCPP_NO_RTTI + +template +class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0)> + : public unary_function<_A0, _Rp> +{ + typedef __function::__base<_Rp(_A0)> __base; + aligned_storage<3*sizeof(void*)>::type __buf_; + __base* __f_; + +public: + typedef _Rp result_type; + + // 20.7.16.2.1, construct/copy/destroy: + _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} + _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} + function(const function&); + template + function(_Fp, + typename enable_if::value>::type* = 0); + + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&) : __f_(0) {} + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} + template + function(allocator_arg_t, const _Alloc&, const function&); + template + function(allocator_arg_t, const _Alloc& __a, _Fp __f, + typename enable_if::value>::type* = 0); + + function& operator=(const function&); + function& operator=(nullptr_t); + template + typename enable_if + < + !is_integral<_Fp>::value, + function& + >::type + operator=(_Fp); + + ~function(); + + // 20.7.16.2.2, function modifiers: + void swap(function&); + template + _LIBCPP_INLINE_VISIBILITY + void assign(_Fp __f, const _Alloc& __a) + {function(allocator_arg, __a, __f).swap(*this);} + + // 20.7.16.2.3, function capacity: + _LIBCPP_INLINE_VISIBILITY operator bool() const {return __f_;} + +private: + // deleted overloads close possible hole in the type system + template + bool operator==(const function<_R2(_B0)>&) const;// = delete; + template + bool operator!=(const function<_R2(_B0)>&) const;// = delete; +public: + // 20.7.16.2.4, function invocation: + _Rp operator()(_A0) const; + +#ifndef _LIBCPP_NO_RTTI + // 20.7.16.2.5, function target access: + const std::type_info& target_type() const; + template _Tp* target(); + template const _Tp* target() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +function<_Rp(_A0)>::function(const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp(_A0)>::function(allocator_arg_t, const _Alloc&, const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp(_A0)>::function(_Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0)> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f); + } + else + { + typedef allocator<_FF> _Ap; + _Ap __a; + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); + __f_ = __hold.release(); + } + } +} + +template +template +function<_Rp(_A0)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + typedef allocator_traits<_Alloc> __alloc_traits; + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, _Alloc, _Rp(_A0)> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f, __a0); + } + else + { + typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; + _Ap __a(__a0); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, _Alloc(__a)); + __f_ = __hold.release(); + } + } +} + +template +function<_Rp(_A0)>& +function<_Rp(_A0)>::operator=(const function& __f) +{ + if (__f) + function(__f).swap(*this); + else + *this = nullptr; + return *this; +} + +template +function<_Rp(_A0)>& +function<_Rp(_A0)>::operator=(nullptr_t) +{ + __base* __t = __f_; + __f_ = 0; + if (__t == (__base*)&__buf_) + __t->destroy(); + else if (__t) + __t->destroy_deallocate(); + return *this; +} + +template +template +typename enable_if +< + !is_integral<_Fp>::value, + function<_Rp(_A0)>& +>::type +function<_Rp(_A0)>::operator=(_Fp __f) +{ + function(_VSTD::move(__f)).swap(*this); + return *this; +} + +template +function<_Rp(_A0)>::~function() +{ + if (__f_ == (__base*)&__buf_) + __f_->destroy(); + else if (__f_) + __f_->destroy_deallocate(); +} + +template +void +function<_Rp(_A0)>::swap(function& __f) +{ + if (_VSTD::addressof(__f) == this) + return; + if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) + { + typename aligned_storage::type __tempbuf; + __base* __t = (__base*)&__tempbuf; + __f_->__clone(__t); + __f_->destroy(); + __f_ = 0; + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = 0; + __f_ = (__base*)&__buf_; + __t->__clone((__base*)&__f.__buf_); + __t->destroy(); + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f_ == (__base*)&__buf_) + { + __f_->__clone((__base*)&__f.__buf_); + __f_->destroy(); + __f_ = __f.__f_; + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f.__f_ == (__base*)&__f.__buf_) + { + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = __f_; + __f_ = (__base*)&__buf_; + } + else + _VSTD::swap(__f_, __f.__f_); +} + +template +_Rp +function<_Rp(_A0)>::operator()(_A0 __a0) const +{ + if (__f_ == 0) + __throw_bad_function_call(); + return (*__f_)(__a0); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const std::type_info& +function<_Rp(_A0)>::target_type() const +{ + if (__f_ == 0) + return typeid(void); + return __f_->target_type(); +} + +template +template +_Tp* +function<_Rp(_A0)>::target() +{ + if (__f_ == 0) + return (_Tp*)0; + return (_Tp*) const_cast(__f_->target(typeid(_Tp))); +} + +template +template +const _Tp* +function<_Rp(_A0)>::target() const +{ + if (__f_ == 0) + return (const _Tp*)0; + return (const _Tp*)__f_->target(typeid(_Tp)); +} + +#endif // _LIBCPP_NO_RTTI + +template +class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1)> + : public binary_function<_A0, _A1, _Rp> +{ + typedef __function::__base<_Rp(_A0, _A1)> __base; + aligned_storage<3*sizeof(void*)>::type __buf_; + __base* __f_; + +public: + typedef _Rp result_type; + + // 20.7.16.2.1, construct/copy/destroy: + _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} + _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} + function(const function&); + template + function(_Fp, + typename enable_if::value>::type* = 0); + + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&) : __f_(0) {} + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} + template + function(allocator_arg_t, const _Alloc&, const function&); + template + function(allocator_arg_t, const _Alloc& __a, _Fp __f, + typename enable_if::value>::type* = 0); + + function& operator=(const function&); + function& operator=(nullptr_t); + template + typename enable_if + < + !is_integral<_Fp>::value, + function& + >::type + operator=(_Fp); + + ~function(); + + // 20.7.16.2.2, function modifiers: + void swap(function&); + template + _LIBCPP_INLINE_VISIBILITY + void assign(_Fp __f, const _Alloc& __a) + {function(allocator_arg, __a, __f).swap(*this);} + + // 20.7.16.2.3, function capacity: + operator bool() const {return __f_;} + +private: + // deleted overloads close possible hole in the type system + template + bool operator==(const function<_R2(_B0, _B1)>&) const;// = delete; + template + bool operator!=(const function<_R2(_B0, _B1)>&) const;// = delete; +public: + // 20.7.16.2.4, function invocation: + _Rp operator()(_A0, _A1) const; + +#ifndef _LIBCPP_NO_RTTI + // 20.7.16.2.5, function target access: + const std::type_info& target_type() const; + template _Tp* target(); + template const _Tp* target() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +function<_Rp(_A0, _A1)>::function(const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp(_A0, _A1)>::function(allocator_arg_t, const _Alloc&, const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp(_A0, _A1)>::function(_Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0, _A1)> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f); + } + else + { + typedef allocator<_FF> _Ap; + _Ap __a; + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); + __f_ = __hold.release(); + } + } +} + +template +template +function<_Rp(_A0, _A1)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + typedef allocator_traits<_Alloc> __alloc_traits; + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, _Alloc, _Rp(_A0, _A1)> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f, __a0); + } + else + { + typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; + _Ap __a(__a0); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, _Alloc(__a)); + __f_ = __hold.release(); + } + } +} + +template +function<_Rp(_A0, _A1)>& +function<_Rp(_A0, _A1)>::operator=(const function& __f) +{ + if (__f) + function(__f).swap(*this); + else + *this = nullptr; + return *this; +} + +template +function<_Rp(_A0, _A1)>& +function<_Rp(_A0, _A1)>::operator=(nullptr_t) +{ + __base* __t = __f_; + __f_ = 0; + if (__t == (__base*)&__buf_) + __t->destroy(); + else if (__t) + __t->destroy_deallocate(); + return *this; +} + +template +template +typename enable_if +< + !is_integral<_Fp>::value, + function<_Rp(_A0, _A1)>& +>::type +function<_Rp(_A0, _A1)>::operator=(_Fp __f) +{ + function(_VSTD::move(__f)).swap(*this); + return *this; +} + +template +function<_Rp(_A0, _A1)>::~function() +{ + if (__f_ == (__base*)&__buf_) + __f_->destroy(); + else if (__f_) + __f_->destroy_deallocate(); +} + +template +void +function<_Rp(_A0, _A1)>::swap(function& __f) +{ + if (_VSTD::addressof(__f) == this) + return; + if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) + { + typename aligned_storage::type __tempbuf; + __base* __t = (__base*)&__tempbuf; + __f_->__clone(__t); + __f_->destroy(); + __f_ = 0; + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = 0; + __f_ = (__base*)&__buf_; + __t->__clone((__base*)&__f.__buf_); + __t->destroy(); + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f_ == (__base*)&__buf_) + { + __f_->__clone((__base*)&__f.__buf_); + __f_->destroy(); + __f_ = __f.__f_; + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f.__f_ == (__base*)&__f.__buf_) + { + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = __f_; + __f_ = (__base*)&__buf_; + } + else + _VSTD::swap(__f_, __f.__f_); +} + +template +_Rp +function<_Rp(_A0, _A1)>::operator()(_A0 __a0, _A1 __a1) const +{ + if (__f_ == 0) + __throw_bad_function_call(); + return (*__f_)(__a0, __a1); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const std::type_info& +function<_Rp(_A0, _A1)>::target_type() const +{ + if (__f_ == 0) + return typeid(void); + return __f_->target_type(); +} + +template +template +_Tp* +function<_Rp(_A0, _A1)>::target() +{ + if (__f_ == 0) + return (_Tp*)0; + return (_Tp*) const_cast(__f_->target(typeid(_Tp))); +} + +template +template +const _Tp* +function<_Rp(_A0, _A1)>::target() const +{ + if (__f_ == 0) + return (const _Tp*)0; + return (const _Tp*)__f_->target(typeid(_Tp)); +} + +#endif // _LIBCPP_NO_RTTI + +template +class _LIBCPP_TEMPLATE_VIS function<_Rp(_A0, _A1, _A2)> +{ + typedef __function::__base<_Rp(_A0, _A1, _A2)> __base; + aligned_storage<3*sizeof(void*)>::type __buf_; + __base* __f_; + +public: + typedef _Rp result_type; + + // 20.7.16.2.1, construct/copy/destroy: + _LIBCPP_INLINE_VISIBILITY explicit function() : __f_(0) {} + _LIBCPP_INLINE_VISIBILITY function(nullptr_t) : __f_(0) {} + function(const function&); + template + function(_Fp, + typename enable_if::value>::type* = 0); + + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&) : __f_(0) {} + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&, nullptr_t) : __f_(0) {} + template + function(allocator_arg_t, const _Alloc&, const function&); + template + function(allocator_arg_t, const _Alloc& __a, _Fp __f, + typename enable_if::value>::type* = 0); + + function& operator=(const function&); + function& operator=(nullptr_t); + template + typename enable_if + < + !is_integral<_Fp>::value, + function& + >::type + operator=(_Fp); + + ~function(); + + // 20.7.16.2.2, function modifiers: + void swap(function&); + template + _LIBCPP_INLINE_VISIBILITY + void assign(_Fp __f, const _Alloc& __a) + {function(allocator_arg, __a, __f).swap(*this);} + + // 20.7.16.2.3, function capacity: + _LIBCPP_INLINE_VISIBILITY operator bool() const {return __f_;} + +private: + // deleted overloads close possible hole in the type system + template + bool operator==(const function<_R2(_B0, _B1, _B2)>&) const;// = delete; + template + bool operator!=(const function<_R2(_B0, _B1, _B2)>&) const;// = delete; +public: + // 20.7.16.2.4, function invocation: + _Rp operator()(_A0, _A1, _A2) const; + +#ifndef _LIBCPP_NO_RTTI + // 20.7.16.2.5, function target access: + const std::type_info& target_type() const; + template _Tp* target(); + template const _Tp* target() const; +#endif // _LIBCPP_NO_RTTI +}; + +template +function<_Rp(_A0, _A1, _A2)>::function(const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp(_A0, _A1, _A2)>::function(allocator_arg_t, const _Alloc&, + const function& __f) +{ + if (__f.__f_ == 0) + __f_ = 0; + else if (__f.__f_ == (const __base*)&__f.__buf_) + { + __f_ = (__base*)&__buf_; + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); +} + +template +template +function<_Rp(_A0, _A1, _A2)>::function(_Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_A0, _A1, _A2)> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f); + } + else + { + typedef allocator<_FF> _Ap; + _Ap __a; + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, allocator<_Fp>(__a)); + __f_ = __hold.release(); + } + } +} + +template +template +function<_Rp(_A0, _A1, _A2)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f, + typename enable_if::value>::type*) + : __f_(0) +{ + typedef allocator_traits<_Alloc> __alloc_traits; + if (__function::__not_null(__f)) + { + typedef __function::__func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)> _FF; + if (sizeof(_FF) <= sizeof(__buf_)) + { + __f_ = (__base*)&__buf_; + ::new (__f_) _FF(__f, __a0); + } + else + { + typedef typename __rebind_alloc_helper<__alloc_traits, _FF>::type _Ap; + _Ap __a(__a0); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new (__hold.get()) _FF(__f, _Alloc(__a)); + __f_ = __hold.release(); + } + } +} + +template +function<_Rp(_A0, _A1, _A2)>& +function<_Rp(_A0, _A1, _A2)>::operator=(const function& __f) +{ + if (__f) + function(__f).swap(*this); + else + *this = nullptr; + return *this; +} + +template +function<_Rp(_A0, _A1, _A2)>& +function<_Rp(_A0, _A1, _A2)>::operator=(nullptr_t) +{ + __base* __t = __f_; + __f_ = 0; + if (__t == (__base*)&__buf_) + __t->destroy(); + else if (__t) + __t->destroy_deallocate(); + return *this; +} + +template +template +typename enable_if +< + !is_integral<_Fp>::value, + function<_Rp(_A0, _A1, _A2)>& +>::type +function<_Rp(_A0, _A1, _A2)>::operator=(_Fp __f) +{ + function(_VSTD::move(__f)).swap(*this); + return *this; +} + +template +function<_Rp(_A0, _A1, _A2)>::~function() +{ + if (__f_ == (__base*)&__buf_) + __f_->destroy(); + else if (__f_) + __f_->destroy_deallocate(); +} + +template +void +function<_Rp(_A0, _A1, _A2)>::swap(function& __f) +{ + if (_VSTD::addressof(__f) == this) + return; + if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_) + { + typename aligned_storage::type __tempbuf; + __base* __t = (__base*)&__tempbuf; + __f_->__clone(__t); + __f_->destroy(); + __f_ = 0; + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = 0; + __f_ = (__base*)&__buf_; + __t->__clone((__base*)&__f.__buf_); + __t->destroy(); + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f_ == (__base*)&__buf_) + { + __f_->__clone((__base*)&__f.__buf_); + __f_->destroy(); + __f_ = __f.__f_; + __f.__f_ = (__base*)&__f.__buf_; + } + else if (__f.__f_ == (__base*)&__f.__buf_) + { + __f.__f_->__clone((__base*)&__buf_); + __f.__f_->destroy(); + __f.__f_ = __f_; + __f_ = (__base*)&__buf_; + } + else + _VSTD::swap(__f_, __f.__f_); +} + +template +_Rp +function<_Rp(_A0, _A1, _A2)>::operator()(_A0 __a0, _A1 __a1, _A2 __a2) const +{ + if (__f_ == 0) + __throw_bad_function_call(); + return (*__f_)(__a0, __a1, __a2); +} + +#ifndef _LIBCPP_NO_RTTI + +template +const std::type_info& +function<_Rp(_A0, _A1, _A2)>::target_type() const +{ + if (__f_ == 0) + return typeid(void); + return __f_->target_type(); +} + +template +template +_Tp* +function<_Rp(_A0, _A1, _A2)>::target() +{ + if (__f_ == 0) + return (_Tp*)0; + return (_Tp*) const_cast(__f_->target(typeid(_Tp))); +} + +template +template +const _Tp* +function<_Rp(_A0, _A1, _A2)>::target() const +{ + if (__f_ == 0) + return (const _Tp*)0; + return (const _Tp*)__f_->target(typeid(_Tp)); +} + +#endif // _LIBCPP_NO_RTTI + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator==(const function<_Fp>& __f, nullptr_t) {return !__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator==(nullptr_t, const function<_Fp>& __f) {return !__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator!=(const function<_Fp>& __f, nullptr_t) {return (bool)__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator!=(nullptr_t, const function<_Fp>& __f) {return (bool)__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(function<_Fp>& __x, function<_Fp>& __y) +{return __x.swap(__y);} + +#endif // _LIBCPP_FUNCTIONAL_03 diff --git a/include/libc++/__functional_base b/include/libc++/__functional_base new file mode 100644 index 00000000..ca761c40 --- /dev/null +++ b/include/libc++/__functional_base @@ -0,0 +1,652 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_FUNCTIONAL_BASE +#define _LIBCPP_FUNCTIONAL_BASE + +#include <__config> +#include +#include +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _LIBCPP_TEMPLATE_VIS binary_function +{ + typedef _Arg1 first_argument_type; + typedef _Arg2 second_argument_type; + typedef _Result result_type; +}; + +template +struct __has_result_type +{ +private: + struct __two {char __lx; char __lxx;}; + template static __two __test(...); + template static char __test(typename _Up::result_type* = 0); +public: + static const bool value = sizeof(__test<_Tp>(0)) == 1; +}; + +#if _LIBCPP_STD_VER > 11 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS less : binary_function<_Tp, _Tp, bool> +{ + _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x < __y;} +}; + +#if _LIBCPP_STD_VER > 11 +template <> +struct _LIBCPP_TEMPLATE_VIS less +{ + template + _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))) + -> decltype (_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +// __weak_result_type + +template +struct __derives_from_unary_function +{ +private: + struct __two {char __lx; char __lxx;}; + static __two __test(...); + template + static unary_function<_Ap, _Rp> + __test(const volatile unary_function<_Ap, _Rp>*); +public: + static const bool value = !is_same::value; + typedef decltype(__test((_Tp*)0)) type; +}; + +template +struct __derives_from_binary_function +{ +private: + struct __two {char __lx; char __lxx;}; + static __two __test(...); + template + static binary_function<_A1, _A2, _Rp> + __test(const volatile binary_function<_A1, _A2, _Rp>*); +public: + static const bool value = !is_same::value; + typedef decltype(__test((_Tp*)0)) type; +}; + +template ::value> +struct __maybe_derive_from_unary_function // bool is true + : public __derives_from_unary_function<_Tp>::type +{ +}; + +template +struct __maybe_derive_from_unary_function<_Tp, false> +{ +}; + +template ::value> +struct __maybe_derive_from_binary_function // bool is true + : public __derives_from_binary_function<_Tp>::type +{ +}; + +template +struct __maybe_derive_from_binary_function<_Tp, false> +{ +}; + +template ::value> +struct __weak_result_type_imp // bool is true + : public __maybe_derive_from_unary_function<_Tp>, + public __maybe_derive_from_binary_function<_Tp> +{ + typedef _LIBCPP_NODEBUG_TYPE typename _Tp::result_type result_type; +}; + +template +struct __weak_result_type_imp<_Tp, false> + : public __maybe_derive_from_unary_function<_Tp>, + public __maybe_derive_from_binary_function<_Tp> +{ +}; + +template +struct __weak_result_type + : public __weak_result_type_imp<_Tp> +{ +}; + +// 0 argument case + +template +struct __weak_result_type<_Rp ()> +{ + typedef _LIBCPP_NODEBUG_TYPE _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (&)()> +{ + typedef _LIBCPP_NODEBUG_TYPE _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (*)()> +{ + typedef _LIBCPP_NODEBUG_TYPE _Rp result_type; +}; + +// 1 argument case + +template +struct __weak_result_type<_Rp (_A1)> + : public unary_function<_A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (&)(_A1)> + : public unary_function<_A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (*)(_A1)> + : public unary_function<_A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)()> + : public unary_function<_Cp*, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)() const> + : public unary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)() volatile> + : public unary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)() const volatile> + : public unary_function +{ +}; + +// 2 argument case + +template +struct __weak_result_type<_Rp (_A1, _A2)> + : public binary_function<_A1, _A2, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (*)(_A1, _A2)> + : public binary_function<_A1, _A2, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (&)(_A1, _A2)> + : public binary_function<_A1, _A2, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1)> + : public binary_function<_Cp*, _A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1) const> + : public binary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> + : public binary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> + : public binary_function +{ +}; + + +#ifndef _LIBCPP_CXX03_LANG +// 3 or more arguments + +template +struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> +{ + typedef _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> +{ + typedef _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> +{ + typedef _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> +{ + typedef _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> +{ + typedef _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> +{ + typedef _Rp result_type; +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> +{ + typedef _Rp result_type; +}; + +template +struct __invoke_return +{ + typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_Args>()...)) type; +}; + +#else // defined(_LIBCPP_CXX03_LANG) + +#include <__functional_base_03> + +#endif // !defined(_LIBCPP_CXX03_LANG) + + +template +struct __invoke_void_return_wrapper +{ +#ifndef _LIBCPP_CXX03_LANG + template + static _Ret __call(_Args&&... __args) { + return __invoke(_VSTD::forward<_Args>(__args)...); + } +#else + template + static _Ret __call(_Fn __f) { + return __invoke(__f); + } + + template + static _Ret __call(_Fn __f, _A0& __a0) { + return __invoke(__f, __a0); + } + + template + static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1) { + return __invoke(__f, __a0, __a1); + } + + template + static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2){ + return __invoke(__f, __a0, __a1, __a2); + } +#endif +}; + +template <> +struct __invoke_void_return_wrapper +{ +#ifndef _LIBCPP_CXX03_LANG + template + static void __call(_Args&&... __args) { + __invoke(_VSTD::forward<_Args>(__args)...); + } +#else + template + static void __call(_Fn __f) { + __invoke(__f); + } + + template + static void __call(_Fn __f, _A0& __a0) { + __invoke(__f, __a0); + } + + template + static void __call(_Fn __f, _A0& __a0, _A1& __a1) { + __invoke(__f, __a0, __a1); + } + + template + static void __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2) { + __invoke(__f, __a0, __a1, __a2); + } +#endif +}; + +template +class _LIBCPP_TEMPLATE_VIS reference_wrapper + : public __weak_result_type<_Tp> +{ +public: + // types + typedef _Tp type; +private: + type* __f_; + +public: + // construct/copy/destroy + _LIBCPP_INLINE_VISIBILITY reference_wrapper(type& __f) _NOEXCEPT + : __f_(_VSTD::addressof(__f)) {} +#ifndef _LIBCPP_CXX03_LANG + private: reference_wrapper(type&&); public: // = delete; // do not bind to temps +#endif + + // access + _LIBCPP_INLINE_VISIBILITY operator type& () const _NOEXCEPT {return *__f_;} + _LIBCPP_INLINE_VISIBILITY type& get() const _NOEXCEPT {return *__f_;} + +#ifndef _LIBCPP_CXX03_LANG + // invoke + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_of::type + operator() (_ArgTypes&&... __args) const { + return __invoke(get(), _VSTD::forward<_ArgTypes>(__args)...); + } +#else + + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return::type + operator() () const { + return __invoke(get()); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return0::type + operator() (_A0& __a0) const { + return __invoke(get(), __a0); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return0::type + operator() (_A0 const& __a0) const { + return __invoke(get(), __a0); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return1::type + operator() (_A0& __a0, _A1& __a1) const { + return __invoke(get(), __a0, __a1); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return1::type + operator() (_A0 const& __a0, _A1& __a1) const { + return __invoke(get(), __a0, __a1); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return1::type + operator() (_A0& __a0, _A1 const& __a1) const { + return __invoke(get(), __a0, __a1); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return1::type + operator() (_A0 const& __a0, _A1 const& __a1) const { + return __invoke(get(), __a0, __a1); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0& __a0, _A1& __a1, _A2& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0 const& __a0, _A1& __a1, _A2& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0& __a0, _A1 const& __a1, _A2& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0& __a0, _A1& __a1, _A2 const& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0 const& __a0, _A1 const& __a1, _A2& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0 const& __a0, _A1& __a1, _A2 const& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0& __a0, _A1 const& __a1, _A2 const& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename __invoke_return2::type + operator() (_A0 const& __a0, _A1 const& __a1, _A2 const& __a2) const { + return __invoke(get(), __a0, __a1, __a2); + } +#endif // _LIBCPP_CXX03_LANG +}; + + +template +inline _LIBCPP_INLINE_VISIBILITY +reference_wrapper<_Tp> +ref(_Tp& __t) _NOEXCEPT +{ + return reference_wrapper<_Tp>(__t); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +reference_wrapper<_Tp> +ref(reference_wrapper<_Tp> __t) _NOEXCEPT +{ + return ref(__t.get()); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +reference_wrapper +cref(const _Tp& __t) _NOEXCEPT +{ + return reference_wrapper(__t); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +reference_wrapper +cref(reference_wrapper<_Tp> __t) _NOEXCEPT +{ + return cref(__t.get()); +} + +#ifndef _LIBCPP_CXX03_LANG +template void ref(const _Tp&&) = delete; +template void cref(const _Tp&&) = delete; +#endif + +#if _LIBCPP_STD_VER > 11 +template +struct __is_transparent : false_type {}; + +template +struct __is_transparent<_Tp, _Up, + typename __void_t::type> + : true_type {}; +#endif + +// allocator_arg_t + +struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { explicit allocator_arg_t() = default; }; + +#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY) +extern _LIBCPP_EXPORTED_FROM_ABI const allocator_arg_t allocator_arg; +#else +/* _LIBCPP_INLINE_VAR */ constexpr allocator_arg_t allocator_arg = allocator_arg_t(); +#endif + +// uses_allocator + +template +struct __has_allocator_type +{ +private: + struct __two {char __lx; char __lxx;}; + template static __two __test(...); + template static char __test(typename _Up::allocator_type* = 0); +public: + static const bool value = sizeof(__test<_Tp>(0)) == 1; +}; + +template ::value> +struct __uses_allocator + : public integral_constant::value> +{ +}; + +template +struct __uses_allocator<_Tp, _Alloc, false> + : public false_type +{ +}; + +template +struct _LIBCPP_TEMPLATE_VIS uses_allocator + : public __uses_allocator<_Tp, _Alloc> +{ +}; + +#if _LIBCPP_STD_VER > 14 +template +_LIBCPP_INLINE_VAR constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value; +#endif + +#ifndef _LIBCPP_CXX03_LANG + +// allocator construction + +template +struct __uses_alloc_ctor_imp +{ + typedef _LIBCPP_NODEBUG_TYPE typename __uncvref<_Alloc>::type _RawAlloc; + static const bool __ua = uses_allocator<_Tp, _RawAlloc>::value; + static const bool __ic = + is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value; + static const int value = __ua ? 2 - __ic : 0; +}; + +template +struct __uses_alloc_ctor + : integral_constant::value> + {}; + +template +inline _LIBCPP_INLINE_VISIBILITY +void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &, _Args &&... __args ) +{ + new (__storage) _Tp (_VSTD::forward<_Args>(__args)...); +} + +// FIXME: This should have a version which takes a non-const alloc. +template +inline _LIBCPP_INLINE_VISIBILITY +void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) +{ + new (__storage) _Tp (allocator_arg, __a, _VSTD::forward<_Args>(__args)...); +} + +// FIXME: This should have a version which takes a non-const alloc. +template +inline _LIBCPP_INLINE_VISIBILITY +void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) +{ + new (__storage) _Tp (_VSTD::forward<_Args>(__args)..., __a); +} + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_FUNCTIONAL_BASE diff --git a/include/libc++/__functional_base_03 b/include/libc++/__functional_base_03 new file mode 100644 index 00000000..e6dac90c --- /dev/null +++ b/include/libc++/__functional_base_03 @@ -0,0 +1,223 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_FUNCTIONAL_BASE_03 +#define _LIBCPP_FUNCTIONAL_BASE_03 + +// manual variadic expansion for + +// __invoke + +template +struct __enable_invoke_imp; + +template +struct __enable_invoke_imp<_Ret, _T1, true, true> { + typedef _Ret _Bullet1; + typedef _Bullet1 type; +}; + +template +struct __enable_invoke_imp<_Ret, _T1, true, false> { + typedef _Ret _Bullet2; + typedef _Bullet2 type; +}; + +template +struct __enable_invoke_imp<_Ret, _T1, false, true> { + typedef typename add_lvalue_reference< + typename __apply_cv<_T1, _Ret>::type + >::type _Bullet3; + typedef _Bullet3 type; +}; + +template +struct __enable_invoke_imp<_Ret, _T1, false, false> { + typedef typename add_lvalue_reference< + typename __apply_cv()), _Ret>::type + >::type _Bullet4; + typedef _Bullet4 type; +}; + +template +struct __enable_invoke_imp<_Ret, _T1*, false, false> { + typedef typename add_lvalue_reference< + typename __apply_cv<_T1, _Ret>::type + >::type _Bullet4; + typedef _Bullet4 type; +}; + +template , + class _Ret = typename _Traits::_ReturnType, + class _Class = typename _Traits::_ClassType> +struct __enable_invoke : __enable_invoke_imp< + _Ret, _T1, + is_member_function_pointer<_Fn>::value, + is_base_of<_Class, typename remove_reference<_T1>::type>::value> +{ +}; + +__nat __invoke(__any, ...); + +// first bullet + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet1 +__invoke(_Fn __f, _T1& __t1) { + return (__t1.*__f)(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet1 +__invoke(_Fn __f, _T1& __t1, _A0& __a0) { + return (__t1.*__f)(__a0); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet1 +__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1) { + return (__t1.*__f)(__a0, __a1); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet1 +__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) { + return (__t1.*__f)(__a0, __a1, __a2); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet2 +__invoke(_Fn __f, _T1& __t1) { + return ((*__t1).*__f)(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet2 +__invoke(_Fn __f, _T1& __t1, _A0& __a0) { + return ((*__t1).*__f)(__a0); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet2 +__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1) { + return ((*__t1).*__f)(__a0, __a1); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet2 +__invoke(_Fn __f, _T1& __t1, _A0& __a0, _A1& __a1, _A2& __a2) { + return ((*__t1).*__f)(__a0, __a1, __a2); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet3 +__invoke(_Fn __f, _T1& __t1) { + return __t1.*__f; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename __enable_invoke<_Fn, _T1>::_Bullet4 +__invoke(_Fn __f, _T1& __t1) { + return (*__t1).*__f; +} + +// fifth bullet + +template +inline _LIBCPP_INLINE_VISIBILITY +decltype(_VSTD::declval<_Fp&>()()) +__invoke(_Fp& __f) +{ + return __f(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +decltype(_VSTD::declval<_Fp&>()(_VSTD::declval<_A0&>())) +__invoke(_Fp& __f, _A0& __a0) +{ + return __f(__a0); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +decltype(_VSTD::declval<_Fp&>()(_VSTD::declval<_A0&>(), _VSTD::declval<_A1&>())) +__invoke(_Fp& __f, _A0& __a0, _A1& __a1) +{ + return __f(__a0, __a1); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +decltype(_VSTD::declval<_Fp&>()(_VSTD::declval<_A0&>(), _VSTD::declval<_A1&>(), _VSTD::declval<_A2&>())) +__invoke(_Fp& __f, _A0& __a0, _A1& __a1, _A2& __a2) +{ + return __f(__a0, __a1, __a2); +} + +template >::value> +struct __invoke_return +{ + typedef typename __weak_result_type<_Fp>::result_type type; +}; + +template +struct __invoke_return<_Fp, false> +{ + typedef decltype(__invoke(_VSTD::declval<_Fp&>())) type; +}; + +template +struct __invoke_return0 +{ + typedef decltype(__invoke(_VSTD::declval<_Tp&>(), _VSTD::declval<_A0&>())) type; +}; + +template +struct __invoke_return0<_Rp _Tp::*, _A0> +{ + typedef typename __enable_invoke<_Rp _Tp::*, _A0>::type type; +}; + +template +struct __invoke_return1 +{ + typedef decltype(__invoke(_VSTD::declval<_Tp&>(), _VSTD::declval<_A0&>(), + _VSTD::declval<_A1&>())) type; +}; + +template +struct __invoke_return1<_Rp _Class::*, _A0, _A1> { + typedef typename __enable_invoke<_Rp _Class::*, _A0>::type type; +}; + +template +struct __invoke_return2 +{ + typedef decltype(__invoke(_VSTD::declval<_Tp&>(), _VSTD::declval<_A0&>(), + _VSTD::declval<_A1&>(), + _VSTD::declval<_A2&>())) type; +}; + +template +struct __invoke_return2<_Ret _Class::*, _A0, _A1, _A2> { + typedef typename __enable_invoke<_Ret _Class::*, _A0>::type type; +}; +#endif // _LIBCPP_FUNCTIONAL_BASE_03 diff --git a/include/libc++/__hash_table b/include/libc++/__hash_table new file mode 100644 index 00000000..0b953f58 --- /dev/null +++ b/include/libc++/__hash_table @@ -0,0 +1,2913 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP__HASH_TABLE +#define _LIBCPP__HASH_TABLE + +#include <__config> +#include +#include +#include +#include +#include +#include +#include + +#include <__debug> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __hash_value_type; + +#ifndef _LIBCPP_CXX03_LANG +template +struct __is_hash_value_type_imp : false_type {}; + +template +struct __is_hash_value_type_imp<__hash_value_type<_Key, _Value>> : true_type {}; + +template +struct __is_hash_value_type : false_type {}; + +template +struct __is_hash_value_type<_One> : __is_hash_value_type_imp::type> {}; +#endif + +_LIBCPP_FUNC_VIS +size_t __next_prime(size_t __n); + +template +struct __hash_node_base +{ + typedef typename pointer_traits<_NodePtr>::element_type __node_type; + typedef __hash_node_base __first_node; + typedef typename __rebind_pointer<_NodePtr, __first_node>::type __node_base_pointer; + typedef _NodePtr __node_pointer; + +#if defined(_LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB) + typedef __node_base_pointer __next_pointer; +#else + typedef typename conditional< + is_pointer<__node_pointer>::value, + __node_base_pointer, + __node_pointer>::type __next_pointer; +#endif + + __next_pointer __next_; + + _LIBCPP_INLINE_VISIBILITY + __next_pointer __ptr() _NOEXCEPT { + return static_cast<__next_pointer>( + pointer_traits<__node_base_pointer>::pointer_to(*this)); + } + + _LIBCPP_INLINE_VISIBILITY + __node_pointer __upcast() _NOEXCEPT { + return static_cast<__node_pointer>( + pointer_traits<__node_base_pointer>::pointer_to(*this)); + } + + _LIBCPP_INLINE_VISIBILITY + size_t __hash() const _NOEXCEPT { + return static_cast<__node_type const&>(*this).__hash_; + } + + _LIBCPP_INLINE_VISIBILITY __hash_node_base() _NOEXCEPT : __next_(nullptr) {} +}; + +template +struct __hash_node + : public __hash_node_base + < + typename __rebind_pointer<_VoidPtr, __hash_node<_Tp, _VoidPtr> >::type + > +{ + typedef _Tp __node_value_type; + + size_t __hash_; + __node_value_type __value_; +}; + +inline _LIBCPP_INLINE_VISIBILITY +bool +__is_hash_power2(size_t __bc) +{ + return __bc > 2 && !(__bc & (__bc - 1)); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t +__constrain_hash(size_t __h, size_t __bc) +{ + return !(__bc & (__bc - 1)) ? __h & (__bc - 1) : + (__h < __bc ? __h : __h % __bc); +} + +inline _LIBCPP_INLINE_VISIBILITY +size_t +__next_hash_pow2(size_t __n) +{ + return __n < 2 ? __n : (size_t(1) << (std::numeric_limits::digits - __libcpp_clz(__n-1))); +} + + +template class __hash_table; + +template class _LIBCPP_TEMPLATE_VIS __hash_iterator; +template class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; +template class _LIBCPP_TEMPLATE_VIS __hash_local_iterator; +template class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; +template class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; +template class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; + +template +struct __hash_key_value_types { + static_assert(!is_reference<_Tp>::value && !is_const<_Tp>::value, ""); + typedef _Tp key_type; + typedef _Tp __node_value_type; + typedef _Tp __container_value_type; + static const bool __is_map = false; + + _LIBCPP_INLINE_VISIBILITY + static key_type const& __get_key(_Tp const& __v) { + return __v; + } + _LIBCPP_INLINE_VISIBILITY + static __container_value_type const& __get_value(__node_value_type const& __v) { + return __v; + } + _LIBCPP_INLINE_VISIBILITY + static __container_value_type* __get_ptr(__node_value_type& __n) { + return _VSTD::addressof(__n); + } +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + static __container_value_type&& __move(__node_value_type& __v) { + return _VSTD::move(__v); + } +#endif +}; + +template +struct __hash_key_value_types<__hash_value_type<_Key, _Tp> > { + typedef _Key key_type; + typedef _Tp mapped_type; + typedef __hash_value_type<_Key, _Tp> __node_value_type; + typedef pair __container_value_type; + typedef __container_value_type __map_value_type; + static const bool __is_map = true; + + _LIBCPP_INLINE_VISIBILITY + static key_type const& __get_key(__container_value_type const& __v) { + return __v.first; + } + + template + _LIBCPP_INLINE_VISIBILITY + static typename enable_if<__is_same_uncvref<_Up, __node_value_type>::value, + __container_value_type const&>::type + __get_value(_Up& __t) { + return __t.__get_value(); + } + + template + _LIBCPP_INLINE_VISIBILITY + static typename enable_if<__is_same_uncvref<_Up, __container_value_type>::value, + __container_value_type const&>::type + __get_value(_Up& __t) { + return __t; + } + + _LIBCPP_INLINE_VISIBILITY + static __container_value_type* __get_ptr(__node_value_type& __n) { + return _VSTD::addressof(__n.__get_value()); + } +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + static pair __move(__node_value_type& __v) { + return __v.__move(); + } +#endif + +}; + +template , + bool = _KVTypes::__is_map> +struct __hash_map_pointer_types {}; + +template +struct __hash_map_pointer_types<_Tp, _AllocPtr, _KVTypes, true> { + typedef typename _KVTypes::__map_value_type _Mv; + typedef typename __rebind_pointer<_AllocPtr, _Mv>::type + __map_value_type_pointer; + typedef typename __rebind_pointer<_AllocPtr, const _Mv>::type + __const_map_value_type_pointer; +}; + +template ::element_type> +struct __hash_node_types; + +template +struct __hash_node_types<_NodePtr, __hash_node<_Tp, _VoidPtr> > + : public __hash_key_value_types<_Tp>, __hash_map_pointer_types<_Tp, _VoidPtr> + +{ + typedef __hash_key_value_types<_Tp> __base; + +public: + typedef ptrdiff_t difference_type; + typedef size_t size_type; + + typedef typename __rebind_pointer<_NodePtr, void>::type __void_pointer; + + typedef typename pointer_traits<_NodePtr>::element_type __node_type; + typedef _NodePtr __node_pointer; + + typedef __hash_node_base<__node_pointer> __node_base_type; + typedef typename __rebind_pointer<_NodePtr, __node_base_type>::type + __node_base_pointer; + + typedef typename __node_base_type::__next_pointer __next_pointer; + + typedef _Tp __node_value_type; + typedef typename __rebind_pointer<_VoidPtr, __node_value_type>::type + __node_value_type_pointer; + typedef typename __rebind_pointer<_VoidPtr, const __node_value_type>::type + __const_node_value_type_pointer; + +private: + static_assert(!is_const<__node_type>::value, + "_NodePtr should never be a pointer to const"); + static_assert((is_same::element_type, void>::value), + "_VoidPtr does not point to unqualified void type"); + static_assert((is_same::type, + _NodePtr>::value), "_VoidPtr does not rebind to _NodePtr."); +}; + +template +struct __hash_node_types_from_iterator; +template +struct __hash_node_types_from_iterator<__hash_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {}; +template +struct __hash_node_types_from_iterator<__hash_const_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {}; +template +struct __hash_node_types_from_iterator<__hash_local_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {}; +template +struct __hash_node_types_from_iterator<__hash_const_local_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {}; + + +template +struct __make_hash_node_types { + typedef __hash_node<_NodeValueTp, _VoidPtr> _NodeTp; + typedef typename __rebind_pointer<_VoidPtr, _NodeTp>::type _NodePtr; + typedef __hash_node_types<_NodePtr> type; +}; + +template +class _LIBCPP_TEMPLATE_VIS __hash_iterator +{ + typedef __hash_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; + + __next_pointer __node_; + +public: + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef value_type& reference; + typedef typename _NodeTypes::__node_value_type_pointer pointer; + + _LIBCPP_INLINE_VISIBILITY __hash_iterator() _NOEXCEPT : __node_(nullptr) { + _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + } + +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_iterator(const __hash_iterator& __i) + : __node_(__i.__node_) + { + __get_db()->__iterator_copy(this, &__i); + } + + _LIBCPP_INLINE_VISIBILITY + ~__hash_iterator() + { + __get_db()->__erase_i(this); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_iterator& operator=(const __hash_iterator& __i) + { + if (this != &__i) + { + __get_db()->__iterator_copy(this, &__i); + __node_ = __i.__node_; + } + return *this; + } +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + + _LIBCPP_INLINE_VISIBILITY + reference operator*() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container iterator"); + return __node_->__upcast()->__value_; + } + + _LIBCPP_INLINE_VISIBILITY + pointer operator->() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__value_); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_iterator& operator++() { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to increment non-incrementable unordered container iterator"); + __node_ = __node_->__next_; + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __hash_iterator operator++(int) + { + __hash_iterator __t(*this); + ++(*this); + return __t; + } + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(const __hash_iterator& __x, const __hash_iterator& __y) + { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(const __hash_iterator& __x, const __hash_iterator& __y) + {return !(__x == __y);} + +private: +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_iterator(__next_pointer __node, const void* __c) _NOEXCEPT + : __node_(__node) + { + __get_db()->__insert_ic(this, __c); + } +#else + _LIBCPP_INLINE_VISIBILITY + __hash_iterator(__next_pointer __node) _NOEXCEPT + : __node_(__node) + {} +#endif + template friend class __hash_table; + template friend class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; + template friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; + template friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; +}; + +template +class _LIBCPP_TEMPLATE_VIS __hash_const_iterator +{ + static_assert(!is_const::element_type>::value, ""); + typedef __hash_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; + + __next_pointer __node_; + +public: + typedef __hash_iterator<_NodePtr> __non_const_iterator; + + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef const value_type& reference; + typedef typename _NodeTypes::__const_node_value_type_pointer pointer; + + + _LIBCPP_INLINE_VISIBILITY __hash_const_iterator() _NOEXCEPT : __node_(nullptr) { + _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator(const __non_const_iterator& __x) _NOEXCEPT + : __node_(__x.__node_) + { + _LIBCPP_DEBUG_MODE(__get_db()->__iterator_copy(this, &__x)); + } + +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator(const __hash_const_iterator& __i) + : __node_(__i.__node_) + { + __get_db()->__iterator_copy(this, &__i); + } + + _LIBCPP_INLINE_VISIBILITY + ~__hash_const_iterator() + { + __get_db()->__erase_i(this); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator& operator=(const __hash_const_iterator& __i) + { + if (this != &__i) + { + __get_db()->__iterator_copy(this, &__i); + __node_ = __i.__node_; + } + return *this; + } +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + + _LIBCPP_INLINE_VISIBILITY + reference operator*() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container const_iterator"); + return __node_->__upcast()->__value_; + } + _LIBCPP_INLINE_VISIBILITY + pointer operator->() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container const_iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__value_); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator& operator++() { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to increment non-incrementable unordered container const_iterator"); + __node_ = __node_->__next_; + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator operator++(int) + { + __hash_const_iterator __t(*this); + ++(*this); + return __t; + } + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(const __hash_const_iterator& __x, const __hash_const_iterator& __y) + { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(const __hash_const_iterator& __x, const __hash_const_iterator& __y) + {return !(__x == __y);} + +private: +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator(__next_pointer __node, const void* __c) _NOEXCEPT + : __node_(__node) + { + __get_db()->__insert_ic(this, __c); + } +#else + _LIBCPP_INLINE_VISIBILITY + __hash_const_iterator(__next_pointer __node) _NOEXCEPT + : __node_(__node) + {} +#endif + template friend class __hash_table; + template friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; + template friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; +}; + +template +class _LIBCPP_TEMPLATE_VIS __hash_local_iterator +{ + typedef __hash_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; + + __next_pointer __node_; + size_t __bucket_; + size_t __bucket_count_; + +public: + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef value_type& reference; + typedef typename _NodeTypes::__node_value_type_pointer pointer; + + _LIBCPP_INLINE_VISIBILITY __hash_local_iterator() _NOEXCEPT : __node_(nullptr) { + _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + } + +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_local_iterator(const __hash_local_iterator& __i) + : __node_(__i.__node_), + __bucket_(__i.__bucket_), + __bucket_count_(__i.__bucket_count_) + { + __get_db()->__iterator_copy(this, &__i); + } + + _LIBCPP_INLINE_VISIBILITY + ~__hash_local_iterator() + { + __get_db()->__erase_i(this); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_local_iterator& operator=(const __hash_local_iterator& __i) + { + if (this != &__i) + { + __get_db()->__iterator_copy(this, &__i); + __node_ = __i.__node_; + __bucket_ = __i.__bucket_; + __bucket_count_ = __i.__bucket_count_; + } + return *this; + } +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + + _LIBCPP_INLINE_VISIBILITY + reference operator*() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container local_iterator"); + return __node_->__upcast()->__value_; + } + + _LIBCPP_INLINE_VISIBILITY + pointer operator->() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container local_iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__value_); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_local_iterator& operator++() { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to increment non-incrementable unordered container local_iterator"); + __node_ = __node_->__next_; + if (__node_ != nullptr && __constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) + __node_ = nullptr; + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __hash_local_iterator operator++(int) + { + __hash_local_iterator __t(*this); + ++(*this); + return __t; + } + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(const __hash_local_iterator& __x, const __hash_local_iterator& __y) + { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(const __hash_local_iterator& __x, const __hash_local_iterator& __y) + {return !(__x == __y);} + +private: +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_local_iterator(__next_pointer __node, size_t __bucket, + size_t __bucket_count, const void* __c) _NOEXCEPT + : __node_(__node), + __bucket_(__bucket), + __bucket_count_(__bucket_count) + { + __get_db()->__insert_ic(this, __c); + if (__node_ != nullptr) + __node_ = __node_->__next_; + } +#else + _LIBCPP_INLINE_VISIBILITY + __hash_local_iterator(__next_pointer __node, size_t __bucket, + size_t __bucket_count) _NOEXCEPT + : __node_(__node), + __bucket_(__bucket), + __bucket_count_(__bucket_count) + { + if (__node_ != nullptr) + __node_ = __node_->__next_; + } +#endif + template friend class __hash_table; + template friend class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; + template friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; +}; + +template +class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator +{ + typedef __hash_node_types<_ConstNodePtr> _NodeTypes; + typedef _ConstNodePtr __node_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; + + __next_pointer __node_; + size_t __bucket_; + size_t __bucket_count_; + + typedef pointer_traits<__node_pointer> __pointer_traits; + typedef typename __pointer_traits::element_type __node; + typedef typename remove_const<__node>::type __non_const_node; + typedef typename __rebind_pointer<__node_pointer, __non_const_node>::type + __non_const_node_pointer; +public: + typedef __hash_local_iterator<__non_const_node_pointer> + __non_const_iterator; + + typedef forward_iterator_tag iterator_category; + typedef typename _NodeTypes::__node_value_type value_type; + typedef typename _NodeTypes::difference_type difference_type; + typedef const value_type& reference; + typedef typename _NodeTypes::__const_node_value_type_pointer pointer; + + + _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator() _NOEXCEPT : __node_(nullptr) { + _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator(const __non_const_iterator& __x) _NOEXCEPT + : __node_(__x.__node_), + __bucket_(__x.__bucket_), + __bucket_count_(__x.__bucket_count_) + { + _LIBCPP_DEBUG_MODE(__get_db()->__iterator_copy(this, &__x)); + } + +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator(const __hash_const_local_iterator& __i) + : __node_(__i.__node_), + __bucket_(__i.__bucket_), + __bucket_count_(__i.__bucket_count_) + { + __get_db()->__iterator_copy(this, &__i); + } + + _LIBCPP_INLINE_VISIBILITY + ~__hash_const_local_iterator() + { + __get_db()->__erase_i(this); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator& operator=(const __hash_const_local_iterator& __i) + { + if (this != &__i) + { + __get_db()->__iterator_copy(this, &__i); + __node_ = __i.__node_; + __bucket_ = __i.__bucket_; + __bucket_count_ = __i.__bucket_count_; + } + return *this; + } +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + + _LIBCPP_INLINE_VISIBILITY + reference operator*() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); + return __node_->__upcast()->__value_; + } + + _LIBCPP_INLINE_VISIBILITY + pointer operator->() const { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to dereference a non-dereferenceable unordered container const_local_iterator"); + return pointer_traits::pointer_to(__node_->__upcast()->__value_); + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator& operator++() { + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), + "Attempted to increment non-incrementable unordered container const_local_iterator"); + __node_ = __node_->__next_; + if (__node_ != nullptr && __constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) + __node_ = nullptr; + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator operator++(int) + { + __hash_const_local_iterator __t(*this); + ++(*this); + return __t; + } + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) + { + return __x.__node_ == __y.__node_; + } + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(const __hash_const_local_iterator& __x, const __hash_const_local_iterator& __y) + {return !(__x == __y);} + +private: +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator(__next_pointer __node, size_t __bucket, + size_t __bucket_count, const void* __c) _NOEXCEPT + : __node_(__node), + __bucket_(__bucket), + __bucket_count_(__bucket_count) + { + __get_db()->__insert_ic(this, __c); + if (__node_ != nullptr) + __node_ = __node_->__next_; + } +#else + _LIBCPP_INLINE_VISIBILITY + __hash_const_local_iterator(__next_pointer __node, size_t __bucket, + size_t __bucket_count) _NOEXCEPT + : __node_(__node), + __bucket_(__bucket), + __bucket_count_(__bucket_count) + { + if (__node_ != nullptr) + __node_ = __node_->__next_; + } +#endif + template friend class __hash_table; + template friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; +}; + +template +class __bucket_list_deallocator +{ + typedef _Alloc allocator_type; + typedef allocator_traits __alloc_traits; + typedef typename __alloc_traits::size_type size_type; + + __compressed_pair __data_; +public: + typedef typename __alloc_traits::pointer pointer; + + _LIBCPP_INLINE_VISIBILITY + __bucket_list_deallocator() + _NOEXCEPT_(is_nothrow_default_constructible::value) + : __data_(0) {} + + _LIBCPP_INLINE_VISIBILITY + __bucket_list_deallocator(const allocator_type& __a, size_type __size) + _NOEXCEPT_(is_nothrow_copy_constructible::value) + : __data_(__size, __a) {} + +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + __bucket_list_deallocator(__bucket_list_deallocator&& __x) + _NOEXCEPT_(is_nothrow_move_constructible::value) + : __data_(_VSTD::move(__x.__data_)) + { + __x.size() = 0; + } +#endif + + _LIBCPP_INLINE_VISIBILITY + size_type& size() _NOEXCEPT {return __data_.first();} + _LIBCPP_INLINE_VISIBILITY + size_type size() const _NOEXCEPT {return __data_.first();} + + _LIBCPP_INLINE_VISIBILITY + allocator_type& __alloc() _NOEXCEPT {return __data_.second();} + _LIBCPP_INLINE_VISIBILITY + const allocator_type& __alloc() const _NOEXCEPT {return __data_.second();} + + _LIBCPP_INLINE_VISIBILITY + void operator()(pointer __p) _NOEXCEPT + { + __alloc_traits::deallocate(__alloc(), __p, size()); + } +}; + +template class __hash_map_node_destructor; + +template +class __hash_node_destructor +{ + typedef _Alloc allocator_type; + typedef allocator_traits __alloc_traits; + +public: + typedef typename __alloc_traits::pointer pointer; +private: + typedef __hash_node_types _NodeTypes; + + allocator_type& __na_; + + __hash_node_destructor& operator=(const __hash_node_destructor&); + +public: + bool __value_constructed; + + _LIBCPP_INLINE_VISIBILITY + explicit __hash_node_destructor(allocator_type& __na, + bool __constructed = false) _NOEXCEPT + : __na_(__na), + __value_constructed(__constructed) + {} + + _LIBCPP_INLINE_VISIBILITY + void operator()(pointer __p) _NOEXCEPT + { + if (__value_constructed) + __alloc_traits::destroy(__na_, _NodeTypes::__get_ptr(__p->__value_)); + if (__p) + __alloc_traits::deallocate(__na_, __p, 1); + } + + template friend class __hash_map_node_destructor; +}; + +#if _LIBCPP_STD_VER > 14 +template +struct __generic_container_node_destructor; + +template +struct __generic_container_node_destructor<__hash_node<_Tp, _VoidPtr>, _Alloc> + : __hash_node_destructor<_Alloc> +{ + using __hash_node_destructor<_Alloc>::__hash_node_destructor; +}; +#endif + +template +struct __enforce_unordered_container_requirements { +#ifndef _LIBCPP_CXX03_LANG + static_assert(__check_hash_requirements<_Key, _Hash>::value, + "the specified hash does not meet the Hash requirements"); + static_assert(is_copy_constructible<_Equal>::value, + "the specified comparator is required to be copy constructible"); +#endif + typedef int type; +}; + +template +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Equal const&, _Key const&, _Key const&>::value, + "the specified comparator type does not provide a viable const call operator") + _LIBCPP_DIAGNOSE_WARNING(!__invokable<_Hash const&, _Key const&>::value, + "the specified hash functor does not provide a viable const call operator") +#endif +typename __enforce_unordered_container_requirements<_Key, _Hash, _Equal>::type +__diagnose_unordered_container_requirements(int); + +// This dummy overload is used so that the compiler won't emit a spurious +// "no matching function for call to __diagnose_unordered_xxx" diagnostic +// when the overload above causes a hard error. +template +int __diagnose_unordered_container_requirements(void*); + +template +class __hash_table +{ +public: + typedef _Tp value_type; + typedef _Hash hasher; + typedef _Equal key_equal; + typedef _Alloc allocator_type; + +private: + typedef allocator_traits __alloc_traits; + typedef typename + __make_hash_node_types::type + _NodeTypes; +public: + + typedef typename _NodeTypes::__node_value_type __node_value_type; + typedef typename _NodeTypes::__container_value_type __container_value_type; + typedef typename _NodeTypes::key_type key_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef typename __alloc_traits::pointer pointer; + typedef typename __alloc_traits::const_pointer const_pointer; +#ifndef _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE + typedef typename __alloc_traits::size_type size_type; +#else + typedef typename _NodeTypes::size_type size_type; +#endif + typedef typename _NodeTypes::difference_type difference_type; +public: + // Create __node + + typedef typename _NodeTypes::__node_type __node; + typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; + typedef allocator_traits<__node_allocator> __node_traits; + typedef typename _NodeTypes::__void_pointer __void_pointer; + typedef typename _NodeTypes::__node_pointer __node_pointer; + typedef typename _NodeTypes::__node_pointer __node_const_pointer; + typedef typename _NodeTypes::__node_base_type __first_node; + typedef typename _NodeTypes::__node_base_pointer __node_base_pointer; + typedef typename _NodeTypes::__next_pointer __next_pointer; + +private: + // check for sane allocator pointer rebinding semantics. Rebinding the + // allocator for a new pointer type should be exactly the same as rebinding + // the pointer using 'pointer_traits'. + static_assert((is_same<__node_pointer, typename __node_traits::pointer>::value), + "Allocator does not rebind pointers in a sane manner."); + typedef typename __rebind_alloc_helper<__node_traits, __first_node>::type + __node_base_allocator; + typedef allocator_traits<__node_base_allocator> __node_base_traits; + static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value), + "Allocator does not rebind pointers in a sane manner."); + +private: + + typedef typename __rebind_alloc_helper<__node_traits, __next_pointer>::type __pointer_allocator; + typedef __bucket_list_deallocator<__pointer_allocator> __bucket_list_deleter; + typedef unique_ptr<__next_pointer[], __bucket_list_deleter> __bucket_list; + typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits; + typedef typename __bucket_list_deleter::pointer __node_pointer_pointer; + + // --- Member data begin --- + __bucket_list __bucket_list_; + __compressed_pair<__first_node, __node_allocator> __p1_; + __compressed_pair __p2_; + __compressed_pair __p3_; + // --- Member data end --- + + _LIBCPP_INLINE_VISIBILITY + size_type& size() _NOEXCEPT {return __p2_.first();} +public: + _LIBCPP_INLINE_VISIBILITY + size_type size() const _NOEXCEPT {return __p2_.first();} + + _LIBCPP_INLINE_VISIBILITY + hasher& hash_function() _NOEXCEPT {return __p2_.second();} + _LIBCPP_INLINE_VISIBILITY + const hasher& hash_function() const _NOEXCEPT {return __p2_.second();} + + _LIBCPP_INLINE_VISIBILITY + float& max_load_factor() _NOEXCEPT {return __p3_.first();} + _LIBCPP_INLINE_VISIBILITY + float max_load_factor() const _NOEXCEPT {return __p3_.first();} + + _LIBCPP_INLINE_VISIBILITY + key_equal& key_eq() _NOEXCEPT {return __p3_.second();} + _LIBCPP_INLINE_VISIBILITY + const key_equal& key_eq() const _NOEXCEPT {return __p3_.second();} + + _LIBCPP_INLINE_VISIBILITY + __node_allocator& __node_alloc() _NOEXCEPT {return __p1_.second();} + _LIBCPP_INLINE_VISIBILITY + const __node_allocator& __node_alloc() const _NOEXCEPT + {return __p1_.second();} + +public: + typedef __hash_iterator<__node_pointer> iterator; + typedef __hash_const_iterator<__node_pointer> const_iterator; + typedef __hash_local_iterator<__node_pointer> local_iterator; + typedef __hash_const_local_iterator<__node_pointer> const_local_iterator; + + _LIBCPP_INLINE_VISIBILITY + __hash_table() + _NOEXCEPT_( + is_nothrow_default_constructible<__bucket_list>::value && + is_nothrow_default_constructible<__first_node>::value && + is_nothrow_default_constructible<__node_allocator>::value && + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value); + _LIBCPP_INLINE_VISIBILITY + __hash_table(const hasher& __hf, const key_equal& __eql); + __hash_table(const hasher& __hf, const key_equal& __eql, + const allocator_type& __a); + explicit __hash_table(const allocator_type& __a); + __hash_table(const __hash_table& __u); + __hash_table(const __hash_table& __u, const allocator_type& __a); +#ifndef _LIBCPP_CXX03_LANG + __hash_table(__hash_table&& __u) + _NOEXCEPT_( + is_nothrow_move_constructible<__bucket_list>::value && + is_nothrow_move_constructible<__first_node>::value && + is_nothrow_move_constructible<__node_allocator>::value && + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value); + __hash_table(__hash_table&& __u, const allocator_type& __a); +#endif // _LIBCPP_CXX03_LANG + ~__hash_table(); + + __hash_table& operator=(const __hash_table& __u); +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + __hash_table& operator=(__hash_table&& __u) + _NOEXCEPT_( + __node_traits::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable<__node_allocator>::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value); +#endif + template + void __assign_unique(_InputIterator __first, _InputIterator __last); + template + void __assign_multi(_InputIterator __first, _InputIterator __last); + + _LIBCPP_INLINE_VISIBILITY + size_type max_size() const _NOEXCEPT + { + return std::min( + __node_traits::max_size(__node_alloc()), + numeric_limits::max() + ); + } + +private: + _LIBCPP_INLINE_VISIBILITY + __next_pointer __node_insert_multi_prepare(size_t __cp_hash, + value_type& __cp_val); + _LIBCPP_INLINE_VISIBILITY + void __node_insert_multi_perform(__node_pointer __cp, + __next_pointer __pn) _NOEXCEPT; + + _LIBCPP_INLINE_VISIBILITY + __next_pointer __node_insert_unique_prepare(size_t __nd_hash, + value_type& __nd_val); + _LIBCPP_INLINE_VISIBILITY + void __node_insert_unique_perform(__node_pointer __ptr) _NOEXCEPT; + +public: + _LIBCPP_INLINE_VISIBILITY + pair __node_insert_unique(__node_pointer __nd); + _LIBCPP_INLINE_VISIBILITY + iterator __node_insert_multi(__node_pointer __nd); + _LIBCPP_INLINE_VISIBILITY + iterator __node_insert_multi(const_iterator __p, + __node_pointer __nd); + +#ifndef _LIBCPP_CXX03_LANG + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique_key_args(_Key const& __k, _Args&&... __args); + + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique_impl(_Args&&... __args); + + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique(_Pp&& __x) { + return __emplace_unique_extract_key(_VSTD::forward<_Pp>(__x), + __can_extract_key<_Pp, key_type>()); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename enable_if< + __can_extract_map_key<_First, key_type, __container_value_type>::value, + pair + >::type __emplace_unique(_First&& __f, _Second&& __s) { + return __emplace_unique_key_args(__f, _VSTD::forward<_First>(__f), + _VSTD::forward<_Second>(__s)); + } + + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique(_Args&&... __args) { + return __emplace_unique_impl(_VSTD::forward<_Args>(__args)...); + } + + template + _LIBCPP_INLINE_VISIBILITY + pair + __emplace_unique_extract_key(_Pp&& __x, __extract_key_fail_tag) { + return __emplace_unique_impl(_VSTD::forward<_Pp>(__x)); + } + template + _LIBCPP_INLINE_VISIBILITY + pair + __emplace_unique_extract_key(_Pp&& __x, __extract_key_self_tag) { + return __emplace_unique_key_args(__x, _VSTD::forward<_Pp>(__x)); + } + template + _LIBCPP_INLINE_VISIBILITY + pair + __emplace_unique_extract_key(_Pp&& __x, __extract_key_first_tag) { + return __emplace_unique_key_args(__x.first, _VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __emplace_multi(_Args&&... __args); + template + _LIBCPP_INLINE_VISIBILITY + iterator __emplace_hint_multi(const_iterator __p, _Args&&... __args); + + + _LIBCPP_INLINE_VISIBILITY + pair + __insert_unique(__container_value_type&& __x) { + return __emplace_unique_key_args(_NodeTypes::__get_key(__x), _VSTD::move(__x)); + } + + template ::value + >::type> + _LIBCPP_INLINE_VISIBILITY + pair __insert_unique(_Pp&& __x) { + return __emplace_unique(_VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(_Pp&& __x) { + return __emplace_multi(_VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(const_iterator __p, _Pp&& __x) { + return __emplace_hint_multi(__p, _VSTD::forward<_Pp>(__x)); + } + +#else // !defined(_LIBCPP_CXX03_LANG) + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique_key_args(_Key const&, _Args& __args); + + iterator __insert_multi(const __container_value_type& __x); + iterator __insert_multi(const_iterator __p, const __container_value_type& __x); +#endif + + _LIBCPP_INLINE_VISIBILITY + pair __insert_unique(const __container_value_type& __x) { + return __emplace_unique_key_args(_NodeTypes::__get_key(__x), __x); + } + +#if _LIBCPP_STD_VER > 14 + template + _LIBCPP_INLINE_VISIBILITY + _InsertReturnType __node_handle_insert_unique(_NodeHandle&& __nh); + template + _LIBCPP_INLINE_VISIBILITY + iterator __node_handle_insert_unique(const_iterator __hint, + _NodeHandle&& __nh); + template + _LIBCPP_INLINE_VISIBILITY + void __node_handle_merge_unique(_Table& __source); + + template + _LIBCPP_INLINE_VISIBILITY + iterator __node_handle_insert_multi(_NodeHandle&& __nh); + template + _LIBCPP_INLINE_VISIBILITY + iterator __node_handle_insert_multi(const_iterator __hint, _NodeHandle&& __nh); + template + _LIBCPP_INLINE_VISIBILITY + void __node_handle_merge_multi(_Table& __source); + + template + _LIBCPP_INLINE_VISIBILITY + _NodeHandle __node_handle_extract(key_type const& __key); + template + _LIBCPP_INLINE_VISIBILITY + _NodeHandle __node_handle_extract(const_iterator __it); +#endif + + void clear() _NOEXCEPT; + void rehash(size_type __n); + _LIBCPP_INLINE_VISIBILITY void reserve(size_type __n) + {rehash(static_cast(ceil(__n / max_load_factor())));} + + _LIBCPP_INLINE_VISIBILITY + size_type bucket_count() const _NOEXCEPT + { + return __bucket_list_.get_deleter().size(); + } + + _LIBCPP_INLINE_VISIBILITY + iterator begin() _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + iterator end() _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + const_iterator begin() const _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + const_iterator end() const _NOEXCEPT; + + template + _LIBCPP_INLINE_VISIBILITY + size_type bucket(const _Key& __k) const + { + _LIBCPP_ASSERT(bucket_count() > 0, + "unordered container::bucket(key) called when bucket_count() == 0"); + return __constrain_hash(hash_function()(__k), bucket_count()); + } + + template + iterator find(const _Key& __x); + template + const_iterator find(const _Key& __x) const; + + typedef __hash_node_destructor<__node_allocator> _Dp; + typedef unique_ptr<__node, _Dp> __node_holder; + + iterator erase(const_iterator __p); + iterator erase(const_iterator __first, const_iterator __last); + template + size_type __erase_unique(const _Key& __k); + template + size_type __erase_multi(const _Key& __k); + __node_holder remove(const_iterator __p) _NOEXCEPT; + + template + _LIBCPP_INLINE_VISIBILITY + size_type __count_unique(const _Key& __k) const; + template + size_type __count_multi(const _Key& __k) const; + + template + pair + __equal_range_unique(const _Key& __k); + template + pair + __equal_range_unique(const _Key& __k) const; + + template + pair + __equal_range_multi(const _Key& __k); + template + pair + __equal_range_multi(const _Key& __k) const; + + void swap(__hash_table& __u) +#if _LIBCPP_STD_VER <= 11 + _NOEXCEPT_( + __is_nothrow_swappable::value && __is_nothrow_swappable::value + && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value + || __is_nothrow_swappable<__pointer_allocator>::value) + && (!__node_traits::propagate_on_container_swap::value + || __is_nothrow_swappable<__node_allocator>::value) + ); +#else + _NOEXCEPT_(__is_nothrow_swappable::value && __is_nothrow_swappable::value); +#endif + + _LIBCPP_INLINE_VISIBILITY + size_type max_bucket_count() const _NOEXCEPT + {return max_size(); } + size_type bucket_size(size_type __n) const; + _LIBCPP_INLINE_VISIBILITY float load_factor() const _NOEXCEPT + { + size_type __bc = bucket_count(); + return __bc != 0 ? (float)size() / __bc : 0.f; + } + _LIBCPP_INLINE_VISIBILITY void max_load_factor(float __mlf) _NOEXCEPT + { + _LIBCPP_ASSERT(__mlf > 0, + "unordered container::max_load_factor(lf) called with lf <= 0"); + max_load_factor() = _VSTD::max(__mlf, load_factor()); + } + + _LIBCPP_INLINE_VISIBILITY + local_iterator + begin(size_type __n) + { + _LIBCPP_ASSERT(__n < bucket_count(), + "unordered container::begin(n) called with n >= bucket_count()"); +#if _LIBCPP_DEBUG_LEVEL >= 2 + return local_iterator(__bucket_list_[__n], __n, bucket_count(), this); +#else + return local_iterator(__bucket_list_[__n], __n, bucket_count()); +#endif + } + + _LIBCPP_INLINE_VISIBILITY + local_iterator + end(size_type __n) + { + _LIBCPP_ASSERT(__n < bucket_count(), + "unordered container::end(n) called with n >= bucket_count()"); +#if _LIBCPP_DEBUG_LEVEL >= 2 + return local_iterator(nullptr, __n, bucket_count(), this); +#else + return local_iterator(nullptr, __n, bucket_count()); +#endif + } + + _LIBCPP_INLINE_VISIBILITY + const_local_iterator + cbegin(size_type __n) const + { + _LIBCPP_ASSERT(__n < bucket_count(), + "unordered container::cbegin(n) called with n >= bucket_count()"); +#if _LIBCPP_DEBUG_LEVEL >= 2 + return const_local_iterator(__bucket_list_[__n], __n, bucket_count(), this); +#else + return const_local_iterator(__bucket_list_[__n], __n, bucket_count()); +#endif + } + + _LIBCPP_INLINE_VISIBILITY + const_local_iterator + cend(size_type __n) const + { + _LIBCPP_ASSERT(__n < bucket_count(), + "unordered container::cend(n) called with n >= bucket_count()"); +#if _LIBCPP_DEBUG_LEVEL >= 2 + return const_local_iterator(nullptr, __n, bucket_count(), this); +#else + return const_local_iterator(nullptr, __n, bucket_count()); +#endif + } + +#if _LIBCPP_DEBUG_LEVEL >= 2 + + bool __dereferenceable(const const_iterator* __i) const; + bool __decrementable(const const_iterator* __i) const; + bool __addable(const const_iterator* __i, ptrdiff_t __n) const; + bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; + +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + +private: + void __rehash(size_type __n); + +#ifndef _LIBCPP_CXX03_LANG + template + __node_holder __construct_node(_Args&& ...__args); + + template + __node_holder __construct_node_hash(size_t __hash, _First&& __f, _Rest&&... __rest); +#else // _LIBCPP_CXX03_LANG + __node_holder __construct_node(const __container_value_type& __v); + __node_holder __construct_node_hash(size_t __hash, const __container_value_type& __v); +#endif + + + _LIBCPP_INLINE_VISIBILITY + void __copy_assign_alloc(const __hash_table& __u) + {__copy_assign_alloc(__u, integral_constant());} + void __copy_assign_alloc(const __hash_table& __u, true_type); + _LIBCPP_INLINE_VISIBILITY + void __copy_assign_alloc(const __hash_table&, false_type) {} + +#ifndef _LIBCPP_CXX03_LANG + void __move_assign(__hash_table& __u, false_type); + void __move_assign(__hash_table& __u, true_type) + _NOEXCEPT_( + is_nothrow_move_assignable<__node_allocator>::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value); + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__hash_table& __u) + _NOEXCEPT_( + !__node_traits::propagate_on_container_move_assignment::value || + (is_nothrow_move_assignable<__pointer_allocator>::value && + is_nothrow_move_assignable<__node_allocator>::value)) + {__move_assign_alloc(__u, integral_constant());} + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__hash_table& __u, true_type) + _NOEXCEPT_( + is_nothrow_move_assignable<__pointer_allocator>::value && + is_nothrow_move_assignable<__node_allocator>::value) + { + __bucket_list_.get_deleter().__alloc() = + _VSTD::move(__u.__bucket_list_.get_deleter().__alloc()); + __node_alloc() = _VSTD::move(__u.__node_alloc()); + } + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__hash_table&, false_type) _NOEXCEPT {} +#endif // _LIBCPP_CXX03_LANG + + void __deallocate_node(__next_pointer __np) _NOEXCEPT; + __next_pointer __detach() _NOEXCEPT; + + template friend class _LIBCPP_TEMPLATE_VIS unordered_map; + template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; +}; + +template +inline +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table() + _NOEXCEPT_( + is_nothrow_default_constructible<__bucket_list>::value && + is_nothrow_default_constructible<__first_node>::value && + is_nothrow_default_constructible<__node_allocator>::value && + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value) + : __p2_(0), + __p3_(1.0f) +{ +} + +template +inline +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, + const key_equal& __eql) + : __bucket_list_(nullptr, __bucket_list_deleter()), + __p1_(), + __p2_(0, __hf), + __p3_(1.0f, __eql) +{ +} + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, + const key_equal& __eql, + const allocator_type& __a) + : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), + __p1_(__second_tag(), __node_allocator(__a)), + __p2_(0, __hf), + __p3_(1.0f, __eql) +{ +} + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const allocator_type& __a) + : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), + __p1_(__second_tag(), __node_allocator(__a)), + __p2_(0), + __p3_(1.0f) +{ +} + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u) + : __bucket_list_(nullptr, + __bucket_list_deleter(allocator_traits<__pointer_allocator>:: + select_on_container_copy_construction( + __u.__bucket_list_.get_deleter().__alloc()), 0)), + __p1_(__second_tag(), allocator_traits<__node_allocator>:: + select_on_container_copy_construction(__u.__node_alloc())), + __p2_(0, __u.hash_function()), + __p3_(__u.__p3_) +{ +} + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u, + const allocator_type& __a) + : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), + __p1_(__second_tag(), __node_allocator(__a)), + __p2_(0, __u.hash_function()), + __p3_(__u.__p3_) +{ +} + +#ifndef _LIBCPP_CXX03_LANG + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u) + _NOEXCEPT_( + is_nothrow_move_constructible<__bucket_list>::value && + is_nothrow_move_constructible<__first_node>::value && + is_nothrow_move_constructible<__node_allocator>::value && + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value) + : __bucket_list_(_VSTD::move(__u.__bucket_list_)), + __p1_(_VSTD::move(__u.__p1_)), + __p2_(_VSTD::move(__u.__p2_)), + __p3_(_VSTD::move(__u.__p3_)) +{ + if (size() > 0) + { + __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __p1_.first().__ptr(); + __u.__p1_.first().__next_ = nullptr; + __u.size() = 0; + } +} + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, + const allocator_type& __a) + : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), + __p1_(__second_tag(), __node_allocator(__a)), + __p2_(0, _VSTD::move(__u.hash_function())), + __p3_(_VSTD::move(__u.__p3_)) +{ + if (__a == allocator_type(__u.__node_alloc())) + { + __bucket_list_.reset(__u.__bucket_list_.release()); + __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); + __u.__bucket_list_.get_deleter().size() = 0; + if (__u.size() > 0) + { + __p1_.first().__next_ = __u.__p1_.first().__next_; + __u.__p1_.first().__next_ = nullptr; + __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __p1_.first().__ptr(); + size() = __u.size(); + __u.size() = 0; + } + } +} + +#endif // _LIBCPP_CXX03_LANG + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table() +{ +#if defined(_LIBCPP_CXX03_LANG) + static_assert((is_copy_constructible::value), + "Predicate must be copy-constructible."); + static_assert((is_copy_constructible::value), + "Hasher must be copy-constructible."); +#endif + + __deallocate_node(__p1_.first().__next_); +#if _LIBCPP_DEBUG_LEVEL >= 2 + __get_db()->__erase_c(this); +#endif +} + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__copy_assign_alloc( + const __hash_table& __u, true_type) +{ + if (__node_alloc() != __u.__node_alloc()) + { + clear(); + __bucket_list_.reset(); + __bucket_list_.get_deleter().size() = 0; + } + __bucket_list_.get_deleter().__alloc() = __u.__bucket_list_.get_deleter().__alloc(); + __node_alloc() = __u.__node_alloc(); +} + +template +__hash_table<_Tp, _Hash, _Equal, _Alloc>& +__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(const __hash_table& __u) +{ + if (this != &__u) + { + __copy_assign_alloc(__u); + hash_function() = __u.hash_function(); + key_eq() = __u.key_eq(); + max_load_factor() = __u.max_load_factor(); + __assign_multi(__u.begin(), __u.end()); + } + return *this; +} + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate_node(__next_pointer __np) + _NOEXCEPT +{ + __node_allocator& __na = __node_alloc(); + while (__np != nullptr) + { + __next_pointer __next = __np->__next_; +#if _LIBCPP_DEBUG_LEVEL >= 2 + __c_node* __c = __get_db()->__find_c_and_lock(this); + for (__i_node** __p = __c->end_; __p != __c->beg_; ) + { + --__p; + iterator* __i = static_cast((*__p)->__i_); + if (__i->__node_ == __np) + { + (*__p)->__c_ = nullptr; + if (--__c->end_ != __p) + memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); + } + } + __get_db()->unlock(); +#endif + __node_pointer __real_np = __np->__upcast(); + __node_traits::destroy(__na, _NodeTypes::__get_ptr(__real_np->__value_)); + __node_traits::deallocate(__na, __real_np, 1); + __np = __next; + } +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__detach() _NOEXCEPT +{ + size_type __bc = bucket_count(); + for (size_type __i = 0; __i < __bc; ++__i) + __bucket_list_[__i] = nullptr; + size() = 0; + __next_pointer __cache = __p1_.first().__next_; + __p1_.first().__next_ = nullptr; + return __cache; +} + +#ifndef _LIBCPP_CXX03_LANG + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( + __hash_table& __u, true_type) + _NOEXCEPT_( + is_nothrow_move_assignable<__node_allocator>::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value) +{ + clear(); + __bucket_list_.reset(__u.__bucket_list_.release()); + __bucket_list_.get_deleter().size() = __u.__bucket_list_.get_deleter().size(); + __u.__bucket_list_.get_deleter().size() = 0; + __move_assign_alloc(__u); + size() = __u.size(); + hash_function() = _VSTD::move(__u.hash_function()); + max_load_factor() = __u.max_load_factor(); + key_eq() = _VSTD::move(__u.key_eq()); + __p1_.first().__next_ = __u.__p1_.first().__next_; + if (size() > 0) + { + __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __p1_.first().__ptr(); + __u.__p1_.first().__next_ = nullptr; + __u.size() = 0; + } +#if _LIBCPP_DEBUG_LEVEL >= 2 + __get_db()->swap(this, &__u); +#endif +} + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( + __hash_table& __u, false_type) +{ + if (__node_alloc() == __u.__node_alloc()) + __move_assign(__u, true_type()); + else + { + hash_function() = _VSTD::move(__u.hash_function()); + key_eq() = _VSTD::move(__u.key_eq()); + max_load_factor() = __u.max_load_factor(); + if (bucket_count() != 0) + { + __next_pointer __cache = __detach(); +#ifndef _LIBCPP_NO_EXCEPTIONS + try + { +#endif // _LIBCPP_NO_EXCEPTIONS + const_iterator __i = __u.begin(); + while (__cache != nullptr && __u.size() != 0) + { + __cache->__upcast()->__value_ = + _VSTD::move(__u.remove(__i++)->__value_); + __next_pointer __next = __cache->__next_; + __node_insert_multi(__cache->__upcast()); + __cache = __next; + } +#ifndef _LIBCPP_NO_EXCEPTIONS + } + catch (...) + { + __deallocate_node(__cache); + throw; + } +#endif // _LIBCPP_NO_EXCEPTIONS + __deallocate_node(__cache); + } + const_iterator __i = __u.begin(); + while (__u.size() != 0) + { + __node_holder __h = __construct_node(_NodeTypes::__move(__u.remove(__i++)->__value_)); + __node_insert_multi(__h.get()); + __h.release(); + } + } +} + +template +inline +__hash_table<_Tp, _Hash, _Equal, _Alloc>& +__hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(__hash_table&& __u) + _NOEXCEPT_( + __node_traits::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable<__node_allocator>::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value) +{ + __move_assign(__u, integral_constant()); + return *this; +} + +#endif // _LIBCPP_CXX03_LANG + +template +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_unique(_InputIterator __first, + _InputIterator __last) +{ + typedef iterator_traits<_InputIterator> _ITraits; + typedef typename _ITraits::value_type _ItValueType; + static_assert((is_same<_ItValueType, __container_value_type>::value), + "__assign_unique may only be called with the containers value type"); + + if (bucket_count() != 0) + { + __next_pointer __cache = __detach(); +#ifndef _LIBCPP_NO_EXCEPTIONS + try + { +#endif // _LIBCPP_NO_EXCEPTIONS + for (; __cache != nullptr && __first != __last; ++__first) + { + __cache->__upcast()->__value_ = *__first; + __next_pointer __next = __cache->__next_; + __node_insert_unique(__cache->__upcast()); + __cache = __next; + } +#ifndef _LIBCPP_NO_EXCEPTIONS + } + catch (...) + { + __deallocate_node(__cache); + throw; + } +#endif // _LIBCPP_NO_EXCEPTIONS + __deallocate_node(__cache); + } + for (; __first != __last; ++__first) + __insert_unique(*__first); +} + +template +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_multi(_InputIterator __first, + _InputIterator __last) +{ + typedef iterator_traits<_InputIterator> _ITraits; + typedef typename _ITraits::value_type _ItValueType; + static_assert((is_same<_ItValueType, __container_value_type>::value || + is_same<_ItValueType, __node_value_type>::value), + "__assign_multi may only be called with the containers value type" + " or the nodes value type"); + if (bucket_count() != 0) + { + __next_pointer __cache = __detach(); +#ifndef _LIBCPP_NO_EXCEPTIONS + try + { +#endif // _LIBCPP_NO_EXCEPTIONS + for (; __cache != nullptr && __first != __last; ++__first) + { + __cache->__upcast()->__value_ = *__first; + __next_pointer __next = __cache->__next_; + __node_insert_multi(__cache->__upcast()); + __cache = __next; + } +#ifndef _LIBCPP_NO_EXCEPTIONS + } + catch (...) + { + __deallocate_node(__cache); + throw; + } +#endif // _LIBCPP_NO_EXCEPTIONS + __deallocate_node(__cache); + } + for (; __first != __last; ++__first) + __insert_multi(_NodeTypes::__get_value(*__first)); +} + +template +inline +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() _NOEXCEPT +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + return iterator(__p1_.first().__next_, this); +#else + return iterator(__p1_.first().__next_); +#endif +} + +template +inline +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() _NOEXCEPT +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + return iterator(nullptr, this); +#else + return iterator(nullptr); +#endif +} + +template +inline +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() const _NOEXCEPT +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + return const_iterator(__p1_.first().__next_, this); +#else + return const_iterator(__p1_.first().__next_); +#endif +} + +template +inline +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::end() const _NOEXCEPT +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + return const_iterator(nullptr, this); +#else + return const_iterator(nullptr); +#endif +} + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::clear() _NOEXCEPT +{ + if (size() > 0) + { + __deallocate_node(__p1_.first().__next_); + __p1_.first().__next_ = nullptr; + size_type __bc = bucket_count(); + for (size_type __i = 0; __i < __bc; ++__i) + __bucket_list_[__i] = nullptr; + size() = 0; + } +} + + +// Prepare the container for an insertion of the value __value with the hash +// __hash. This does a lookup into the container to see if __value is already +// present, and performs a rehash if necessary. Returns a pointer to the +// existing element if it exists, otherwise nullptr. +// +// Note that this function does forward exceptions if key_eq() throws, and never +// mutates __value or actually inserts into the map. +template +_LIBCPP_INLINE_VISIBILITY +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare( + size_t __hash, value_type& __value) +{ + size_type __bc = bucket_count(); + + if (__bc != 0) + { + size_t __chash = __constrain_hash(__hash, __bc); + __next_pointer __ndptr = __bucket_list_[__chash]; + if (__ndptr != nullptr) + { + for (__ndptr = __ndptr->__next_; __ndptr != nullptr && + __constrain_hash(__ndptr->__hash(), __bc) == __chash; + __ndptr = __ndptr->__next_) + { + if (key_eq()(__ndptr->__upcast()->__value_, __value)) + return __ndptr; + } + } + } + if (size()+1 > __bc * max_load_factor() || __bc == 0) + { + rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), + size_type(ceil(float(size() + 1) / max_load_factor())))); + } + return nullptr; +} + +// Insert the node __nd into the container by pushing it into the right bucket, +// and updating size(). Assumes that __nd->__hash is up-to-date, and that +// rehashing has already occurred and that no element with the same key exists +// in the map. +template +_LIBCPP_INLINE_VISIBILITY +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_perform( + __node_pointer __nd) _NOEXCEPT +{ + size_type __bc = bucket_count(); + size_t __chash = __constrain_hash(__nd->__hash(), __bc); + // insert_after __bucket_list_[__chash], or __first_node if bucket is null + __next_pointer __pn = __bucket_list_[__chash]; + if (__pn == nullptr) + { + __pn =__p1_.first().__ptr(); + __nd->__next_ = __pn->__next_; + __pn->__next_ = __nd->__ptr(); + // fix up __bucket_list_ + __bucket_list_[__chash] = __pn; + if (__nd->__next_ != nullptr) + __bucket_list_[__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr(); + } + else + { + __nd->__next_ = __pn->__next_; + __pn->__next_ = __nd->__ptr(); + } + ++size(); +} + +template +pair::iterator, bool> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __nd) +{ + __nd->__hash_ = hash_function()(__nd->__value_); + __next_pointer __existing_node = + __node_insert_unique_prepare(__nd->__hash(), __nd->__value_); + + // Insert the node, unless it already exists in the container. + bool __inserted = false; + if (__existing_node == nullptr) + { + __node_insert_unique_perform(__nd); + __existing_node = __nd->__ptr(); + __inserted = true; + } +#if _LIBCPP_DEBUG_LEVEL >= 2 + return pair(iterator(__existing_node, this), __inserted); +#else + return pair(iterator(__existing_node), __inserted); +#endif +} + +// Prepare the container for an insertion of the value __cp_val with the hash +// __cp_hash. This does a lookup into the container to see if __cp_value is +// already present, and performs a rehash if necessary. Returns a pointer to the +// last occurance of __cp_val in the map. +// +// Note that this function does forward exceptions if key_eq() throws, and never +// mutates __value or actually inserts into the map. +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__next_pointer +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_prepare( + size_t __cp_hash, value_type& __cp_val) +{ + size_type __bc = bucket_count(); + if (size()+1 > __bc * max_load_factor() || __bc == 0) + { + rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), + size_type(ceil(float(size() + 1) / max_load_factor())))); + __bc = bucket_count(); + } + size_t __chash = __constrain_hash(__cp_hash, __bc); + __next_pointer __pn = __bucket_list_[__chash]; + if (__pn != nullptr) + { + for (bool __found = false; __pn->__next_ != nullptr && + __constrain_hash(__pn->__next_->__hash(), __bc) == __chash; + __pn = __pn->__next_) + { + // __found key_eq() action + // false false loop + // true true loop + // false true set __found to true + // true false break + if (__found != (__pn->__next_->__hash() == __cp_hash && + key_eq()(__pn->__next_->__upcast()->__value_, __cp_val))) + { + if (!__found) + __found = true; + else + break; + } + } + } + return __pn; +} + +// Insert the node __cp into the container after __pn (which is the last node in +// the bucket that compares equal to __cp). Rehashing, and checking for +// uniqueness has already been performed (in __node_insert_multi_prepare), so +// all we need to do is update the bucket and size(). Assumes that __cp->__hash +// is up-to-date. +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform( + __node_pointer __cp, __next_pointer __pn) _NOEXCEPT +{ + size_type __bc = bucket_count(); + size_t __chash = __constrain_hash(__cp->__hash_, __bc); + if (__pn == nullptr) + { + __pn =__p1_.first().__ptr(); + __cp->__next_ = __pn->__next_; + __pn->__next_ = __cp->__ptr(); + // fix up __bucket_list_ + __bucket_list_[__chash] = __pn; + if (__cp->__next_ != nullptr) + __bucket_list_[__constrain_hash(__cp->__next_->__hash(), __bc)] + = __cp->__ptr(); + } + else + { + __cp->__next_ = __pn->__next_; + __pn->__next_ = __cp->__ptr(); + if (__cp->__next_ != nullptr) + { + size_t __nhash = __constrain_hash(__cp->__next_->__hash(), __bc); + if (__nhash != __chash) + __bucket_list_[__nhash] = __cp->__ptr(); + } + } + ++size(); +} + + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __cp) +{ + __cp->__hash_ = hash_function()(__cp->__value_); + __next_pointer __pn = __node_insert_multi_prepare(__cp->__hash(), __cp->__value_); + __node_insert_multi_perform(__cp, __pn); + +#if _LIBCPP_DEBUG_LEVEL >= 2 + return iterator(__cp->__ptr(), this); +#else + return iterator(__cp->__ptr()); +#endif +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi( + const_iterator __p, __node_pointer __cp) +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" + " referring to this unordered container"); +#endif + if (__p != end() && key_eq()(*__p, __cp->__value_)) + { + __next_pointer __np = __p.__node_; + __cp->__hash_ = __np->__hash(); + size_type __bc = bucket_count(); + if (size()+1 > __bc * max_load_factor() || __bc == 0) + { + rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), + size_type(ceil(float(size() + 1) / max_load_factor())))); + __bc = bucket_count(); + } + size_t __chash = __constrain_hash(__cp->__hash_, __bc); + __next_pointer __pp = __bucket_list_[__chash]; + while (__pp->__next_ != __np) + __pp = __pp->__next_; + __cp->__next_ = __np; + __pp->__next_ = static_cast<__next_pointer>(__cp); + ++size(); +#if _LIBCPP_DEBUG_LEVEL >= 2 + return iterator(static_cast<__next_pointer>(__cp), this); +#else + return iterator(static_cast<__next_pointer>(__cp)); +#endif + } + return __node_insert_multi(__cp); +} + + + +#ifndef _LIBCPP_CXX03_LANG +template +template +pair::iterator, bool> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __k, _Args&&... __args) +#else +template +template +pair::iterator, bool> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __k, _Args& __args) +#endif +{ + + size_t __hash = hash_function()(__k); + size_type __bc = bucket_count(); + bool __inserted = false; + __next_pointer __nd; + size_t __chash; + if (__bc != 0) + { + __chash = __constrain_hash(__hash, __bc); + __nd = __bucket_list_[__chash]; + if (__nd != nullptr) + { + for (__nd = __nd->__next_; __nd != nullptr && + (__nd->__hash() == __hash || __constrain_hash(__nd->__hash(), __bc) == __chash); + __nd = __nd->__next_) + { + if (key_eq()(__nd->__upcast()->__value_, __k)) + goto __done; + } + } + } + { +#ifndef _LIBCPP_CXX03_LANG + __node_holder __h = __construct_node_hash(__hash, _VSTD::forward<_Args>(__args)...); +#else + __node_holder __h = __construct_node_hash(__hash, __args); +#endif + if (size()+1 > __bc * max_load_factor() || __bc == 0) + { + rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), + size_type(ceil(float(size() + 1) / max_load_factor())))); + __bc = bucket_count(); + __chash = __constrain_hash(__hash, __bc); + } + // insert_after __bucket_list_[__chash], or __first_node if bucket is null + __next_pointer __pn = __bucket_list_[__chash]; + if (__pn == nullptr) + { + __pn = __p1_.first().__ptr(); + __h->__next_ = __pn->__next_; + __pn->__next_ = __h.get()->__ptr(); + // fix up __bucket_list_ + __bucket_list_[__chash] = __pn; + if (__h->__next_ != nullptr) + __bucket_list_[__constrain_hash(__h->__next_->__hash(), __bc)] + = __h.get()->__ptr(); + } + else + { + __h->__next_ = __pn->__next_; + __pn->__next_ = static_cast<__next_pointer>(__h.get()); + } + __nd = static_cast<__next_pointer>(__h.release()); + // increment size + ++size(); + __inserted = true; + } +__done: +#if _LIBCPP_DEBUG_LEVEL >= 2 + return pair(iterator(__nd, this), __inserted); +#else + return pair(iterator(__nd), __inserted); +#endif +} + +#ifndef _LIBCPP_CXX03_LANG + +template +template +pair::iterator, bool> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_impl(_Args&&... __args) +{ + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + pair __r = __node_insert_unique(__h.get()); + if (__r.second) + __h.release(); + return __r; +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_multi(_Args&&... __args) +{ + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + iterator __r = __node_insert_multi(__h.get()); + __h.release(); + return __r; +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_hint_multi( + const_iterator __p, _Args&&... __args) +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" + " referring to this unordered container"); +#endif + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + iterator __r = __node_insert_multi(__p, __h.get()); + __h.release(); + return __r; +} + +#else // _LIBCPP_CXX03_LANG + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const __container_value_type& __x) +{ + __node_holder __h = __construct_node(__x); + iterator __r = __node_insert_multi(__h.get()); + __h.release(); + return __r; +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const_iterator __p, + const __container_value_type& __x) +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, + "unordered container::insert(const_iterator, lvalue) called with an iterator not" + " referring to this unordered container"); +#endif + __node_holder __h = __construct_node(__x); + iterator __r = __node_insert_multi(__p, __h.get()); + __h.release(); + return __r; +} + +#endif // _LIBCPP_CXX03_LANG + +#if _LIBCPP_STD_VER > 14 +template +template +_LIBCPP_INLINE_VISIBILITY +_InsertReturnType +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_unique( + _NodeHandle&& __nh) +{ + if (__nh.empty()) + return _InsertReturnType{end(), false, _NodeHandle()}; + pair __result = __node_insert_unique(__nh.__ptr_); + if (__result.second) + __nh.__release_ptr(); + return _InsertReturnType{__result.first, __result.second, _VSTD::move(__nh)}; +} + +template +template +_LIBCPP_INLINE_VISIBILITY +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_unique( + const_iterator, _NodeHandle&& __nh) +{ + if (__nh.empty()) + return end(); + pair __result = __node_insert_unique(__nh.__ptr_); + if (__result.second) + __nh.__release_ptr(); + return __result.first; +} + +template +template +_LIBCPP_INLINE_VISIBILITY +_NodeHandle +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_extract( + key_type const& __key) +{ + iterator __i = find(__key); + if (__i == end()) + return _NodeHandle(); + return __node_handle_extract<_NodeHandle>(__i); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +_NodeHandle +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_extract( + const_iterator __p) +{ + allocator_type __alloc(__node_alloc()); + return _NodeHandle(remove(__p).release(), __alloc); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_unique( + _Table& __source) +{ + static_assert(is_same<__node, typename _Table::__node>::value, ""); + + for (typename _Table::iterator __it = __source.begin(); + __it != __source.end();) + { + __node_pointer __src_ptr = __it.__node_->__upcast(); + size_t __hash = hash_function()(__src_ptr->__value_); + __next_pointer __existing_node = + __node_insert_unique_prepare(__hash, __src_ptr->__value_); + auto __prev_iter = __it++; + if (__existing_node == nullptr) + { + (void)__source.remove(__prev_iter).release(); + __src_ptr->__hash_ = __hash; + __node_insert_unique_perform(__src_ptr); + } + } +} + +template +template +_LIBCPP_INLINE_VISIBILITY +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_multi( + _NodeHandle&& __nh) +{ + if (__nh.empty()) + return end(); + iterator __result = __node_insert_multi(__nh.__ptr_); + __nh.__release_ptr(); + return __result; +} + +template +template +_LIBCPP_INLINE_VISIBILITY +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_insert_multi( + const_iterator __hint, _NodeHandle&& __nh) +{ + if (__nh.empty()) + return end(); + iterator __result = __node_insert_multi(__hint, __nh.__ptr_); + __nh.__release_ptr(); + return __result; +} + +template +template +_LIBCPP_INLINE_VISIBILITY +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_multi( + _Table& __source) +{ + static_assert(is_same::value, ""); + + for (typename _Table::iterator __it = __source.begin(); + __it != __source.end();) + { + __node_pointer __src_ptr = __it.__node_->__upcast(); + size_t __src_hash = hash_function()(__src_ptr->__value_); + __next_pointer __pn = + __node_insert_multi_prepare(__src_hash, __src_ptr->__value_); + (void)__source.remove(__it++).release(); + __src_ptr->__hash_ = __src_hash; + __node_insert_multi_perform(__src_ptr, __pn); + } +} +#endif // _LIBCPP_STD_VER > 14 + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::rehash(size_type __n) +_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +{ + if (__n == 1) + __n = 2; + else if (__n & (__n - 1)) + __n = __next_prime(__n); + size_type __bc = bucket_count(); + if (__n > __bc) + __rehash(__n); + else if (__n < __bc) + { + __n = _VSTD::max + ( + __n, + __is_hash_power2(__bc) ? __next_hash_pow2(size_t(ceil(float(size()) / max_load_factor()))) : + __next_prime(size_t(ceil(float(size()) / max_load_factor()))) + ); + if (__n < __bc) + __rehash(__n); + } +} + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __nbc) +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + __get_db()->__invalidate_all(this); +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + __pointer_allocator& __npa = __bucket_list_.get_deleter().__alloc(); + __bucket_list_.reset(__nbc > 0 ? + __pointer_alloc_traits::allocate(__npa, __nbc) : nullptr); + __bucket_list_.get_deleter().size() = __nbc; + if (__nbc > 0) + { + for (size_type __i = 0; __i < __nbc; ++__i) + __bucket_list_[__i] = nullptr; + __next_pointer __pp = __p1_.first().__ptr(); + __next_pointer __cp = __pp->__next_; + if (__cp != nullptr) + { + size_type __chash = __constrain_hash(__cp->__hash(), __nbc); + __bucket_list_[__chash] = __pp; + size_type __phash = __chash; + for (__pp = __cp, __cp = __cp->__next_; __cp != nullptr; + __cp = __pp->__next_) + { + __chash = __constrain_hash(__cp->__hash(), __nbc); + if (__chash == __phash) + __pp = __cp; + else + { + if (__bucket_list_[__chash] == nullptr) + { + __bucket_list_[__chash] = __pp; + __pp = __cp; + __phash = __chash; + } + else + { + __next_pointer __np = __cp; + for (; __np->__next_ != nullptr && + key_eq()(__cp->__upcast()->__value_, + __np->__next_->__upcast()->__value_); + __np = __np->__next_) + ; + __pp->__next_ = __np->__next_; + __np->__next_ = __bucket_list_[__chash]->__next_; + __bucket_list_[__chash]->__next_ = __cp; + + } + } + } + } + } +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) +{ + size_t __hash = hash_function()(__k); + size_type __bc = bucket_count(); + if (__bc != 0) + { + size_t __chash = __constrain_hash(__hash, __bc); + __next_pointer __nd = __bucket_list_[__chash]; + if (__nd != nullptr) + { + for (__nd = __nd->__next_; __nd != nullptr && + (__nd->__hash() == __hash + || __constrain_hash(__nd->__hash(), __bc) == __chash); + __nd = __nd->__next_) + { + if ((__nd->__hash() == __hash) + && key_eq()(__nd->__upcast()->__value_, __k)) +#if _LIBCPP_DEBUG_LEVEL >= 2 + return iterator(__nd, this); +#else + return iterator(__nd); +#endif + } + } + } + return end(); +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) const +{ + size_t __hash = hash_function()(__k); + size_type __bc = bucket_count(); + if (__bc != 0) + { + size_t __chash = __constrain_hash(__hash, __bc); + __next_pointer __nd = __bucket_list_[__chash]; + if (__nd != nullptr) + { + for (__nd = __nd->__next_; __nd != nullptr && + (__hash == __nd->__hash() + || __constrain_hash(__nd->__hash(), __bc) == __chash); + __nd = __nd->__next_) + { + if ((__nd->__hash() == __hash) + && key_eq()(__nd->__upcast()->__value_, __k)) +#if _LIBCPP_DEBUG_LEVEL >= 2 + return const_iterator(__nd, this); +#else + return const_iterator(__nd); +#endif + } + } + + } + return end(); +} + +#ifndef _LIBCPP_CXX03_LANG + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(_Args&& ...__args) +{ + static_assert(!__is_hash_value_type<_Args...>::value, + "Construct cannot be called with a hash value type"); + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), _VSTD::forward<_Args>(__args)...); + __h.get_deleter().__value_constructed = true; + __h->__hash_ = hash_function()(__h->__value_); + __h->__next_ = nullptr; + return __h; +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node_hash( + size_t __hash, _First&& __f, _Rest&& ...__rest) +{ + static_assert(!__is_hash_value_type<_First, _Rest...>::value, + "Construct cannot be called with a hash value type"); + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), + _VSTD::forward<_First>(__f), + _VSTD::forward<_Rest>(__rest)...); + __h.get_deleter().__value_constructed = true; + __h->__hash_ = __hash; + __h->__next_ = nullptr; + return __h; +} + +#else // _LIBCPP_CXX03_LANG + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(const __container_value_type& __v) +{ + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), __v); + __h.get_deleter().__value_constructed = true; + __h->__hash_ = hash_function()(__h->__value_); + __h->__next_ = nullptr; + return _LIBCPP_EXPLICIT_MOVE(__h); // explicitly moved for C++03 +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node_hash(size_t __hash, + const __container_value_type& __v) +{ + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), __v); + __h.get_deleter().__value_constructed = true; + __h->__hash_ = __hash; + __h->__next_ = nullptr; + return _LIBCPP_EXPLICIT_MOVE(__h); // explicitly moved for C++03 +} + +#endif // _LIBCPP_CXX03_LANG + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __p) +{ + __next_pointer __np = __p.__node_; +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, + "unordered container erase(iterator) called with an iterator not" + " referring to this container"); + _LIBCPP_ASSERT(__p != end(), + "unordered container erase(iterator) called with a non-dereferenceable iterator"); + iterator __r(__np, this); +#else + iterator __r(__np); +#endif + ++__r; + remove(__p); + return __r; +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator +__hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __first, + const_iterator __last) +{ +#if _LIBCPP_DEBUG_LEVEL >= 2 + _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__first) == this, + "unodered container::erase(iterator, iterator) called with an iterator not" + " referring to this unodered container"); + _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__last) == this, + "unodered container::erase(iterator, iterator) called with an iterator not" + " referring to this unodered container"); +#endif + for (const_iterator __p = __first; __first != __last; __p = __first) + { + ++__first; + erase(__p); + } + __next_pointer __np = __last.__node_; +#if _LIBCPP_DEBUG_LEVEL >= 2 + return iterator (__np, this); +#else + return iterator (__np); +#endif +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_unique(const _Key& __k) +{ + iterator __i = find(__k); + if (__i == end()) + return 0; + erase(__i); + return 1; +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__erase_multi(const _Key& __k) +{ + size_type __r = 0; + iterator __i = find(__k); + if (__i != end()) + { + iterator __e = end(); + do + { + erase(__i++); + ++__r; + } while (__i != __e && key_eq()(*__i, __k)); + } + return __r; +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder +__hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT +{ + // current node + __next_pointer __cn = __p.__node_; + size_type __bc = bucket_count(); + size_t __chash = __constrain_hash(__cn->__hash(), __bc); + // find previous node + __next_pointer __pn = __bucket_list_[__chash]; + for (; __pn->__next_ != __cn; __pn = __pn->__next_) + ; + // Fix up __bucket_list_ + // if __pn is not in same bucket (before begin is not in same bucket) && + // if __cn->__next_ is not in same bucket (nullptr is not in same bucket) + if (__pn == __p1_.first().__ptr() + || __constrain_hash(__pn->__hash(), __bc) != __chash) + { + if (__cn->__next_ == nullptr + || __constrain_hash(__cn->__next_->__hash(), __bc) != __chash) + __bucket_list_[__chash] = nullptr; + } + // if __cn->__next_ is not in same bucket (nullptr is in same bucket) + if (__cn->__next_ != nullptr) + { + size_t __nhash = __constrain_hash(__cn->__next_->__hash(), __bc); + if (__nhash != __chash) + __bucket_list_[__nhash] = __pn; + } + // remove __cn + __pn->__next_ = __cn->__next_; + __cn->__next_ = nullptr; + --size(); +#if _LIBCPP_DEBUG_LEVEL >= 2 + __c_node* __c = __get_db()->__find_c_and_lock(this); + for (__i_node** __dp = __c->end_; __dp != __c->beg_; ) + { + --__dp; + iterator* __i = static_cast((*__dp)->__i_); + if (__i->__node_ == __cn) + { + (*__dp)->__c_ = nullptr; + if (--__c->end_ != __dp) + memmove(__dp, __dp+1, (__c->end_ - __dp)*sizeof(__i_node*)); + } + } + __get_db()->unlock(); +#endif + return __node_holder(__cn->__upcast(), _Dp(__node_alloc(), true)); +} + +template +template +inline +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_unique(const _Key& __k) const +{ + return static_cast(find(__k) != end()); +} + +template +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__count_multi(const _Key& __k) const +{ + size_type __r = 0; + const_iterator __i = find(__k); + if (__i != end()) + { + const_iterator __e = end(); + do + { + ++__i; + ++__r; + } while (__i != __e && key_eq()(*__i, __k)); + } + return __r; +} + +template +template +pair::iterator, + typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique( + const _Key& __k) +{ + iterator __i = find(__k); + iterator __j = __i; + if (__i != end()) + ++__j; + return pair(__i, __j); +} + +template +template +pair::const_iterator, + typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_unique( + const _Key& __k) const +{ + const_iterator __i = find(__k); + const_iterator __j = __i; + if (__i != end()) + ++__j; + return pair(__i, __j); +} + +template +template +pair::iterator, + typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi( + const _Key& __k) +{ + iterator __i = find(__k); + iterator __j = __i; + if (__i != end()) + { + iterator __e = end(); + do + { + ++__j; + } while (__j != __e && key_eq()(*__j, __k)); + } + return pair(__i, __j); +} + +template +template +pair::const_iterator, + typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator> +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__equal_range_multi( + const _Key& __k) const +{ + const_iterator __i = find(__k); + const_iterator __j = __i; + if (__i != end()) + { + const_iterator __e = end(); + do + { + ++__j; + } while (__j != __e && key_eq()(*__j, __k)); + } + return pair(__i, __j); +} + +template +void +__hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) +#if _LIBCPP_STD_VER <= 11 + _NOEXCEPT_( + __is_nothrow_swappable::value && __is_nothrow_swappable::value + && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value + || __is_nothrow_swappable<__pointer_allocator>::value) + && (!__node_traits::propagate_on_container_swap::value + || __is_nothrow_swappable<__node_allocator>::value) + ) +#else + _NOEXCEPT_(__is_nothrow_swappable::value && __is_nothrow_swappable::value) +#endif +{ + _LIBCPP_ASSERT(__node_traits::propagate_on_container_swap::value || + this->__node_alloc() == __u.__node_alloc(), + "list::swap: Either propagate_on_container_swap must be true" + " or the allocators must compare equal"); + { + __node_pointer_pointer __npp = __bucket_list_.release(); + __bucket_list_.reset(__u.__bucket_list_.release()); + __u.__bucket_list_.reset(__npp); + } + _VSTD::swap(__bucket_list_.get_deleter().size(), __u.__bucket_list_.get_deleter().size()); + __swap_allocator(__bucket_list_.get_deleter().__alloc(), + __u.__bucket_list_.get_deleter().__alloc()); + __swap_allocator(__node_alloc(), __u.__node_alloc()); + _VSTD::swap(__p1_.first().__next_, __u.__p1_.first().__next_); + __p2_.swap(__u.__p2_); + __p3_.swap(__u.__p3_); + if (size() > 0) + __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __p1_.first().__ptr(); + if (__u.size() > 0) + __u.__bucket_list_[__constrain_hash(__u.__p1_.first().__next_->__hash(), __u.bucket_count())] = + __u.__p1_.first().__ptr(); +#if _LIBCPP_DEBUG_LEVEL >= 2 + __get_db()->swap(this, &__u); +#endif +} + +template +typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::size_type +__hash_table<_Tp, _Hash, _Equal, _Alloc>::bucket_size(size_type __n) const +{ + _LIBCPP_ASSERT(__n < bucket_count(), + "unordered container::bucket_size(n) called with n >= bucket_count()"); + __next_pointer __np = __bucket_list_[__n]; + size_type __bc = bucket_count(); + size_type __r = 0; + if (__np != nullptr) + { + for (__np = __np->__next_; __np != nullptr && + __constrain_hash(__np->__hash(), __bc) == __n; + __np = __np->__next_, ++__r) + ; + } + return __r; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(__hash_table<_Tp, _Hash, _Equal, _Alloc>& __x, + __hash_table<_Tp, _Hash, _Equal, _Alloc>& __y) + _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) +{ + __x.swap(__y); +} + +#if _LIBCPP_DEBUG_LEVEL >= 2 + +template +bool +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__dereferenceable(const const_iterator* __i) const +{ + return __i->__node_ != nullptr; +} + +template +bool +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__decrementable(const const_iterator*) const +{ + return false; +} + +template +bool +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__addable(const const_iterator*, ptrdiff_t) const +{ + return false; +} + +template +bool +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__subscriptable(const const_iterator*, ptrdiff_t) const +{ + return false; +} + +#endif // _LIBCPP_DEBUG_LEVEL >= 2 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP__HASH_TABLE diff --git a/include/libc++/__libcpp_version b/include/libc++/__libcpp_version new file mode 100644 index 00000000..5caff40c --- /dev/null +++ b/include/libc++/__libcpp_version @@ -0,0 +1 @@ +10000 diff --git a/include/libc++/__locale b/include/libc++/__locale new file mode 100644 index 00000000..2b6982fc --- /dev/null +++ b/include/libc++/__locale @@ -0,0 +1,1553 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___LOCALE +#define _LIBCPP___LOCALE + +#include <__config> +#include +#include +#include +#include +#include +#include +#include +#if defined(_LIBCPP_MSVCRT_LIKE) +# include +# include +#elif defined(_AIX) +# include +#elif defined(__ANDROID__) +# include +#elif defined(__sun__) +# include +# include +#elif defined(_NEWLIB_VERSION) +# include +#elif (defined(__APPLE__) || defined(__FreeBSD__) \ + || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) +# include +#elif defined(__Fuchsia__) +# include +#elif defined(__wasi__) +// WASI libc uses musl's locales support. +# include +#elif defined(_LIBCPP_HAS_MUSL_LIBC) +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if !defined(_LIBCPP_LOCALE__L_EXTENSIONS) +struct __libcpp_locale_guard { + _LIBCPP_INLINE_VISIBILITY + __libcpp_locale_guard(locale_t& __loc) : __old_loc_(uselocale(__loc)) {} + + _LIBCPP_INLINE_VISIBILITY + ~__libcpp_locale_guard() { + if (__old_loc_) + uselocale(__old_loc_); + } + + locale_t __old_loc_; +private: + __libcpp_locale_guard(__libcpp_locale_guard const&); + __libcpp_locale_guard& operator=(__libcpp_locale_guard const&); +}; +#elif defined(_LIBCPP_MSVCRT_LIKE) +struct __libcpp_locale_guard { + __libcpp_locale_guard(locale_t __l) : + __status(_configthreadlocale(_ENABLE_PER_THREAD_LOCALE)) { + // Setting the locale can be expensive even when the locale given is + // already the current locale, so do an explicit check to see if the + // current locale is already the one we want. + const char* __lc = __setlocale(nullptr); + // If every category is the same, the locale string will simply be the + // locale name, otherwise it will be a semicolon-separated string listing + // each category. In the second case, we know at least one category won't + // be what we want, so we only have to check the first case. + if (strcmp(__l.__get_locale(), __lc) != 0) { + __locale_all = _strdup(__lc); + if (__locale_all == nullptr) + __throw_bad_alloc(); + __setlocale(__l.__get_locale()); + } + } + ~__libcpp_locale_guard() { + // The CRT documentation doesn't explicitly say, but setlocale() does the + // right thing when given a semicolon-separated list of locale settings + // for the different categories in the same format as returned by + // setlocale(LC_ALL, nullptr). + if (__locale_all != nullptr) { + __setlocale(__locale_all); + free(__locale_all); + } + _configthreadlocale(__status); + } + static const char* __setlocale(const char* __locale) { + const char* __new_locale = setlocale(LC_ALL, __locale); + if (__new_locale == nullptr) + __throw_bad_alloc(); + return __new_locale; + } + int __status; + char* __locale_all = nullptr; +}; +#endif + + +class _LIBCPP_TYPE_VIS locale; + +template +_LIBCPP_INLINE_VISIBILITY +bool +has_facet(const locale&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY +const _Facet& +use_facet(const locale&); + +class _LIBCPP_TYPE_VIS locale +{ +public: + // types: + class _LIBCPP_TYPE_VIS facet; + class _LIBCPP_TYPE_VIS id; + + typedef int category; + _LIBCPP_AVAILABILITY_LOCALE_CATEGORY + static const category // values assigned here are for exposition only + none = 0, + collate = LC_COLLATE_MASK, + ctype = LC_CTYPE_MASK, + monetary = LC_MONETARY_MASK, + numeric = LC_NUMERIC_MASK, + time = LC_TIME_MASK, + messages = LC_MESSAGES_MASK, + all = collate | ctype | monetary | numeric | time | messages; + + // construct/copy/destroy: + locale() _NOEXCEPT; + locale(const locale&) _NOEXCEPT; + explicit locale(const char*); + explicit locale(const string&); + locale(const locale&, const char*, category); + locale(const locale&, const string&, category); + template + _LIBCPP_INLINE_VISIBILITY locale(const locale&, _Facet*); + locale(const locale&, const locale&, category); + + ~locale(); + + const locale& operator=(const locale&) _NOEXCEPT; + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS + locale combine(const locale&) const; + + // locale operations: + string name() const; + bool operator==(const locale&) const; + bool operator!=(const locale& __y) const {return !(*this == __y);} + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS + bool operator()(const basic_string<_CharT, _Traits, _Allocator>&, + const basic_string<_CharT, _Traits, _Allocator>&) const; + + // global locale objects: + static locale global(const locale&); + static const locale& classic(); + +private: + class __imp; + __imp* __locale_; + + void __install_ctor(const locale&, facet*, long); + static locale& __global(); + bool has_facet(id&) const; + const facet* use_facet(id&) const; + + template friend bool has_facet(const locale&) _NOEXCEPT; + template friend const _Facet& use_facet(const locale&); +}; + +class _LIBCPP_TYPE_VIS locale::facet + : public __shared_count +{ +protected: + _LIBCPP_INLINE_VISIBILITY + explicit facet(size_t __refs = 0) + : __shared_count(static_cast(__refs)-1) {} + + virtual ~facet(); + +// facet(const facet&) = delete; // effectively done in __shared_count +// void operator=(const facet&) = delete; +private: + virtual void __on_zero_shared() _NOEXCEPT; +}; + +class _LIBCPP_TYPE_VIS locale::id +{ + once_flag __flag_; + int32_t __id_; + + static int32_t __next_id; +public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR id() :__id_(0) {} +private: + void __init(); + void operator=(const id&); // = delete; + id(const id&); // = delete; +public: // only needed for tests + long __get(); + + friend class locale; + friend class locale::__imp; +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +locale::locale(const locale& __other, _Facet* __f) +{ + __install_ctor(__other, __f, __f ? __f->id.__get() : 0); +} + +template +locale +locale::combine(const locale& __other) const +{ + if (!_VSTD::has_facet<_Facet>(__other)) + __throw_runtime_error("locale::combine: locale missing facet"); + + return locale(*this, &const_cast<_Facet&>(_VSTD::use_facet<_Facet>(__other))); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +has_facet(const locale& __l) _NOEXCEPT +{ + return __l.has_facet(_Facet::id); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +const _Facet& +use_facet(const locale& __l) +{ + return static_cast(*__l.use_facet(_Facet::id)); +} + +// template class collate; + +template +class _LIBCPP_TEMPLATE_VIS collate + : public locale::facet +{ +public: + typedef _CharT char_type; + typedef basic_string string_type; + + _LIBCPP_INLINE_VISIBILITY + explicit collate(size_t __refs = 0) + : locale::facet(__refs) {} + + _LIBCPP_INLINE_VISIBILITY + int compare(const char_type* __lo1, const char_type* __hi1, + const char_type* __lo2, const char_type* __hi2) const + { + return do_compare(__lo1, __hi1, __lo2, __hi2); + } + + // FIXME(EricWF): The _LIBCPP_ALWAYS_INLINE is needed on Windows to work + // around a dllimport bug that expects an external instantiation. + _LIBCPP_INLINE_VISIBILITY + _LIBCPP_ALWAYS_INLINE + string_type transform(const char_type* __lo, const char_type* __hi) const + { + return do_transform(__lo, __hi); + } + + _LIBCPP_INLINE_VISIBILITY + long hash(const char_type* __lo, const char_type* __hi) const + { + return do_hash(__lo, __hi); + } + + static locale::id id; + +protected: + ~collate(); + virtual int do_compare(const char_type* __lo1, const char_type* __hi1, + const char_type* __lo2, const char_type* __hi2) const; + virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const + {return string_type(__lo, __hi);} + virtual long do_hash(const char_type* __lo, const char_type* __hi) const; +}; + +template locale::id collate<_CharT>::id; + +template +collate<_CharT>::~collate() +{ +} + +template +int +collate<_CharT>::do_compare(const char_type* __lo1, const char_type* __hi1, + const char_type* __lo2, const char_type* __hi2) const +{ + for (; __lo2 != __hi2; ++__lo1, ++__lo2) + { + if (__lo1 == __hi1 || *__lo1 < *__lo2) + return -1; + if (*__lo2 < *__lo1) + return 1; + } + return __lo1 != __hi1; +} + +template +long +collate<_CharT>::do_hash(const char_type* __lo, const char_type* __hi) const +{ + size_t __h = 0; + const size_t __sr = __CHAR_BIT__ * sizeof(size_t) - 8; + const size_t __mask = size_t(0xF) << (__sr + 4); + for(const char_type* __p = __lo; __p != __hi; ++__p) + { + __h = (__h << 4) + static_cast(*__p); + size_t __g = __h & __mask; + __h ^= __g | (__g >> __sr); + } + return static_cast(__h); +} + +_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS collate) +_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS collate) + +// template class collate_byname; + +template class _LIBCPP_TEMPLATE_VIS collate_byname; + +template <> +class _LIBCPP_TYPE_VIS collate_byname + : public collate +{ + locale_t __l; +public: + typedef char char_type; + typedef basic_string string_type; + + explicit collate_byname(const char* __n, size_t __refs = 0); + explicit collate_byname(const string& __n, size_t __refs = 0); + +protected: + ~collate_byname(); + virtual int do_compare(const char_type* __lo1, const char_type* __hi1, + const char_type* __lo2, const char_type* __hi2) const; + virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const; +}; + +template <> +class _LIBCPP_TYPE_VIS collate_byname + : public collate +{ + locale_t __l; +public: + typedef wchar_t char_type; + typedef basic_string string_type; + + explicit collate_byname(const char* __n, size_t __refs = 0); + explicit collate_byname(const string& __n, size_t __refs = 0); + +protected: + ~collate_byname(); + + virtual int do_compare(const char_type* __lo1, const char_type* __hi1, + const char_type* __lo2, const char_type* __hi2) const; + virtual string_type do_transform(const char_type* __lo, const char_type* __hi) const; +}; + +template +bool +locale::operator()(const basic_string<_CharT, _Traits, _Allocator>& __x, + const basic_string<_CharT, _Traits, _Allocator>& __y) const +{ + return _VSTD::use_facet<_VSTD::collate<_CharT> >(*this).compare( + __x.data(), __x.data() + __x.size(), + __y.data(), __y.data() + __y.size()) < 0; +} + +// template class ctype + +class _LIBCPP_TYPE_VIS ctype_base +{ +public: +#if defined(__GLIBC__) + typedef unsigned short mask; + static const mask space = _ISspace; + static const mask print = _ISprint; + static const mask cntrl = _IScntrl; + static const mask upper = _ISupper; + static const mask lower = _ISlower; + static const mask alpha = _ISalpha; + static const mask digit = _ISdigit; + static const mask punct = _ISpunct; + static const mask xdigit = _ISxdigit; + static const mask blank = _ISblank; +#if defined(__mips__) + static const mask __regex_word = static_cast(_ISbit(15)); +#else + static const mask __regex_word = 0x80; +#endif +#elif defined(_LIBCPP_MSVCRT_LIKE) + typedef unsigned short mask; + static const mask space = _SPACE; + static const mask print = _BLANK|_PUNCT|_ALPHA|_DIGIT; + static const mask cntrl = _CONTROL; + static const mask upper = _UPPER; + static const mask lower = _LOWER; + static const mask alpha = _ALPHA; + static const mask digit = _DIGIT; + static const mask punct = _PUNCT; + static const mask xdigit = _HEX; + static const mask blank = _BLANK; + static const mask __regex_word = 0x80; +# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_PRINT +#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__EMSCRIPTEN__) || defined(__NetBSD__) +# ifdef __APPLE__ + typedef __uint32_t mask; +# elif defined(__FreeBSD__) + typedef unsigned long mask; +# elif defined(__EMSCRIPTEN__) || defined(__NetBSD__) + typedef unsigned short mask; +# endif + static const mask space = _CTYPE_S; + static const mask print = _CTYPE_R; + static const mask cntrl = _CTYPE_C; + static const mask upper = _CTYPE_U; + static const mask lower = _CTYPE_L; + static const mask alpha = _CTYPE_A; + static const mask digit = _CTYPE_D; + static const mask punct = _CTYPE_P; + static const mask xdigit = _CTYPE_X; + +# if defined(__NetBSD__) + static const mask blank = _CTYPE_BL; + // NetBSD defines classes up to 0x2000 + // see sys/ctype_bits.h, _CTYPE_Q + static const mask __regex_word = 0x8000; +# else + static const mask blank = _CTYPE_B; + static const mask __regex_word = 0x80; +# endif +#elif defined(__sun__) || defined(_AIX) + typedef unsigned int mask; + static const mask space = _ISSPACE; + static const mask print = _ISPRINT; + static const mask cntrl = _ISCNTRL; + static const mask upper = _ISUPPER; + static const mask lower = _ISLOWER; + static const mask alpha = _ISALPHA; + static const mask digit = _ISDIGIT; + static const mask punct = _ISPUNCT; + static const mask xdigit = _ISXDIGIT; + static const mask blank = _ISBLANK; + static const mask __regex_word = 0x80; +#elif defined(_NEWLIB_VERSION) + // Same type as Newlib's _ctype_ array in newlib/libc/include/ctype.h. + typedef char mask; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask cntrl = _C; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask punct = _P; + static const mask xdigit = _X | _N; + static const mask blank = _B; + static const mask __regex_word = 0x80; +# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_PRINT +# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_ALPHA +# define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_XDIGIT +#else + typedef unsigned long mask; + static const mask space = 1<<0; + static const mask print = 1<<1; + static const mask cntrl = 1<<2; + static const mask upper = 1<<3; + static const mask lower = 1<<4; + static const mask alpha = 1<<5; + static const mask digit = 1<<6; + static const mask punct = 1<<7; + static const mask xdigit = 1<<8; + static const mask blank = 1<<9; + static const mask __regex_word = 1<<10; +#endif + static const mask alnum = alpha | digit; + static const mask graph = alnum | punct; + + _LIBCPP_INLINE_VISIBILITY ctype_base() {} +}; + +template class _LIBCPP_TEMPLATE_VIS ctype; + +template <> +class _LIBCPP_TYPE_VIS ctype + : public locale::facet, + public ctype_base +{ +public: + typedef wchar_t char_type; + + _LIBCPP_INLINE_VISIBILITY + explicit ctype(size_t __refs = 0) + : locale::facet(__refs) {} + + _LIBCPP_INLINE_VISIBILITY + bool is(mask __m, char_type __c) const + { + return do_is(__m, __c); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* is(const char_type* __low, const char_type* __high, mask* __vec) const + { + return do_is(__low, __high, __vec); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* scan_is(mask __m, const char_type* __low, const char_type* __high) const + { + return do_scan_is(__m, __low, __high); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* scan_not(mask __m, const char_type* __low, const char_type* __high) const + { + return do_scan_not(__m, __low, __high); + } + + _LIBCPP_INLINE_VISIBILITY + char_type toupper(char_type __c) const + { + return do_toupper(__c); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* toupper(char_type* __low, const char_type* __high) const + { + return do_toupper(__low, __high); + } + + _LIBCPP_INLINE_VISIBILITY + char_type tolower(char_type __c) const + { + return do_tolower(__c); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* tolower(char_type* __low, const char_type* __high) const + { + return do_tolower(__low, __high); + } + + _LIBCPP_INLINE_VISIBILITY + char_type widen(char __c) const + { + return do_widen(__c); + } + + _LIBCPP_INLINE_VISIBILITY + const char* widen(const char* __low, const char* __high, char_type* __to) const + { + return do_widen(__low, __high, __to); + } + + _LIBCPP_INLINE_VISIBILITY + char narrow(char_type __c, char __dfault) const + { + return do_narrow(__c, __dfault); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const + { + return do_narrow(__low, __high, __dfault, __to); + } + + static locale::id id; + +protected: + ~ctype(); + virtual bool do_is(mask __m, char_type __c) const; + virtual const char_type* do_is(const char_type* __low, const char_type* __high, mask* __vec) const; + virtual const char_type* do_scan_is(mask __m, const char_type* __low, const char_type* __high) const; + virtual const char_type* do_scan_not(mask __m, const char_type* __low, const char_type* __high) const; + virtual char_type do_toupper(char_type) const; + virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; + virtual char_type do_tolower(char_type) const; + virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; + virtual char_type do_widen(char) const; + virtual const char* do_widen(const char* __low, const char* __high, char_type* __dest) const; + virtual char do_narrow(char_type, char __dfault) const; + virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const; +}; + +template <> +class _LIBCPP_TYPE_VIS ctype + : public locale::facet, public ctype_base +{ + const mask* __tab_; + bool __del_; +public: + typedef char char_type; + + explicit ctype(const mask* __tab = 0, bool __del = false, size_t __refs = 0); + + _LIBCPP_INLINE_VISIBILITY + bool is(mask __m, char_type __c) const + { + return isascii(__c) ? (__tab_[static_cast(__c)] & __m) !=0 : false; + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* is(const char_type* __low, const char_type* __high, mask* __vec) const + { + for (; __low != __high; ++__low, ++__vec) + *__vec = isascii(*__low) ? __tab_[static_cast(*__low)] : 0; + return __low; + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* scan_is (mask __m, const char_type* __low, const char_type* __high) const + { + for (; __low != __high; ++__low) + if (isascii(*__low) && (__tab_[static_cast(*__low)] & __m)) + break; + return __low; + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* scan_not(mask __m, const char_type* __low, const char_type* __high) const + { + for (; __low != __high; ++__low) + if (!(isascii(*__low) && (__tab_[static_cast(*__low)] & __m))) + break; + return __low; + } + + _LIBCPP_INLINE_VISIBILITY + char_type toupper(char_type __c) const + { + return do_toupper(__c); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* toupper(char_type* __low, const char_type* __high) const + { + return do_toupper(__low, __high); + } + + _LIBCPP_INLINE_VISIBILITY + char_type tolower(char_type __c) const + { + return do_tolower(__c); + } + + _LIBCPP_INLINE_VISIBILITY + const char_type* tolower(char_type* __low, const char_type* __high) const + { + return do_tolower(__low, __high); + } + + _LIBCPP_INLINE_VISIBILITY + char_type widen(char __c) const + { + return do_widen(__c); + } + + _LIBCPP_INLINE_VISIBILITY + const char* widen(const char* __low, const char* __high, char_type* __to) const + { + return do_widen(__low, __high, __to); + } + + _LIBCPP_INLINE_VISIBILITY + char narrow(char_type __c, char __dfault) const + { + return do_narrow(__c, __dfault); + } + + _LIBCPP_INLINE_VISIBILITY + const char* narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const + { + return do_narrow(__low, __high, __dfault, __to); + } + + static locale::id id; + +#ifdef _CACHED_RUNES + static const size_t table_size = _CACHED_RUNES; +#else + static const size_t table_size = 256; // FIXME: Don't hardcode this. +#endif + _LIBCPP_INLINE_VISIBILITY const mask* table() const _NOEXCEPT {return __tab_;} + static const mask* classic_table() _NOEXCEPT; +#if defined(__GLIBC__) || defined(__EMSCRIPTEN__) + static const int* __classic_upper_table() _NOEXCEPT; + static const int* __classic_lower_table() _NOEXCEPT; +#endif +#if defined(__NetBSD__) + static const short* __classic_upper_table() _NOEXCEPT; + static const short* __classic_lower_table() _NOEXCEPT; +#endif + +protected: + ~ctype(); + virtual char_type do_toupper(char_type __c) const; + virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; + virtual char_type do_tolower(char_type __c) const; + virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; + virtual char_type do_widen(char __c) const; + virtual const char* do_widen(const char* __low, const char* __high, char_type* __to) const; + virtual char do_narrow(char_type __c, char __dfault) const; + virtual const char* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __to) const; +}; + +// template class ctype_byname; + +template class _LIBCPP_TEMPLATE_VIS ctype_byname; + +template <> +class _LIBCPP_TYPE_VIS ctype_byname + : public ctype +{ + locale_t __l; + +public: + explicit ctype_byname(const char*, size_t = 0); + explicit ctype_byname(const string&, size_t = 0); + +protected: + ~ctype_byname(); + virtual char_type do_toupper(char_type) const; + virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; + virtual char_type do_tolower(char_type) const; + virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; +}; + +template <> +class _LIBCPP_TYPE_VIS ctype_byname + : public ctype +{ + locale_t __l; + +public: + explicit ctype_byname(const char*, size_t = 0); + explicit ctype_byname(const string&, size_t = 0); + +protected: + ~ctype_byname(); + virtual bool do_is(mask __m, char_type __c) const; + virtual const char_type* do_is(const char_type* __low, const char_type* __high, mask* __vec) const; + virtual const char_type* do_scan_is(mask __m, const char_type* __low, const char_type* __high) const; + virtual const char_type* do_scan_not(mask __m, const char_type* __low, const char_type* __high) const; + virtual char_type do_toupper(char_type) const; + virtual const char_type* do_toupper(char_type* __low, const char_type* __high) const; + virtual char_type do_tolower(char_type) const; + virtual const char_type* do_tolower(char_type* __low, const char_type* __high) const; + virtual char_type do_widen(char) const; + virtual const char* do_widen(const char* __low, const char* __high, char_type* __dest) const; + virtual char do_narrow(char_type, char __dfault) const; + virtual const char_type* do_narrow(const char_type* __low, const char_type* __high, char __dfault, char* __dest) const; +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isspace(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::space, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isprint(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::print, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +iscntrl(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::cntrl, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isupper(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::upper, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +islower(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::lower, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isalpha(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::alpha, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isdigit(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::digit, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +ispunct(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::punct, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isxdigit(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::xdigit, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isalnum(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::alnum, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +isgraph(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).is(ctype_base::graph, __c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_CharT +toupper(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).toupper(__c); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_CharT +tolower(_CharT __c, const locale& __loc) +{ + return use_facet >(__loc).tolower(__c); +} + +// codecvt_base + +class _LIBCPP_TYPE_VIS codecvt_base +{ +public: + _LIBCPP_INLINE_VISIBILITY codecvt_base() {} + enum result {ok, partial, error, noconv}; +}; + +// template class codecvt; + +template class _LIBCPP_TEMPLATE_VIS codecvt; + +// template <> class codecvt + +template <> +class _LIBCPP_TYPE_VIS codecvt + : public locale::facet, + public codecvt_base +{ +public: + typedef char intern_type; + typedef char extern_type; + typedef mbstate_t state_type; + + _LIBCPP_INLINE_VISIBILITY + explicit codecvt(size_t __refs = 0) + : locale::facet(__refs) {} + + _LIBCPP_INLINE_VISIBILITY + result out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_unshift(__st, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const + { + return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + int encoding() const _NOEXCEPT + { + return do_encoding(); + } + + _LIBCPP_INLINE_VISIBILITY + bool always_noconv() const _NOEXCEPT + { + return do_always_noconv(); + } + + _LIBCPP_INLINE_VISIBILITY + int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const + { + return do_length(__st, __frm, __end, __mx); + } + + _LIBCPP_INLINE_VISIBILITY + int max_length() const _NOEXCEPT + { + return do_max_length(); + } + + static locale::id id; + +protected: + _LIBCPP_INLINE_VISIBILITY + explicit codecvt(const char*, size_t __refs = 0) + : locale::facet(__refs) {} + + ~codecvt(); + + virtual result do_out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual result do_in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; + virtual result do_unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual int do_encoding() const _NOEXCEPT; + virtual bool do_always_noconv() const _NOEXCEPT; + virtual int do_length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const; + virtual int do_max_length() const _NOEXCEPT; +}; + +// template <> class codecvt + +template <> +class _LIBCPP_TYPE_VIS codecvt + : public locale::facet, + public codecvt_base +{ + locale_t __l; +public: + typedef wchar_t intern_type; + typedef char extern_type; + typedef mbstate_t state_type; + + explicit codecvt(size_t __refs = 0); + + _LIBCPP_INLINE_VISIBILITY + result out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_unshift(__st, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const + { + return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + int encoding() const _NOEXCEPT + { + return do_encoding(); + } + + _LIBCPP_INLINE_VISIBILITY + bool always_noconv() const _NOEXCEPT + { + return do_always_noconv(); + } + + _LIBCPP_INLINE_VISIBILITY + int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const + { + return do_length(__st, __frm, __end, __mx); + } + + _LIBCPP_INLINE_VISIBILITY + int max_length() const _NOEXCEPT + { + return do_max_length(); + } + + static locale::id id; + +protected: + explicit codecvt(const char*, size_t __refs = 0); + + ~codecvt(); + + virtual result do_out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual result do_in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; + virtual result do_unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual int do_encoding() const _NOEXCEPT; + virtual bool do_always_noconv() const _NOEXCEPT; + virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const; + virtual int do_max_length() const _NOEXCEPT; +}; + +// template <> class codecvt + +template <> +class _LIBCPP_TYPE_VIS codecvt + : public locale::facet, + public codecvt_base +{ +public: + typedef char16_t intern_type; + typedef char extern_type; + typedef mbstate_t state_type; + + _LIBCPP_INLINE_VISIBILITY + explicit codecvt(size_t __refs = 0) + : locale::facet(__refs) {} + + _LIBCPP_INLINE_VISIBILITY + result out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_unshift(__st, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const + { + return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + int encoding() const _NOEXCEPT + { + return do_encoding(); + } + + _LIBCPP_INLINE_VISIBILITY + bool always_noconv() const _NOEXCEPT + { + return do_always_noconv(); + } + + _LIBCPP_INLINE_VISIBILITY + int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const + { + return do_length(__st, __frm, __end, __mx); + } + + _LIBCPP_INLINE_VISIBILITY + int max_length() const _NOEXCEPT + { + return do_max_length(); + } + + static locale::id id; + +protected: + _LIBCPP_INLINE_VISIBILITY + explicit codecvt(const char*, size_t __refs = 0) + : locale::facet(__refs) {} + + ~codecvt(); + + virtual result do_out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual result do_in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; + virtual result do_unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual int do_encoding() const _NOEXCEPT; + virtual bool do_always_noconv() const _NOEXCEPT; + virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const; + virtual int do_max_length() const _NOEXCEPT; +}; + +// template <> class codecvt + +template <> +class _LIBCPP_TYPE_VIS codecvt + : public locale::facet, + public codecvt_base +{ +public: + typedef char32_t intern_type; + typedef char extern_type; + typedef mbstate_t state_type; + + _LIBCPP_INLINE_VISIBILITY + explicit codecvt(size_t __refs = 0) + : locale::facet(__refs) {} + + _LIBCPP_INLINE_VISIBILITY + result out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_out(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const + { + return do_unshift(__st, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + result in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const + { + return do_in(__st, __frm, __frm_end, __frm_nxt, __to, __to_end, __to_nxt); + } + + _LIBCPP_INLINE_VISIBILITY + int encoding() const _NOEXCEPT + { + return do_encoding(); + } + + _LIBCPP_INLINE_VISIBILITY + bool always_noconv() const _NOEXCEPT + { + return do_always_noconv(); + } + + _LIBCPP_INLINE_VISIBILITY + int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const + { + return do_length(__st, __frm, __end, __mx); + } + + _LIBCPP_INLINE_VISIBILITY + int max_length() const _NOEXCEPT + { + return do_max_length(); + } + + static locale::id id; + +protected: + _LIBCPP_INLINE_VISIBILITY + explicit codecvt(const char*, size_t __refs = 0) + : locale::facet(__refs) {} + + ~codecvt(); + + virtual result do_out(state_type& __st, + const intern_type* __frm, const intern_type* __frm_end, const intern_type*& __frm_nxt, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual result do_in(state_type& __st, + const extern_type* __frm, const extern_type* __frm_end, const extern_type*& __frm_nxt, + intern_type* __to, intern_type* __to_end, intern_type*& __to_nxt) const; + virtual result do_unshift(state_type& __st, + extern_type* __to, extern_type* __to_end, extern_type*& __to_nxt) const; + virtual int do_encoding() const _NOEXCEPT; + virtual bool do_always_noconv() const _NOEXCEPT; + virtual int do_length(state_type&, const extern_type* __frm, const extern_type* __end, size_t __mx) const; + virtual int do_max_length() const _NOEXCEPT; +}; + +// template class codecvt_byname + +template +class _LIBCPP_TEMPLATE_VIS codecvt_byname + : public codecvt<_InternT, _ExternT, _StateT> +{ +public: + _LIBCPP_INLINE_VISIBILITY + explicit codecvt_byname(const char* __nm, size_t __refs = 0) + : codecvt<_InternT, _ExternT, _StateT>(__nm, __refs) {} + _LIBCPP_INLINE_VISIBILITY + explicit codecvt_byname(const string& __nm, size_t __refs = 0) + : codecvt<_InternT, _ExternT, _StateT>(__nm.c_str(), __refs) {} +protected: + ~codecvt_byname(); +}; + +template +codecvt_byname<_InternT, _ExternT, _StateT>::~codecvt_byname() +{ +} + +_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname) +_LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS codecvt_byname) + +template +struct __narrow_to_utf8 +{ + template + _OutputIterator + operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const; +}; + +template <> +struct __narrow_to_utf8<8> +{ + template + _LIBCPP_INLINE_VISIBILITY + _OutputIterator + operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const + { + for (; __wb < __we; ++__wb, ++__s) + *__s = *__wb; + return __s; + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS __narrow_to_utf8<16> + : public codecvt +{ + _LIBCPP_INLINE_VISIBILITY + __narrow_to_utf8() : codecvt(1) {} + + _LIBCPP_EXPORTED_FROM_ABI ~__narrow_to_utf8(); + + template + _LIBCPP_INLINE_VISIBILITY + _OutputIterator + operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const + { + result __r = ok; + mbstate_t __mb; + while (__wb < __we && __r != error) + { + const int __sz = 32; + char __buf[__sz]; + char* __bn; + const char16_t* __wn = (const char16_t*)__wb; + __r = do_out(__mb, (const char16_t*)__wb, (const char16_t*)__we, __wn, + __buf, __buf+__sz, __bn); + if (__r == codecvt_base::error || __wn == (const char16_t*)__wb) + __throw_runtime_error("locale not supported"); + for (const char* __p = __buf; __p < __bn; ++__p, ++__s) + *__s = *__p; + __wb = (const _CharT*)__wn; + } + return __s; + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS __narrow_to_utf8<32> + : public codecvt +{ + _LIBCPP_INLINE_VISIBILITY + __narrow_to_utf8() : codecvt(1) {} + + _LIBCPP_EXPORTED_FROM_ABI ~__narrow_to_utf8(); + + template + _LIBCPP_INLINE_VISIBILITY + _OutputIterator + operator()(_OutputIterator __s, const _CharT* __wb, const _CharT* __we) const + { + result __r = ok; + mbstate_t __mb; + while (__wb < __we && __r != error) + { + const int __sz = 32; + char __buf[__sz]; + char* __bn; + const char32_t* __wn = (const char32_t*)__wb; + __r = do_out(__mb, (const char32_t*)__wb, (const char32_t*)__we, __wn, + __buf, __buf+__sz, __bn); + if (__r == codecvt_base::error || __wn == (const char32_t*)__wb) + __throw_runtime_error("locale not supported"); + for (const char* __p = __buf; __p < __bn; ++__p, ++__s) + *__s = *__p; + __wb = (const _CharT*)__wn; + } + return __s; + } +}; + +template +struct __widen_from_utf8 +{ + template + _OutputIterator + operator()(_OutputIterator __s, const char* __nb, const char* __ne) const; +}; + +template <> +struct __widen_from_utf8<8> +{ + template + _LIBCPP_INLINE_VISIBILITY + _OutputIterator + operator()(_OutputIterator __s, const char* __nb, const char* __ne) const + { + for (; __nb < __ne; ++__nb, ++__s) + *__s = *__nb; + return __s; + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS __widen_from_utf8<16> + : public codecvt +{ + _LIBCPP_INLINE_VISIBILITY + __widen_from_utf8() : codecvt(1) {} + + _LIBCPP_EXPORTED_FROM_ABI ~__widen_from_utf8(); + + template + _LIBCPP_INLINE_VISIBILITY + _OutputIterator + operator()(_OutputIterator __s, const char* __nb, const char* __ne) const + { + result __r = ok; + mbstate_t __mb; + while (__nb < __ne && __r != error) + { + const int __sz = 32; + char16_t __buf[__sz]; + char16_t* __bn; + const char* __nn = __nb; + __r = do_in(__mb, __nb, __ne - __nb > __sz ? __nb+__sz : __ne, __nn, + __buf, __buf+__sz, __bn); + if (__r == codecvt_base::error || __nn == __nb) + __throw_runtime_error("locale not supported"); + for (const char16_t* __p = __buf; __p < __bn; ++__p, ++__s) + *__s = (wchar_t)*__p; + __nb = __nn; + } + return __s; + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS __widen_from_utf8<32> + : public codecvt +{ + _LIBCPP_INLINE_VISIBILITY + __widen_from_utf8() : codecvt(1) {} + + _LIBCPP_EXPORTED_FROM_ABI ~__widen_from_utf8(); + + template + _LIBCPP_INLINE_VISIBILITY + _OutputIterator + operator()(_OutputIterator __s, const char* __nb, const char* __ne) const + { + result __r = ok; + mbstate_t __mb; + while (__nb < __ne && __r != error) + { + const int __sz = 32; + char32_t __buf[__sz]; + char32_t* __bn; + const char* __nn = __nb; + __r = do_in(__mb, __nb, __ne - __nb > __sz ? __nb+__sz : __ne, __nn, + __buf, __buf+__sz, __bn); + if (__r == codecvt_base::error || __nn == __nb) + __throw_runtime_error("locale not supported"); + for (const char32_t* __p = __buf; __p < __bn; ++__p, ++__s) + *__s = (wchar_t)*__p; + __nb = __nn; + } + return __s; + } +}; + +// template class numpunct + +template class _LIBCPP_TEMPLATE_VIS numpunct; + +template <> +class _LIBCPP_TYPE_VIS numpunct + : public locale::facet +{ +public: + typedef char char_type; + typedef basic_string string_type; + + explicit numpunct(size_t __refs = 0); + + _LIBCPP_INLINE_VISIBILITY char_type decimal_point() const {return do_decimal_point();} + _LIBCPP_INLINE_VISIBILITY char_type thousands_sep() const {return do_thousands_sep();} + _LIBCPP_INLINE_VISIBILITY string grouping() const {return do_grouping();} + _LIBCPP_INLINE_VISIBILITY string_type truename() const {return do_truename();} + _LIBCPP_INLINE_VISIBILITY string_type falsename() const {return do_falsename();} + + static locale::id id; + +protected: + ~numpunct(); + virtual char_type do_decimal_point() const; + virtual char_type do_thousands_sep() const; + virtual string do_grouping() const; + virtual string_type do_truename() const; + virtual string_type do_falsename() const; + + char_type __decimal_point_; + char_type __thousands_sep_; + string __grouping_; +}; + +template <> +class _LIBCPP_TYPE_VIS numpunct + : public locale::facet +{ +public: + typedef wchar_t char_type; + typedef basic_string string_type; + + explicit numpunct(size_t __refs = 0); + + _LIBCPP_INLINE_VISIBILITY char_type decimal_point() const {return do_decimal_point();} + _LIBCPP_INLINE_VISIBILITY char_type thousands_sep() const {return do_thousands_sep();} + _LIBCPP_INLINE_VISIBILITY string grouping() const {return do_grouping();} + _LIBCPP_INLINE_VISIBILITY string_type truename() const {return do_truename();} + _LIBCPP_INLINE_VISIBILITY string_type falsename() const {return do_falsename();} + + static locale::id id; + +protected: + ~numpunct(); + virtual char_type do_decimal_point() const; + virtual char_type do_thousands_sep() const; + virtual string do_grouping() const; + virtual string_type do_truename() const; + virtual string_type do_falsename() const; + + char_type __decimal_point_; + char_type __thousands_sep_; + string __grouping_; +}; + +// template class numpunct_byname + +template class _LIBCPP_TEMPLATE_VIS numpunct_byname; + +template <> +class _LIBCPP_TYPE_VIS numpunct_byname +: public numpunct +{ +public: + typedef char char_type; + typedef basic_string string_type; + + explicit numpunct_byname(const char* __nm, size_t __refs = 0); + explicit numpunct_byname(const string& __nm, size_t __refs = 0); + +protected: + ~numpunct_byname(); + +private: + void __init(const char*); +}; + +template <> +class _LIBCPP_TYPE_VIS numpunct_byname +: public numpunct +{ +public: + typedef wchar_t char_type; + typedef basic_string string_type; + + explicit numpunct_byname(const char* __nm, size_t __refs = 0); + explicit numpunct_byname(const string& __nm, size_t __refs = 0); + +protected: + ~numpunct_byname(); + +private: + void __init(const char*); +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___LOCALE diff --git a/include/libc++/__mutex_base b/include/libc++/__mutex_base new file mode 100644 index 00000000..ed75c823 --- /dev/null +++ b/include/libc++/__mutex_base @@ -0,0 +1,541 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___MUTEX_BASE +#define _LIBCPP___MUTEX_BASE + +#include <__config> +#include +#include +#include <__threading_support> + +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +#ifndef _LIBCPP_HAS_NO_THREADS + +#ifndef _LIBCPP_THREAD_SAFETY_ANNOTATION +# ifdef _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS +# define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) __attribute__((x)) +# else +# define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) +# endif +#endif // _LIBCPP_THREAD_SAFETY_ANNOTATION + + +class _LIBCPP_TYPE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(capability("mutex")) mutex +{ + __libcpp_mutex_t __m_ = _LIBCPP_MUTEX_INITIALIZER; + +public: + _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR mutex() = default; + + mutex(const mutex&) = delete; + mutex& operator=(const mutex&) = delete; + +#if defined(_LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION) + ~mutex() = default; +#else + ~mutex() _NOEXCEPT; +#endif + + void lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability()); + bool try_lock() _NOEXCEPT _LIBCPP_THREAD_SAFETY_ANNOTATION(try_acquire_capability(true)); + void unlock() _NOEXCEPT _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()); + + typedef __libcpp_mutex_t* native_handle_type; + _LIBCPP_INLINE_VISIBILITY native_handle_type native_handle() {return &__m_;} +}; + +static_assert(is_nothrow_default_constructible::value, + "the default constructor for std::mutex must be nothrow"); + +struct _LIBCPP_TYPE_VIS defer_lock_t { explicit defer_lock_t() = default; }; +struct _LIBCPP_TYPE_VIS try_to_lock_t { explicit try_to_lock_t() = default; }; +struct _LIBCPP_TYPE_VIS adopt_lock_t { explicit adopt_lock_t() = default; }; + +#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY) + +extern _LIBCPP_EXPORTED_FROM_ABI const defer_lock_t defer_lock; +extern _LIBCPP_EXPORTED_FROM_ABI const try_to_lock_t try_to_lock; +extern _LIBCPP_EXPORTED_FROM_ABI const adopt_lock_t adopt_lock; + +#else + +/* _LIBCPP_INLINE_VAR */ constexpr defer_lock_t defer_lock = defer_lock_t(); +/* _LIBCPP_INLINE_VAR */ constexpr try_to_lock_t try_to_lock = try_to_lock_t(); +/* _LIBCPP_INLINE_VAR */ constexpr adopt_lock_t adopt_lock = adopt_lock_t(); + +#endif + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_THREAD_SAFETY_ANNOTATION(scoped_lockable) +lock_guard +{ +public: + typedef _Mutex mutex_type; + +private: + mutex_type& __m_; +public: + + _LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY + explicit lock_guard(mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability(__m)) + : __m_(__m) {__m_.lock();} + + _LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY + lock_guard(mutex_type& __m, adopt_lock_t) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m)) + : __m_(__m) {} + _LIBCPP_INLINE_VISIBILITY + ~lock_guard() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) {__m_.unlock();} + +private: + lock_guard(lock_guard const&) _LIBCPP_EQUAL_DELETE; + lock_guard& operator=(lock_guard const&) _LIBCPP_EQUAL_DELETE; +}; + +template +class _LIBCPP_TEMPLATE_VIS unique_lock +{ +public: + typedef _Mutex mutex_type; + +private: + mutex_type* __m_; + bool __owns_; + +public: + _LIBCPP_INLINE_VISIBILITY + unique_lock() _NOEXCEPT : __m_(nullptr), __owns_(false) {} + _LIBCPP_INLINE_VISIBILITY + explicit unique_lock(mutex_type& __m) + : __m_(_VSTD::addressof(__m)), __owns_(true) {__m_->lock();} + _LIBCPP_INLINE_VISIBILITY + unique_lock(mutex_type& __m, defer_lock_t) _NOEXCEPT + : __m_(_VSTD::addressof(__m)), __owns_(false) {} + _LIBCPP_INLINE_VISIBILITY + unique_lock(mutex_type& __m, try_to_lock_t) + : __m_(_VSTD::addressof(__m)), __owns_(__m.try_lock()) {} + _LIBCPP_INLINE_VISIBILITY + unique_lock(mutex_type& __m, adopt_lock_t) + : __m_(_VSTD::addressof(__m)), __owns_(true) {} + template + _LIBCPP_INLINE_VISIBILITY + unique_lock(mutex_type& __m, const chrono::time_point<_Clock, _Duration>& __t) + : __m_(_VSTD::addressof(__m)), __owns_(__m.try_lock_until(__t)) {} + template + _LIBCPP_INLINE_VISIBILITY + unique_lock(mutex_type& __m, const chrono::duration<_Rep, _Period>& __d) + : __m_(_VSTD::addressof(__m)), __owns_(__m.try_lock_for(__d)) {} + _LIBCPP_INLINE_VISIBILITY + ~unique_lock() + { + if (__owns_) + __m_->unlock(); + } + +private: + unique_lock(unique_lock const&); // = delete; + unique_lock& operator=(unique_lock const&); // = delete; + +public: +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + unique_lock(unique_lock&& __u) _NOEXCEPT + : __m_(__u.__m_), __owns_(__u.__owns_) + {__u.__m_ = nullptr; __u.__owns_ = false;} + _LIBCPP_INLINE_VISIBILITY + unique_lock& operator=(unique_lock&& __u) _NOEXCEPT + { + if (__owns_) + __m_->unlock(); + __m_ = __u.__m_; + __owns_ = __u.__owns_; + __u.__m_ = nullptr; + __u.__owns_ = false; + return *this; + } + +#endif // _LIBCPP_CXX03_LANG + + void lock(); + bool try_lock(); + + template + bool try_lock_for(const chrono::duration<_Rep, _Period>& __d); + template + bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t); + + void unlock(); + + _LIBCPP_INLINE_VISIBILITY + void swap(unique_lock& __u) _NOEXCEPT + { + _VSTD::swap(__m_, __u.__m_); + _VSTD::swap(__owns_, __u.__owns_); + } + _LIBCPP_INLINE_VISIBILITY + mutex_type* release() _NOEXCEPT + { + mutex_type* __m = __m_; + __m_ = nullptr; + __owns_ = false; + return __m; + } + + _LIBCPP_INLINE_VISIBILITY + bool owns_lock() const _NOEXCEPT {return __owns_;} + _LIBCPP_INLINE_VISIBILITY + _LIBCPP_EXPLICIT + operator bool () const _NOEXCEPT {return __owns_;} + _LIBCPP_INLINE_VISIBILITY + mutex_type* mutex() const _NOEXCEPT {return __m_;} +}; + +template +void +unique_lock<_Mutex>::lock() +{ + if (__m_ == nullptr) + __throw_system_error(EPERM, "unique_lock::lock: references null mutex"); + if (__owns_) + __throw_system_error(EDEADLK, "unique_lock::lock: already locked"); + __m_->lock(); + __owns_ = true; +} + +template +bool +unique_lock<_Mutex>::try_lock() +{ + if (__m_ == nullptr) + __throw_system_error(EPERM, "unique_lock::try_lock: references null mutex"); + if (__owns_) + __throw_system_error(EDEADLK, "unique_lock::try_lock: already locked"); + __owns_ = __m_->try_lock(); + return __owns_; +} + +template +template +bool +unique_lock<_Mutex>::try_lock_for(const chrono::duration<_Rep, _Period>& __d) +{ + if (__m_ == nullptr) + __throw_system_error(EPERM, "unique_lock::try_lock_for: references null mutex"); + if (__owns_) + __throw_system_error(EDEADLK, "unique_lock::try_lock_for: already locked"); + __owns_ = __m_->try_lock_for(__d); + return __owns_; +} + +template +template +bool +unique_lock<_Mutex>::try_lock_until(const chrono::time_point<_Clock, _Duration>& __t) +{ + if (__m_ == nullptr) + __throw_system_error(EPERM, "unique_lock::try_lock_until: references null mutex"); + if (__owns_) + __throw_system_error(EDEADLK, "unique_lock::try_lock_until: already locked"); + __owns_ = __m_->try_lock_until(__t); + return __owns_; +} + +template +void +unique_lock<_Mutex>::unlock() +{ + if (!__owns_) + __throw_system_error(EPERM, "unique_lock::unlock: not locked"); + __m_->unlock(); + __owns_ = false; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) _NOEXCEPT + {__x.swap(__y);} + +//enum class cv_status +_LIBCPP_DECLARE_STRONG_ENUM(cv_status) +{ + no_timeout, + timeout +}; +_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status) + +class _LIBCPP_TYPE_VIS condition_variable +{ + __libcpp_condvar_t __cv_ = _LIBCPP_CONDVAR_INITIALIZER; +public: + _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR condition_variable() _NOEXCEPT = default; + +#ifdef _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION + ~condition_variable() = default; +#else + ~condition_variable(); +#endif + + condition_variable(const condition_variable&) = delete; + condition_variable& operator=(const condition_variable&) = delete; + + void notify_one() _NOEXCEPT; + void notify_all() _NOEXCEPT; + + void wait(unique_lock& __lk) _NOEXCEPT; + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS + void wait(unique_lock& __lk, _Predicate __pred); + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS + cv_status + wait_until(unique_lock& __lk, + const chrono::time_point<_Clock, _Duration>& __t); + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS + bool + wait_until(unique_lock& __lk, + const chrono::time_point<_Clock, _Duration>& __t, + _Predicate __pred); + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS + cv_status + wait_for(unique_lock& __lk, + const chrono::duration<_Rep, _Period>& __d); + + template + bool + _LIBCPP_INLINE_VISIBILITY + wait_for(unique_lock& __lk, + const chrono::duration<_Rep, _Period>& __d, + _Predicate __pred); + + typedef __libcpp_condvar_t* native_handle_type; + _LIBCPP_INLINE_VISIBILITY native_handle_type native_handle() {return &__cv_;} + +private: + void __do_timed_wait(unique_lock& __lk, + chrono::time_point) _NOEXCEPT; +#if defined(_LIBCPP_HAS_COND_CLOCKWAIT) + void __do_timed_wait(unique_lock& __lk, + chrono::time_point) _NOEXCEPT; +#endif + template + void __do_timed_wait(unique_lock& __lk, + chrono::time_point<_Clock, chrono::nanoseconds>) _NOEXCEPT; +}; +#endif // !_LIBCPP_HAS_NO_THREADS + +template +inline _LIBCPP_INLINE_VISIBILITY +typename enable_if +< + is_floating_point<_Rep>::value, + chrono::nanoseconds +>::type +__safe_nanosecond_cast(chrono::duration<_Rep, _Period> __d) +{ + using namespace chrono; + using __ratio = ratio_divide<_Period, nano>; + using __ns_rep = nanoseconds::rep; + _Rep __result_float = __d.count() * __ratio::num / __ratio::den; + + _Rep __result_max = numeric_limits<__ns_rep>::max(); + if (__result_float >= __result_max) { + return nanoseconds::max(); + } + + _Rep __result_min = numeric_limits<__ns_rep>::min(); + if (__result_float <= __result_min) { + return nanoseconds::min(); + } + + return nanoseconds(static_cast<__ns_rep>(__result_float)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +typename enable_if +< + !is_floating_point<_Rep>::value, + chrono::nanoseconds +>::type +__safe_nanosecond_cast(chrono::duration<_Rep, _Period> __d) +{ + using namespace chrono; + if (__d.count() == 0) { + return nanoseconds(0); + } + + using __ratio = ratio_divide<_Period, nano>; + using __ns_rep = nanoseconds::rep; + __ns_rep __result_max = std::numeric_limits<__ns_rep>::max(); + if (__d.count() > 0 && __d.count() > __result_max / __ratio::num) { + return nanoseconds::max(); + } + + __ns_rep __result_min = std::numeric_limits<__ns_rep>::min(); + if (__d.count() < 0 && __d.count() < __result_min / __ratio::num) { + return nanoseconds::min(); + } + + __ns_rep __result = __d.count() * __ratio::num / __ratio::den; + if (__result == 0) { + return nanoseconds(1); + } + + return nanoseconds(__result); +} + +#ifndef _LIBCPP_HAS_NO_THREADS +template +void +condition_variable::wait(unique_lock& __lk, _Predicate __pred) +{ + while (!__pred()) + wait(__lk); +} + +template +cv_status +condition_variable::wait_until(unique_lock& __lk, + const chrono::time_point<_Clock, _Duration>& __t) +{ + using namespace chrono; + using __clock_tp_ns = time_point<_Clock, nanoseconds>; + + typename _Clock::time_point __now = _Clock::now(); + if (__t <= __now) + return cv_status::timeout; + + __clock_tp_ns __t_ns = __clock_tp_ns(__safe_nanosecond_cast(__t.time_since_epoch())); + + __do_timed_wait(__lk, __t_ns); + return _Clock::now() < __t ? cv_status::no_timeout : cv_status::timeout; +} + +template +bool +condition_variable::wait_until(unique_lock& __lk, + const chrono::time_point<_Clock, _Duration>& __t, + _Predicate __pred) +{ + while (!__pred()) + { + if (wait_until(__lk, __t) == cv_status::timeout) + return __pred(); + } + return true; +} + +template +cv_status +condition_variable::wait_for(unique_lock& __lk, + const chrono::duration<_Rep, _Period>& __d) +{ + using namespace chrono; + if (__d <= __d.zero()) + return cv_status::timeout; + using __ns_rep = nanoseconds::rep; + steady_clock::time_point __c_now = steady_clock::now(); + +#if defined(_LIBCPP_HAS_COND_CLOCKWAIT) + using __clock_tp_ns = time_point; + __ns_rep __now_count_ns = __safe_nanosecond_cast(__c_now.time_since_epoch()).count(); +#else + using __clock_tp_ns = time_point; + __ns_rep __now_count_ns = __safe_nanosecond_cast(system_clock::now().time_since_epoch()).count(); +#endif + + __ns_rep __d_ns_count = __safe_nanosecond_cast(__d).count(); + + if (__now_count_ns > numeric_limits<__ns_rep>::max() - __d_ns_count) { + __do_timed_wait(__lk, __clock_tp_ns::max()); + } else { + __do_timed_wait(__lk, __clock_tp_ns(nanoseconds(__now_count_ns + __d_ns_count))); + } + + return steady_clock::now() - __c_now < __d ? cv_status::no_timeout : + cv_status::timeout; +} + +template +inline +bool +condition_variable::wait_for(unique_lock& __lk, + const chrono::duration<_Rep, _Period>& __d, + _Predicate __pred) +{ + return wait_until(__lk, chrono::steady_clock::now() + __d, + _VSTD::move(__pred)); +} + +#if defined(_LIBCPP_HAS_COND_CLOCKWAIT) +inline +void +condition_variable::__do_timed_wait(unique_lock& __lk, + chrono::time_point __tp) _NOEXCEPT +{ + using namespace chrono; + if (!__lk.owns_lock()) + __throw_system_error(EPERM, + "condition_variable::timed wait: mutex not locked"); + nanoseconds __d = __tp.time_since_epoch(); + timespec __ts; + seconds __s = duration_cast(__d); + using __ts_sec = decltype(__ts.tv_sec); + const __ts_sec __ts_sec_max = numeric_limits<__ts_sec>::max(); + if (__s.count() < __ts_sec_max) + { + __ts.tv_sec = static_cast<__ts_sec>(__s.count()); + __ts.tv_nsec = (__d - __s).count(); + } + else + { + __ts.tv_sec = __ts_sec_max; + __ts.tv_nsec = giga::num - 1; + } + int __ec = pthread_cond_clockwait(&__cv_, __lk.mutex()->native_handle(), CLOCK_MONOTONIC, &__ts); + if (__ec != 0 && __ec != ETIMEDOUT) + __throw_system_error(__ec, "condition_variable timed_wait failed"); +} +#endif // _LIBCPP_HAS_COND_CLOCKWAIT + +template +inline +void +condition_variable::__do_timed_wait(unique_lock& __lk, + chrono::time_point<_Clock, chrono::nanoseconds> __tp) _NOEXCEPT +{ + wait_for(__lk, __tp - _Clock::now()); +} + +#endif // !_LIBCPP_HAS_NO_THREADS + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___MUTEX_BASE diff --git a/include/libc++/__node_handle b/include/libc++/__node_handle new file mode 100644 index 00000000..be1fe17a --- /dev/null +++ b/include/libc++/__node_handle @@ -0,0 +1,208 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___NODE_HANDLE +#define _LIBCPP___NODE_HANDLE + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER > 14 + +// Specialized in __tree & __hash_table for their _NodeType. +template +struct __generic_container_node_destructor; + +template class _MapOrSetSpecifics> +class _LIBCPP_TEMPLATE_VIS __basic_node_handle + : public _MapOrSetSpecifics< + _NodeType, + __basic_node_handle<_NodeType, _Alloc, _MapOrSetSpecifics>> +{ + template + friend class __tree; + template + friend class __hash_table; + friend struct _MapOrSetSpecifics< + _NodeType, __basic_node_handle<_NodeType, _Alloc, _MapOrSetSpecifics>>; + + typedef allocator_traits<_Alloc> __alloc_traits; + typedef typename __rebind_pointer::type + __node_pointer_type; + +public: + typedef _Alloc allocator_type; + +private: + __node_pointer_type __ptr_ = nullptr; + optional __alloc_; + + _LIBCPP_INLINE_VISIBILITY + void __release_ptr() + { + __ptr_ = nullptr; + __alloc_ = _VSTD::nullopt; + } + + _LIBCPP_INLINE_VISIBILITY + void __destroy_node_pointer() + { + if (__ptr_ != nullptr) + { + typedef typename __allocator_traits_rebind< + allocator_type, _NodeType>::type __node_alloc_type; + __node_alloc_type __alloc(*__alloc_); + __generic_container_node_destructor<_NodeType, __node_alloc_type>( + __alloc, true)(__ptr_); + __ptr_ = nullptr; + } + } + + _LIBCPP_INLINE_VISIBILITY + __basic_node_handle(__node_pointer_type __ptr, + allocator_type const& __alloc) + : __ptr_(__ptr), __alloc_(__alloc) + { + } + +public: + _LIBCPP_INLINE_VISIBILITY + __basic_node_handle() = default; + + _LIBCPP_INLINE_VISIBILITY + __basic_node_handle(__basic_node_handle&& __other) noexcept + : __ptr_(__other.__ptr_), + __alloc_(_VSTD::move(__other.__alloc_)) + { + __other.__ptr_ = nullptr; + __other.__alloc_ = _VSTD::nullopt; + } + + _LIBCPP_INLINE_VISIBILITY + __basic_node_handle& operator=(__basic_node_handle&& __other) + { + _LIBCPP_ASSERT( + __alloc_ == _VSTD::nullopt || + __alloc_traits::propagate_on_container_move_assignment::value || + __alloc_ == __other.__alloc_, + "node_type with incompatible allocator passed to " + "node_type::operator=(node_type&&)"); + + __destroy_node_pointer(); + __ptr_ = __other.__ptr_; + + if (__alloc_traits::propagate_on_container_move_assignment::value || + __alloc_ == _VSTD::nullopt) + __alloc_ = _VSTD::move(__other.__alloc_); + + __other.__ptr_ = nullptr; + __other.__alloc_ = _VSTD::nullopt; + + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + allocator_type get_allocator() const { return *__alloc_; } + + _LIBCPP_INLINE_VISIBILITY + explicit operator bool() const { return __ptr_ != nullptr; } + + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY + bool empty() const { return __ptr_ == nullptr; } + + _LIBCPP_INLINE_VISIBILITY + void swap(__basic_node_handle& __other) noexcept( + __alloc_traits::propagate_on_container_swap::value || + __alloc_traits::is_always_equal::value) + { + using _VSTD::swap; + swap(__ptr_, __other.__ptr_); + if (__alloc_traits::propagate_on_container_swap::value || + __alloc_ == _VSTD::nullopt || __other.__alloc_ == _VSTD::nullopt) + swap(__alloc_, __other.__alloc_); + } + + _LIBCPP_INLINE_VISIBILITY + friend void swap(__basic_node_handle& __a, __basic_node_handle& __b) + noexcept(noexcept(__a.swap(__b))) { __a.swap(__b); } + + _LIBCPP_INLINE_VISIBILITY + ~__basic_node_handle() + { + __destroy_node_pointer(); + } +}; + +template +struct __set_node_handle_specifics +{ + typedef typename _NodeType::__node_value_type value_type; + + _LIBCPP_INLINE_VISIBILITY + value_type& value() const + { + return static_cast<_Derived const*>(this)->__ptr_->__value_; + } +}; + +template +struct __map_node_handle_specifics +{ + typedef typename _NodeType::__node_value_type::key_type key_type; + typedef typename _NodeType::__node_value_type::mapped_type mapped_type; + + _LIBCPP_INLINE_VISIBILITY + key_type& key() const + { + return static_cast<_Derived const*>(this)-> + __ptr_->__value_.__ref().first; + } + + _LIBCPP_INLINE_VISIBILITY + mapped_type& mapped() const + { + return static_cast<_Derived const*>(this)-> + __ptr_->__value_.__ref().second; + } +}; + +template +using __set_node_handle = + __basic_node_handle< _NodeType, _Alloc, __set_node_handle_specifics>; + +template +using __map_node_handle = + __basic_node_handle< _NodeType, _Alloc, __map_node_handle_specifics>; + +template +struct _LIBCPP_TEMPLATE_VIS __insert_return_type +{ + _Iterator position; + bool inserted; + _NodeType node; +}; + +#endif // _LIBCPP_STD_VER > 14 + +_LIBCPP_END_NAMESPACE_STD +_LIBCPP_POP_MACROS + +#endif diff --git a/include/libc++/__nullptr b/include/libc++/__nullptr new file mode 100644 index 00000000..45529a71 --- /dev/null +++ b/include/libc++/__nullptr @@ -0,0 +1,61 @@ +// -*- C++ -*- +//===--------------------------- __nullptr --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_NULLPTR +#define _LIBCPP_NULLPTR + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +#ifdef _LIBCPP_HAS_NO_NULLPTR + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct _LIBCPP_TEMPLATE_VIS nullptr_t +{ + void* __lx; + + struct __nat {int __for_bool_;}; + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t() : __lx(0) {} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t(int __nat::*) : __lx(0) {} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;} + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + operator _Tp* () const {return 0;} + + template + _LIBCPP_INLINE_VISIBILITY + operator _Tp _Up::* () const {return 0;} + + friend _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bool operator==(nullptr_t, nullptr_t) {return true;} + friend _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR bool operator!=(nullptr_t, nullptr_t) {return false;} +}; + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t() {return nullptr_t(0);} + +#define nullptr _VSTD::__get_nullptr_t() + +_LIBCPP_END_NAMESPACE_STD + +#else // _LIBCPP_HAS_NO_NULLPTR + +namespace std +{ + typedef decltype(nullptr) nullptr_t; +} + +#endif // _LIBCPP_HAS_NO_NULLPTR + +#endif // _LIBCPP_NULLPTR diff --git a/include/libc++/__split_buffer b/include/libc++/__split_buffer new file mode 100644 index 00000000..095fe892 --- /dev/null +++ b/include/libc++/__split_buffer @@ -0,0 +1,644 @@ +// -*- C++ -*- +#ifndef _LIBCPP_SPLIT_BUFFER +#define _LIBCPP_SPLIT_BUFFER + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class __split_buffer_common +{ +protected: + void __throw_length_error() const; + void __throw_out_of_range() const; +}; + +template > +struct __split_buffer + : private __split_buffer_common +{ +private: + __split_buffer(const __split_buffer&); + __split_buffer& operator=(const __split_buffer&); +public: + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename remove_reference::type __alloc_rr; + typedef allocator_traits<__alloc_rr> __alloc_traits; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef typename __alloc_traits::size_type size_type; + typedef typename __alloc_traits::difference_type difference_type; + typedef typename __alloc_traits::pointer pointer; + typedef typename __alloc_traits::const_pointer const_pointer; + typedef pointer iterator; + typedef const_pointer const_iterator; + + pointer __first_; + pointer __begin_; + pointer __end_; + __compressed_pair __end_cap_; + + typedef typename add_lvalue_reference::type __alloc_ref; + typedef typename add_lvalue_reference::type __alloc_const_ref; + + _LIBCPP_INLINE_VISIBILITY __alloc_rr& __alloc() _NOEXCEPT {return __end_cap_.second();} + _LIBCPP_INLINE_VISIBILITY const __alloc_rr& __alloc() const _NOEXCEPT {return __end_cap_.second();} + _LIBCPP_INLINE_VISIBILITY pointer& __end_cap() _NOEXCEPT {return __end_cap_.first();} + _LIBCPP_INLINE_VISIBILITY const pointer& __end_cap() const _NOEXCEPT {return __end_cap_.first();} + + _LIBCPP_INLINE_VISIBILITY + __split_buffer() + _NOEXCEPT_(is_nothrow_default_constructible::value); + _LIBCPP_INLINE_VISIBILITY + explicit __split_buffer(__alloc_rr& __a); + _LIBCPP_INLINE_VISIBILITY + explicit __split_buffer(const __alloc_rr& __a); + __split_buffer(size_type __cap, size_type __start, __alloc_rr& __a); + ~__split_buffer(); + +#ifndef _LIBCPP_CXX03_LANG + __split_buffer(__split_buffer&& __c) + _NOEXCEPT_(is_nothrow_move_constructible::value); + __split_buffer(__split_buffer&& __c, const __alloc_rr& __a); + __split_buffer& operator=(__split_buffer&& __c) + _NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value) || + !__alloc_traits::propagate_on_container_move_assignment::value); +#endif // _LIBCPP_CXX03_LANG + + _LIBCPP_INLINE_VISIBILITY iterator begin() _NOEXCEPT {return __begin_;} + _LIBCPP_INLINE_VISIBILITY const_iterator begin() const _NOEXCEPT {return __begin_;} + _LIBCPP_INLINE_VISIBILITY iterator end() _NOEXCEPT {return __end_;} + _LIBCPP_INLINE_VISIBILITY const_iterator end() const _NOEXCEPT {return __end_;} + + _LIBCPP_INLINE_VISIBILITY + void clear() _NOEXCEPT + {__destruct_at_end(__begin_);} + _LIBCPP_INLINE_VISIBILITY size_type size() const {return static_cast(__end_ - __begin_);} + _LIBCPP_INLINE_VISIBILITY bool empty() const {return __end_ == __begin_;} + _LIBCPP_INLINE_VISIBILITY size_type capacity() const {return static_cast(__end_cap() - __first_);} + _LIBCPP_INLINE_VISIBILITY size_type __front_spare() const {return static_cast(__begin_ - __first_);} + _LIBCPP_INLINE_VISIBILITY size_type __back_spare() const {return static_cast(__end_cap() - __end_);} + + _LIBCPP_INLINE_VISIBILITY reference front() {return *__begin_;} + _LIBCPP_INLINE_VISIBILITY const_reference front() const {return *__begin_;} + _LIBCPP_INLINE_VISIBILITY reference back() {return *(__end_ - 1);} + _LIBCPP_INLINE_VISIBILITY const_reference back() const {return *(__end_ - 1);} + + void reserve(size_type __n); + void shrink_to_fit() _NOEXCEPT; + void push_front(const_reference __x); + _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x); +#ifndef _LIBCPP_CXX03_LANG + void push_front(value_type&& __x); + void push_back(value_type&& __x); + template + void emplace_back(_Args&&... __args); +#endif // !defined(_LIBCPP_CXX03_LANG) + + _LIBCPP_INLINE_VISIBILITY void pop_front() {__destruct_at_begin(__begin_+1);} + _LIBCPP_INLINE_VISIBILITY void pop_back() {__destruct_at_end(__end_-1);} + + void __construct_at_end(size_type __n); + void __construct_at_end(size_type __n, const_reference __x); + template + typename enable_if + < + __is_input_iterator<_InputIter>::value && + !__is_forward_iterator<_InputIter>::value, + void + >::type + __construct_at_end(_InputIter __first, _InputIter __last); + template + typename enable_if + < + __is_forward_iterator<_ForwardIterator>::value, + void + >::type + __construct_at_end(_ForwardIterator __first, _ForwardIterator __last); + + _LIBCPP_INLINE_VISIBILITY void __destruct_at_begin(pointer __new_begin) + {__destruct_at_begin(__new_begin, is_trivially_destructible());} + _LIBCPP_INLINE_VISIBILITY + void __destruct_at_begin(pointer __new_begin, false_type); + _LIBCPP_INLINE_VISIBILITY + void __destruct_at_begin(pointer __new_begin, true_type); + + _LIBCPP_INLINE_VISIBILITY + void __destruct_at_end(pointer __new_last) _NOEXCEPT + {__destruct_at_end(__new_last, false_type());} + _LIBCPP_INLINE_VISIBILITY + void __destruct_at_end(pointer __new_last, false_type) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + void __destruct_at_end(pointer __new_last, true_type) _NOEXCEPT; + + void swap(__split_buffer& __x) + _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value|| + __is_nothrow_swappable<__alloc_rr>::value); + + bool __invariants() const; + +private: + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__split_buffer& __c, true_type) + _NOEXCEPT_(is_nothrow_move_assignable::value) + { + __alloc() = _VSTD::move(__c.__alloc()); + } + + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__split_buffer&, false_type) _NOEXCEPT + {} + + struct _ConstructTransaction { + explicit _ConstructTransaction(pointer* __p, size_type __n) _NOEXCEPT + : __pos_(*__p), __end_(*__p + __n), __dest_(__p) { + } + ~_ConstructTransaction() { + *__dest_ = __pos_; + } + pointer __pos_; + const pointer __end_; + private: + pointer *__dest_; + }; +}; + +template +bool +__split_buffer<_Tp, _Allocator>::__invariants() const +{ + if (__first_ == nullptr) + { + if (__begin_ != nullptr) + return false; + if (__end_ != nullptr) + return false; + if (__end_cap() != nullptr) + return false; + } + else + { + if (__begin_ < __first_) + return false; + if (__end_ < __begin_) + return false; + if (__end_cap() < __end_) + return false; + } + return true; +} + +// Default constructs __n objects starting at __end_ +// throws if construction throws +// Precondition: __n > 0 +// Precondition: size() + __n <= capacity() +// Postcondition: size() == size() + __n +template +void +__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n) +{ + _ConstructTransaction __tx(&this->__end_, __n); + for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_) { + __alloc_traits::construct(this->__alloc(), _VSTD::__to_raw_pointer(__tx.__pos_)); + } +} + +// Copy constructs __n objects starting at __end_ from __x +// throws if construction throws +// Precondition: __n > 0 +// Precondition: size() + __n <= capacity() +// Postcondition: size() == old size() + __n +// Postcondition: [i] == __x for all i in [size() - __n, __n) +template +void +__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x) +{ + _ConstructTransaction __tx(&this->__end_, __n); + for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_) { + __alloc_traits::construct(this->__alloc(), + _VSTD::__to_raw_pointer(__tx.__pos_), __x); + } +} + +template +template +typename enable_if +< + __is_input_iterator<_InputIter>::value && + !__is_forward_iterator<_InputIter>::value, + void +>::type +__split_buffer<_Tp, _Allocator>::__construct_at_end(_InputIter __first, _InputIter __last) +{ + __alloc_rr& __a = this->__alloc(); + for (; __first != __last; ++__first) + { + if (__end_ == __end_cap()) + { + size_type __old_cap = __end_cap() - __first_; + size_type __new_cap = _VSTD::max(2 * __old_cap, 8); + __split_buffer __buf(__new_cap, 0, __a); + for (pointer __p = __begin_; __p != __end_; ++__p, ++__buf.__end_) + __alloc_traits::construct(__buf.__alloc(), + _VSTD::__to_raw_pointer(__buf.__end_), _VSTD::move(*__p)); + swap(__buf); + } + __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), *__first); + ++this->__end_; + } +} + +template +template +typename enable_if +< + __is_forward_iterator<_ForwardIterator>::value, + void +>::type +__split_buffer<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last) +{ + _ConstructTransaction __tx(&this->__end_, std::distance(__first, __last)); + for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_, ++__first) { + __alloc_traits::construct(this->__alloc(), + _VSTD::__to_raw_pointer(__tx.__pos_), *__first); + } +} + +template +inline +void +__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, false_type) +{ + while (__begin_ != __new_begin) + __alloc_traits::destroy(__alloc(), __to_raw_pointer(__begin_++)); +} + +template +inline +void +__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, true_type) +{ + __begin_ = __new_begin; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, false_type) _NOEXCEPT +{ + while (__new_last != __end_) + __alloc_traits::destroy(__alloc(), __to_raw_pointer(--__end_)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, true_type) _NOEXCEPT +{ + __end_ = __new_last; +} + +template +__split_buffer<_Tp, _Allocator>::__split_buffer(size_type __cap, size_type __start, __alloc_rr& __a) + : __end_cap_(nullptr, __a) +{ + __first_ = __cap != 0 ? __alloc_traits::allocate(__alloc(), __cap) : nullptr; + __begin_ = __end_ = __first_ + __start; + __end_cap() = __first_ + __cap; +} + +template +inline +__split_buffer<_Tp, _Allocator>::__split_buffer() + _NOEXCEPT_(is_nothrow_default_constructible::value) + : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr) +{ +} + +template +inline +__split_buffer<_Tp, _Allocator>::__split_buffer(__alloc_rr& __a) + : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a) +{ +} + +template +inline +__split_buffer<_Tp, _Allocator>::__split_buffer(const __alloc_rr& __a) + : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a) +{ +} + +template +__split_buffer<_Tp, _Allocator>::~__split_buffer() +{ + clear(); + if (__first_) + __alloc_traits::deallocate(__alloc(), __first_, capacity()); +} + +#ifndef _LIBCPP_CXX03_LANG + +template +__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c) + _NOEXCEPT_(is_nothrow_move_constructible::value) + : __first_(_VSTD::move(__c.__first_)), + __begin_(_VSTD::move(__c.__begin_)), + __end_(_VSTD::move(__c.__end_)), + __end_cap_(_VSTD::move(__c.__end_cap_)) +{ + __c.__first_ = nullptr; + __c.__begin_ = nullptr; + __c.__end_ = nullptr; + __c.__end_cap() = nullptr; +} + +template +__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c, const __alloc_rr& __a) + : __end_cap_(__second_tag(), __a) +{ + if (__a == __c.__alloc()) + { + __first_ = __c.__first_; + __begin_ = __c.__begin_; + __end_ = __c.__end_; + __end_cap() = __c.__end_cap(); + __c.__first_ = nullptr; + __c.__begin_ = nullptr; + __c.__end_ = nullptr; + __c.__end_cap() = nullptr; + } + else + { + size_type __cap = __c.size(); + __first_ = __alloc_traits::allocate(__alloc(), __cap); + __begin_ = __end_ = __first_; + __end_cap() = __first_ + __cap; + typedef move_iterator _Ip; + __construct_at_end(_Ip(__c.begin()), _Ip(__c.end())); + } +} + +template +__split_buffer<_Tp, _Allocator>& +__split_buffer<_Tp, _Allocator>::operator=(__split_buffer&& __c) + _NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value) || + !__alloc_traits::propagate_on_container_move_assignment::value) +{ + clear(); + shrink_to_fit(); + __first_ = __c.__first_; + __begin_ = __c.__begin_; + __end_ = __c.__end_; + __end_cap() = __c.__end_cap(); + __move_assign_alloc(__c, + integral_constant()); + __c.__first_ = __c.__begin_ = __c.__end_ = __c.__end_cap() = nullptr; + return *this; +} + +#endif // _LIBCPP_CXX03_LANG + +template +void +__split_buffer<_Tp, _Allocator>::swap(__split_buffer& __x) + _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value|| + __is_nothrow_swappable<__alloc_rr>::value) +{ + _VSTD::swap(__first_, __x.__first_); + _VSTD::swap(__begin_, __x.__begin_); + _VSTD::swap(__end_, __x.__end_); + _VSTD::swap(__end_cap(), __x.__end_cap()); + __swap_allocator(__alloc(), __x.__alloc()); +} + +template +void +__split_buffer<_Tp, _Allocator>::reserve(size_type __n) +{ + if (__n < capacity()) + { + __split_buffer __t(__n, 0, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); + } +} + +template +void +__split_buffer<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT +{ + if (capacity() > size()) + { +#ifndef _LIBCPP_NO_EXCEPTIONS + try + { +#endif // _LIBCPP_NO_EXCEPTIONS + __split_buffer __t(size(), 0, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + __t.__end_ = __t.__begin_ + (__end_ - __begin_); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); +#ifndef _LIBCPP_NO_EXCEPTIONS + } + catch (...) + { + } +#endif // _LIBCPP_NO_EXCEPTIONS + } +} + +template +void +__split_buffer<_Tp, _Allocator>::push_front(const_reference __x) +{ + if (__begin_ == __first_) + { + if (__end_ < __end_cap()) + { + difference_type __d = __end_cap() - __end_; + __d = (__d + 1) / 2; + __begin_ = _VSTD::move_backward(__begin_, __end_, __end_ + __d); + __end_ += __d; + } + else + { + size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); + __split_buffer __t(__c, (__c + 3) / 4, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); + } + } + __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__begin_-1), __x); + --__begin_; +} + +#ifndef _LIBCPP_CXX03_LANG + +template +void +__split_buffer<_Tp, _Allocator>::push_front(value_type&& __x) +{ + if (__begin_ == __first_) + { + if (__end_ < __end_cap()) + { + difference_type __d = __end_cap() - __end_; + __d = (__d + 1) / 2; + __begin_ = _VSTD::move_backward(__begin_, __end_, __end_ + __d); + __end_ += __d; + } + else + { + size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); + __split_buffer __t(__c, (__c + 3) / 4, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); + } + } + __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__begin_-1), + _VSTD::move(__x)); + --__begin_; +} + +#endif // _LIBCPP_CXX03_LANG + +template +inline _LIBCPP_INLINE_VISIBILITY +void +__split_buffer<_Tp, _Allocator>::push_back(const_reference __x) +{ + if (__end_ == __end_cap()) + { + if (__begin_ > __first_) + { + difference_type __d = __begin_ - __first_; + __d = (__d + 1) / 2; + __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d); + __begin_ -= __d; + } + else + { + size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); + __split_buffer __t(__c, __c / 4, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); + } + } + __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__end_), __x); + ++__end_; +} + +#ifndef _LIBCPP_CXX03_LANG + +template +void +__split_buffer<_Tp, _Allocator>::push_back(value_type&& __x) +{ + if (__end_ == __end_cap()) + { + if (__begin_ > __first_) + { + difference_type __d = __begin_ - __first_; + __d = (__d + 1) / 2; + __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d); + __begin_ -= __d; + } + else + { + size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); + __split_buffer __t(__c, __c / 4, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); + } + } + __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__end_), + _VSTD::move(__x)); + ++__end_; +} + +template +template +void +__split_buffer<_Tp, _Allocator>::emplace_back(_Args&&... __args) +{ + if (__end_ == __end_cap()) + { + if (__begin_ > __first_) + { + difference_type __d = __begin_ - __first_; + __d = (__d + 1) / 2; + __end_ = _VSTD::move(__begin_, __end_, __begin_ - __d); + __begin_ -= __d; + } + else + { + size_type __c = max(2 * static_cast(__end_cap() - __first_), 1); + __split_buffer __t(__c, __c / 4, __alloc()); + __t.__construct_at_end(move_iterator(__begin_), + move_iterator(__end_)); + _VSTD::swap(__first_, __t.__first_); + _VSTD::swap(__begin_, __t.__begin_); + _VSTD::swap(__end_, __t.__end_); + _VSTD::swap(__end_cap(), __t.__end_cap()); + } + } + __alloc_traits::construct(__alloc(), _VSTD::__to_raw_pointer(__end_), + _VSTD::forward<_Args>(__args)...); + ++__end_; +} + +#endif // _LIBCPP_CXX03_LANG + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(__split_buffer<_Tp, _Allocator>& __x, __split_buffer<_Tp, _Allocator>& __y) + _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) +{ + __x.swap(__y); +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_SPLIT_BUFFER diff --git a/include/libc++/__sso_allocator b/include/libc++/__sso_allocator new file mode 100644 index 00000000..39301287 --- /dev/null +++ b/include/libc++/__sso_allocator @@ -0,0 +1,76 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___SSO_ALLOCATOR +#define _LIBCPP___SSO_ALLOCATOR + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template class _LIBCPP_HIDDEN __sso_allocator; + +template +class _LIBCPP_HIDDEN __sso_allocator +{ +public: + typedef const void* const_pointer; + typedef void value_type; +}; + +template +class _LIBCPP_HIDDEN __sso_allocator +{ + typename aligned_storage::type buf_; + bool __allocated_; +public: + typedef size_t size_type; + typedef _Tp* pointer; + typedef _Tp value_type; + + _LIBCPP_INLINE_VISIBILITY __sso_allocator() throw() : __allocated_(false) {} + _LIBCPP_INLINE_VISIBILITY __sso_allocator(const __sso_allocator&) throw() : __allocated_(false) {} + template _LIBCPP_INLINE_VISIBILITY __sso_allocator(const __sso_allocator<_Up, _Np>&) throw() + : __allocated_(false) {} +private: + __sso_allocator& operator=(const __sso_allocator&); +public: + _LIBCPP_INLINE_VISIBILITY pointer allocate(size_type __n, typename __sso_allocator::const_pointer = 0) + { + if (!__allocated_ && __n <= _Np) + { + __allocated_ = true; + return (pointer)&buf_; + } + return static_cast(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp))); + } + _LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type __n) + { + if (__p == (pointer)&buf_) + __allocated_ = false; + else + _VSTD::__libcpp_deallocate(__p, __n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)); + } + _LIBCPP_INLINE_VISIBILITY size_type max_size() const throw() {return size_type(~0) / sizeof(_Tp);} + + _LIBCPP_INLINE_VISIBILITY + bool operator==(__sso_allocator& __a) const {return &buf_ == &__a.buf_;} + _LIBCPP_INLINE_VISIBILITY + bool operator!=(__sso_allocator& __a) const {return &buf_ != &__a.buf_;} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___SSO_ALLOCATOR diff --git a/include/libc++/__std_stream b/include/libc++/__std_stream new file mode 100644 index 00000000..5a9a470a --- /dev/null +++ b/include/libc++/__std_stream @@ -0,0 +1,361 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___STD_STREAM +#define _LIBCPP___STD_STREAM + +#include <__config> +#include +#include +#include <__locale> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +static const int __limit = 8; + +// __stdinbuf + +template +class _LIBCPP_HIDDEN __stdinbuf + : public basic_streambuf<_CharT, char_traits<_CharT> > +{ +public: + typedef _CharT char_type; + typedef char_traits traits_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + typedef typename traits_type::state_type state_type; + + __stdinbuf(FILE* __fp, state_type* __st); + +protected: + virtual int_type underflow(); + virtual int_type uflow(); + virtual int_type pbackfail(int_type __c = traits_type::eof()); + virtual void imbue(const locale& __loc); + +private: + + FILE* __file_; + const codecvt* __cv_; + state_type* __st_; + int __encoding_; + int_type __last_consumed_; + bool __last_consumed_is_next_; + bool __always_noconv_; + + __stdinbuf(const __stdinbuf&); + __stdinbuf& operator=(const __stdinbuf&); + + int_type __getchar(bool __consume); +}; + +template +__stdinbuf<_CharT>::__stdinbuf(FILE* __fp, state_type* __st) + : __file_(__fp), + __st_(__st), + __last_consumed_(traits_type::eof()), + __last_consumed_is_next_(false) +{ + imbue(this->getloc()); +} + +template +void +__stdinbuf<_CharT>::imbue(const locale& __loc) +{ + __cv_ = &use_facet >(__loc); + __encoding_ = __cv_->encoding(); + __always_noconv_ = __cv_->always_noconv(); + if (__encoding_ > __limit) + __throw_runtime_error("unsupported locale for standard input"); +} + +template +typename __stdinbuf<_CharT>::int_type +__stdinbuf<_CharT>::underflow() +{ + return __getchar(false); +} + +template +typename __stdinbuf<_CharT>::int_type +__stdinbuf<_CharT>::uflow() +{ + return __getchar(true); +} + +template +typename __stdinbuf<_CharT>::int_type +__stdinbuf<_CharT>::__getchar(bool __consume) +{ + if (__last_consumed_is_next_) + { + int_type __result = __last_consumed_; + if (__consume) + { + __last_consumed_ = traits_type::eof(); + __last_consumed_is_next_ = false; + } + return __result; + } + char __extbuf[__limit]; + int __nread = _VSTD::max(1, __encoding_); + for (int __i = 0; __i < __nread; ++__i) + { + int __c = getc(__file_); + if (__c == EOF) + return traits_type::eof(); + __extbuf[__i] = static_cast(__c); + } + char_type __1buf; + if (__always_noconv_) + __1buf = static_cast(__extbuf[0]); + else + { + const char* __enxt; + char_type* __inxt; + codecvt_base::result __r; + do + { + state_type __sv_st = *__st_; + __r = __cv_->in(*__st_, __extbuf, __extbuf + __nread, __enxt, + &__1buf, &__1buf + 1, __inxt); + switch (__r) + { + case _VSTD::codecvt_base::ok: + break; + case codecvt_base::partial: + *__st_ = __sv_st; + if (__nread == sizeof(__extbuf)) + return traits_type::eof(); + { + int __c = getc(__file_); + if (__c == EOF) + return traits_type::eof(); + __extbuf[__nread] = static_cast(__c); + } + ++__nread; + break; + case codecvt_base::error: + return traits_type::eof(); + case _VSTD::codecvt_base::noconv: + __1buf = static_cast(__extbuf[0]); + break; + } + } while (__r == _VSTD::codecvt_base::partial); + } + if (!__consume) + { + for (int __i = __nread; __i > 0;) + { + if (ungetc(traits_type::to_int_type(__extbuf[--__i]), __file_) == EOF) + return traits_type::eof(); + } + } + else + __last_consumed_ = traits_type::to_int_type(__1buf); + return traits_type::to_int_type(__1buf); +} + +template +typename __stdinbuf<_CharT>::int_type +__stdinbuf<_CharT>::pbackfail(int_type __c) +{ + if (traits_type::eq_int_type(__c, traits_type::eof())) + { + if (!__last_consumed_is_next_) + { + __c = __last_consumed_; + __last_consumed_is_next_ = !traits_type::eq_int_type(__last_consumed_, + traits_type::eof()); + } + return __c; + } + if (__last_consumed_is_next_) + { + char __extbuf[__limit]; + char* __enxt; + const char_type __ci = traits_type::to_char_type(__last_consumed_); + const char_type* __inxt; + switch (__cv_->out(*__st_, &__ci, &__ci + 1, __inxt, + __extbuf, __extbuf + sizeof(__extbuf), __enxt)) + { + case _VSTD::codecvt_base::ok: + break; + case _VSTD::codecvt_base::noconv: + __extbuf[0] = static_cast(__last_consumed_); + __enxt = __extbuf + 1; + break; + case codecvt_base::partial: + case codecvt_base::error: + return traits_type::eof(); + } + while (__enxt > __extbuf) + if (ungetc(*--__enxt, __file_) == EOF) + return traits_type::eof(); + } + __last_consumed_ = __c; + __last_consumed_is_next_ = true; + return __c; +} + +// __stdoutbuf + +template +class _LIBCPP_HIDDEN __stdoutbuf + : public basic_streambuf<_CharT, char_traits<_CharT> > +{ +public: + typedef _CharT char_type; + typedef char_traits traits_type; + typedef typename traits_type::int_type int_type; + typedef typename traits_type::pos_type pos_type; + typedef typename traits_type::off_type off_type; + typedef typename traits_type::state_type state_type; + + __stdoutbuf(FILE* __fp, state_type* __st); + +protected: + virtual int_type overflow (int_type __c = traits_type::eof()); + virtual streamsize xsputn(const char_type* __s, streamsize __n); + virtual int sync(); + virtual void imbue(const locale& __loc); + +private: + FILE* __file_; + const codecvt* __cv_; + state_type* __st_; + bool __always_noconv_; + + __stdoutbuf(const __stdoutbuf&); + __stdoutbuf& operator=(const __stdoutbuf&); +}; + +template +__stdoutbuf<_CharT>::__stdoutbuf(FILE* __fp, state_type* __st) + : __file_(__fp), + __cv_(&use_facet >(this->getloc())), + __st_(__st), + __always_noconv_(__cv_->always_noconv()) +{ +} + +template +typename __stdoutbuf<_CharT>::int_type +__stdoutbuf<_CharT>::overflow(int_type __c) +{ + char __extbuf[__limit]; + char_type __1buf; + if (!traits_type::eq_int_type(__c, traits_type::eof())) + { + __1buf = traits_type::to_char_type(__c); + if (__always_noconv_) + { + if (fwrite(&__1buf, sizeof(char_type), 1, __file_) != 1) + return traits_type::eof(); + } + else + { + char* __extbe = __extbuf; + codecvt_base::result __r; + char_type* pbase = &__1buf; + char_type* pptr = pbase + 1; + do + { + const char_type* __e; + __r = __cv_->out(*__st_, pbase, pptr, __e, + __extbuf, + __extbuf + sizeof(__extbuf), + __extbe); + if (__e == pbase) + return traits_type::eof(); + if (__r == codecvt_base::noconv) + { + if (fwrite(pbase, 1, 1, __file_) != 1) + return traits_type::eof(); + } + else if (__r == codecvt_base::ok || __r == codecvt_base::partial) + { + size_t __nmemb = static_cast(__extbe - __extbuf); + if (fwrite(__extbuf, 1, __nmemb, __file_) != __nmemb) + return traits_type::eof(); + if (__r == codecvt_base::partial) + { + pbase = const_cast(__e); + } + } + else + return traits_type::eof(); + } while (__r == codecvt_base::partial); + } + } + return traits_type::not_eof(__c); +} + +template +streamsize +__stdoutbuf<_CharT>::xsputn(const char_type* __s, streamsize __n) +{ + if (__always_noconv_) + return fwrite(__s, sizeof(char_type), __n, __file_); + streamsize __i = 0; + for (; __i < __n; ++__i, ++__s) + if (overflow(traits_type::to_int_type(*__s)) == traits_type::eof()) + break; + return __i; +} + +template +int +__stdoutbuf<_CharT>::sync() +{ + char __extbuf[__limit]; + codecvt_base::result __r; + do + { + char* __extbe; + __r = __cv_->unshift(*__st_, __extbuf, + __extbuf + sizeof(__extbuf), + __extbe); + size_t __nmemb = static_cast(__extbe - __extbuf); + if (fwrite(__extbuf, 1, __nmemb, __file_) != __nmemb) + return -1; + } while (__r == codecvt_base::partial); + if (__r == codecvt_base::error) + return -1; + if (fflush(__file_)) + return -1; + return 0; +} + +template +void +__stdoutbuf<_CharT>::imbue(const locale& __loc) +{ + sync(); + __cv_ = &use_facet >(__loc); + __always_noconv_ = __cv_->always_noconv(); +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___STD_STREAM diff --git a/include/libc++/__string b/include/libc++/__string new file mode 100644 index 00000000..b4c8815f --- /dev/null +++ b/include/libc++/__string @@ -0,0 +1,985 @@ +// -*- C++ -*- +//===-------------------------- __string ----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___STRING +#define _LIBCPP___STRING + +/* + string synopsis + +namespace std +{ + +template +struct char_traits +{ + typedef charT char_type; + typedef ... int_type; + typedef streamoff off_type; + typedef streampos pos_type; + typedef mbstate_t state_type; + + static constexpr void assign(char_type& c1, const char_type& c2) noexcept; + static constexpr bool eq(char_type c1, char_type c2) noexcept; + static constexpr bool lt(char_type c1, char_type c2) noexcept; + + static constexpr int compare(const char_type* s1, const char_type* s2, size_t n); + static constexpr size_t length(const char_type* s); + static constexpr const char_type* + find(const char_type* s, size_t n, const char_type& a); + static char_type* move(char_type* s1, const char_type* s2, size_t n); + static char_type* copy(char_type* s1, const char_type* s2, size_t n); + static char_type* assign(char_type* s, size_t n, char_type a); + + static constexpr int_type not_eof(int_type c) noexcept; + static constexpr char_type to_char_type(int_type c) noexcept; + static constexpr int_type to_int_type(char_type c) noexcept; + static constexpr bool eq_int_type(int_type c1, int_type c2) noexcept; + static constexpr int_type eof() noexcept; +}; + +template <> struct char_traits; +template <> struct char_traits; +template <> struct char_traits; // c++20 + +} // std + +*/ + +#include <__config> +#include // for search and min +#include // For EOF. +#include // for __murmur2_or_cityhash + +#include <__debug> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +// char_traits + +template +struct _LIBCPP_TEMPLATE_VIS char_traits +{ + typedef _CharT char_type; + typedef int int_type; + typedef streamoff off_type; + typedef streampos pos_type; + typedef mbstate_t state_type; + + static inline void _LIBCPP_CONSTEXPR_AFTER_CXX14 + assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;} + static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 < __c2;} + + static _LIBCPP_CONSTEXPR_AFTER_CXX14 + int compare(const char_type* __s1, const char_type* __s2, size_t __n); + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + size_t length(const char_type* __s); + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + const char_type* find(const char_type* __s, size_t __n, const char_type& __a); + static char_type* move(char_type* __s1, const char_type* __s2, size_t __n); + _LIBCPP_INLINE_VISIBILITY + static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n); + _LIBCPP_INLINE_VISIBILITY + static char_type* assign(char_type* __s, size_t __n, char_type __a); + + static inline _LIBCPP_CONSTEXPR int_type not_eof(int_type __c) _NOEXCEPT + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT + {return char_type(__c);} + static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT + {return int_type(__c);} + static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT + {return int_type(EOF);} +}; + +template +_LIBCPP_CONSTEXPR_AFTER_CXX14 int +char_traits<_CharT>::compare(const char_type* __s1, const char_type* __s2, size_t __n) +{ + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +} + +template +inline +_LIBCPP_CONSTEXPR_AFTER_CXX14 size_t +char_traits<_CharT>::length(const char_type* __s) +{ + size_t __len = 0; + for (; !eq(*__s, char_type(0)); ++__s) + ++__len; + return __len; +} + +template +inline +_LIBCPP_CONSTEXPR_AFTER_CXX14 const _CharT* +char_traits<_CharT>::find(const char_type* __s, size_t __n, const char_type& __a) +{ + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return 0; +} + +template +_CharT* +char_traits<_CharT>::move(char_type* __s1, const char_type* __s2, size_t __n) +{ + char_type* __r = __s1; + if (__s1 < __s2) + { + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + } + else if (__s2 < __s1) + { + __s1 += __n; + __s2 += __n; + for (; __n; --__n) + assign(*--__s1, *--__s2); + } + return __r; +} + +template +inline +_CharT* +char_traits<_CharT>::copy(char_type* __s1, const char_type* __s2, size_t __n) +{ + _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range"); + char_type* __r = __s1; + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + return __r; +} + +template +inline +_CharT* +char_traits<_CharT>::assign(char_type* __s, size_t __n, char_type __a) +{ + char_type* __r = __s; + for (; __n; --__n, ++__s) + assign(*__s, __a); + return __r; +} + +// char_traits + +template <> +struct _LIBCPP_TEMPLATE_VIS char_traits +{ + typedef char char_type; + typedef int int_type; + typedef streamoff off_type; + typedef streampos pos_type; + typedef mbstate_t state_type; + + static inline _LIBCPP_CONSTEXPR_AFTER_CXX14 + void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;} + static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT + {return (unsigned char)__c1 < (unsigned char)__c2;} + + static _LIBCPP_CONSTEXPR_AFTER_CXX14 + int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + static inline size_t _LIBCPP_CONSTEXPR_AFTER_CXX14 + length(const char_type* __s) _NOEXCEPT {return __builtin_strlen(__s);} + static _LIBCPP_CONSTEXPR_AFTER_CXX14 + const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT; + static inline char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT + {return __n == 0 ? __s1 : (char_type*) memmove(__s1, __s2, __n);} + static inline char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT + { + _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range"); + return __n == 0 ? __s1 : (char_type*)memcpy(__s1, __s2, __n); + } + static inline char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT + {return __n == 0 ? __s : (char_type*)memset(__s, to_int_type(__a), __n);} + + static inline _LIBCPP_CONSTEXPR int_type not_eof(int_type __c) _NOEXCEPT + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT + {return char_type(__c);} + static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT + {return int_type((unsigned char)__c);} + static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT + {return int_type(EOF);} +}; + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +int +char_traits::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + if (__n == 0) + return 0; +#if __has_feature(cxx_constexpr_string_builtins) + return __builtin_memcmp(__s1, __s2, __n); +#elif _LIBCPP_STD_VER <= 14 + return memcmp(__s1, __s2, __n); +#else + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +#endif +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +const char* +char_traits::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT +{ + if (__n == 0) + return nullptr; +#if __has_feature(cxx_constexpr_string_builtins) + return __builtin_char_memchr(__s, to_int_type(__a), __n); +#elif _LIBCPP_STD_VER <= 14 + return (const char_type*) memchr(__s, to_int_type(__a), __n); +#else + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return nullptr; +#endif +} + + +// char_traits + +template <> +struct _LIBCPP_TEMPLATE_VIS char_traits +{ + typedef wchar_t char_type; + typedef wint_t int_type; + typedef streamoff off_type; + typedef streampos pos_type; + typedef mbstate_t state_type; + + static inline _LIBCPP_CONSTEXPR_AFTER_CXX14 + void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;} + static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 < __c2;} + + static _LIBCPP_CONSTEXPR_AFTER_CXX14 + int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + static _LIBCPP_CONSTEXPR_AFTER_CXX14 + size_t length(const char_type* __s) _NOEXCEPT; + static _LIBCPP_CONSTEXPR_AFTER_CXX14 + const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT; + static inline char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT + {return __n == 0 ? __s1 : (char_type*)wmemmove(__s1, __s2, __n);} + static inline char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT + { + _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range"); + return __n == 0 ? __s1 : (char_type*)wmemcpy(__s1, __s2, __n); + } + static inline char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT + {return __n == 0 ? __s : (char_type*)wmemset(__s, __a, __n);} + + static inline _LIBCPP_CONSTEXPR int_type not_eof(int_type __c) _NOEXCEPT + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT + {return char_type(__c);} + static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT + {return int_type(__c);} + static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT + {return int_type(WEOF);} +}; + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +int +char_traits::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + if (__n == 0) + return 0; +#if __has_feature(cxx_constexpr_string_builtins) + return __builtin_wmemcmp(__s1, __s2, __n); +#elif _LIBCPP_STD_VER <= 14 + return wmemcmp(__s1, __s2, __n); +#else + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +#endif +} + + +template +_LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +inline size_t __char_traits_length_checked(const typename _Traits::char_type* __s) _NOEXCEPT { +#if _LIBCPP_DEBUG_LEVEL >= 1 + return __s ? _Traits::length(__s) : (_VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, "p == nullptr", "null pointer pass to non-null argument of char_traits<...>::length")), 0); +#else + return _Traits::length(__s); +#endif +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +size_t +char_traits::length(const char_type* __s) _NOEXCEPT +{ +#if __has_feature(cxx_constexpr_string_builtins) + return __builtin_wcslen(__s); +#elif _LIBCPP_STD_VER <= 14 + return wcslen(__s); +#else + size_t __len = 0; + for (; !eq(*__s, char_type(0)); ++__s) + ++__len; + return __len; +#endif +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +const wchar_t* +char_traits::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT +{ + if (__n == 0) + return nullptr; +#if __has_feature(cxx_constexpr_string_builtins) + return __builtin_wmemchr(__s, __a, __n); +#elif _LIBCPP_STD_VER <= 14 + return wmemchr(__s, __a, __n); +#else + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return nullptr; +#endif +} + + +#ifndef _LIBCPP_NO_HAS_CHAR8_T + +template <> +struct _LIBCPP_TEMPLATE_VIS char_traits +{ + typedef char8_t char_type; + typedef unsigned int int_type; + typedef streamoff off_type; + typedef u8streampos pos_type; + typedef mbstate_t state_type; + + static inline constexpr void assign(char_type& __c1, const char_type& __c2) noexcept + {__c1 = __c2;} + static inline constexpr bool eq(char_type __c1, char_type __c2) noexcept + {return __c1 == __c2;} + static inline constexpr bool lt(char_type __c1, char_type __c2) noexcept + {return __c1 < __c2;} + + static constexpr + int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + + static constexpr + size_t length(const char_type* __s) _NOEXCEPT; + + _LIBCPP_INLINE_VISIBILITY static constexpr + const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT; + + static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT + {return __n == 0 ? __s1 : (char_type*) memmove(__s1, __s2, __n);} + + static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT + { + _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range"); + return __n == 0 ? __s1 : (char_type*)memcpy(__s1, __s2, __n); + } + + static char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT + {return __n == 0 ? __s : (char_type*)memset(__s, to_int_type(__a), __n);} + + static inline constexpr int_type not_eof(int_type __c) noexcept + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + static inline constexpr char_type to_char_type(int_type __c) noexcept + {return char_type(__c);} + static inline constexpr int_type to_int_type(char_type __c) noexcept + {return int_type(__c);} + static inline constexpr bool eq_int_type(int_type __c1, int_type __c2) noexcept + {return __c1 == __c2;} + static inline constexpr int_type eof() noexcept + {return int_type(EOF);} +}; + +// TODO use '__builtin_strlen' if it ever supports char8_t ?? +inline constexpr +size_t +char_traits::length(const char_type* __s) _NOEXCEPT +{ + size_t __len = 0; + for (; !eq(*__s, char_type(0)); ++__s) + ++__len; + return __len; +} + +inline constexpr +int +char_traits::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ +#if __has_feature(cxx_constexpr_string_builtins) + return __builtin_memcmp(__s1, __s2, __n); +#else + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +#endif +} + +// TODO use '__builtin_char_memchr' if it ever supports char8_t ?? +inline constexpr +const char8_t* +char_traits::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT +{ + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return 0; +} + +#endif // #_LIBCPP_NO_HAS_CHAR8_T + +#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS + +template <> +struct _LIBCPP_TEMPLATE_VIS char_traits +{ + typedef char16_t char_type; + typedef uint_least16_t int_type; + typedef streamoff off_type; + typedef u16streampos pos_type; + typedef mbstate_t state_type; + + static inline _LIBCPP_CONSTEXPR_AFTER_CXX14 + void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;} + static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 < __c2;} + + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + size_t length(const char_type* __s) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT; + + static inline _LIBCPP_CONSTEXPR int_type not_eof(int_type __c) _NOEXCEPT + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT + {return char_type(__c);} + static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT + {return int_type(__c);} + static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT + {return int_type(0xFFFF);} +}; + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +int +char_traits::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +size_t +char_traits::length(const char_type* __s) _NOEXCEPT +{ + size_t __len = 0; + for (; !eq(*__s, char_type(0)); ++__s) + ++__len; + return __len; +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +const char16_t* +char_traits::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT +{ + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return 0; +} + +inline +char16_t* +char_traits::move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + char_type* __r = __s1; + if (__s1 < __s2) + { + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + } + else if (__s2 < __s1) + { + __s1 += __n; + __s2 += __n; + for (; __n; --__n) + assign(*--__s1, *--__s2); + } + return __r; +} + +inline +char16_t* +char_traits::copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range"); + char_type* __r = __s1; + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + return __r; +} + +inline +char16_t* +char_traits::assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT +{ + char_type* __r = __s; + for (; __n; --__n, ++__s) + assign(*__s, __a); + return __r; +} + +template <> +struct _LIBCPP_TEMPLATE_VIS char_traits +{ + typedef char32_t char_type; + typedef uint_least32_t int_type; + typedef streamoff off_type; + typedef u32streampos pos_type; + typedef mbstate_t state_type; + + static inline _LIBCPP_CONSTEXPR_AFTER_CXX14 + void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;} + static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT + {return __c1 < __c2;} + + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + size_t length(const char_type* __s) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14 + const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static char_type* assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT; + + static inline _LIBCPP_CONSTEXPR int_type not_eof(int_type __c) _NOEXCEPT + {return eq_int_type(__c, eof()) ? ~eof() : __c;} + static inline _LIBCPP_CONSTEXPR char_type to_char_type(int_type __c) _NOEXCEPT + {return char_type(__c);} + static inline _LIBCPP_CONSTEXPR int_type to_int_type(char_type __c) _NOEXCEPT + {return int_type(__c);} + static inline _LIBCPP_CONSTEXPR bool eq_int_type(int_type __c1, int_type __c2) _NOEXCEPT + {return __c1 == __c2;} + static inline _LIBCPP_CONSTEXPR int_type eof() _NOEXCEPT + {return int_type(0xFFFFFFFF);} +}; + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +int +char_traits::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + for (; __n; --__n, ++__s1, ++__s2) + { + if (lt(*__s1, *__s2)) + return -1; + if (lt(*__s2, *__s1)) + return 1; + } + return 0; +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +size_t +char_traits::length(const char_type* __s) _NOEXCEPT +{ + size_t __len = 0; + for (; !eq(*__s, char_type(0)); ++__s) + ++__len; + return __len; +} + +inline _LIBCPP_CONSTEXPR_AFTER_CXX14 +const char32_t* +char_traits::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT +{ + for (; __n; --__n) + { + if (eq(*__s, __a)) + return __s; + ++__s; + } + return 0; +} + +inline +char32_t* +char_traits::move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + char_type* __r = __s1; + if (__s1 < __s2) + { + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + } + else if (__s2 < __s1) + { + __s1 += __n; + __s2 += __n; + for (; __n; --__n) + assign(*--__s1, *--__s2); + } + return __r; +} + +inline +char32_t* +char_traits::copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT +{ + _LIBCPP_ASSERT(__s2 < __s1 || __s2 >= __s1+__n, "char_traits::copy overlapped range"); + char_type* __r = __s1; + for (; __n; --__n, ++__s1, ++__s2) + assign(*__s1, *__s2); + return __r; +} + +inline +char32_t* +char_traits::assign(char_type* __s, size_t __n, char_type __a) _NOEXCEPT +{ + char_type* __r = __s; + for (; __n; --__n, ++__s) + assign(*__s, __a); + return __r; +} + +#endif // _LIBCPP_HAS_NO_UNICODE_CHARS + +// helper fns for basic_string and string_view + +// __str_find +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find(const _CharT *__p, _SizeT __sz, + _CharT __c, _SizeT __pos) _NOEXCEPT +{ + if (__pos >= __sz) + return __npos; + const _CharT* __r = _Traits::find(__p + __pos, __sz - __pos, __c); + if (__r == 0) + return __npos; + return static_cast<_SizeT>(__r - __p); +} + +template +inline _LIBCPP_CONSTEXPR_AFTER_CXX11 const _CharT * +__search_substring(const _CharT *__first1, const _CharT *__last1, + const _CharT *__first2, const _CharT *__last2) { + // Take advantage of knowing source and pattern lengths. + // Stop short when source is smaller than pattern. + const ptrdiff_t __len2 = __last2 - __first2; + if (__len2 == 0) + return __first1; + + ptrdiff_t __len1 = __last1 - __first1; + if (__len1 < __len2) + return __last1; + + // First element of __first2 is loop invariant. + _CharT __f2 = *__first2; + while (true) { + __len1 = __last1 - __first1; + // Check whether __first1 still has at least __len2 bytes. + if (__len1 < __len2) + return __last1; + + // Find __f2 the first byte matching in __first1. + __first1 = _Traits::find(__first1, __len1 - __len2 + 1, __f2); + if (__first1 == 0) + return __last1; + + // It is faster to compare from the first byte of __first1 even if we + // already know that it matches the first byte of __first2: this is because + // __first2 is most likely aligned, as it is user's "pattern" string, and + // __first1 + 1 is most likely not aligned, as the match is in the middle of + // the string. + if (_Traits::compare(__first1, __first2, __len2) == 0) + return __first1; + + ++__first1; + } +} + +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find(const _CharT *__p, _SizeT __sz, + const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT +{ + if (__pos > __sz) + return __npos; + + if (__n == 0) // There is nothing to search, just return __pos. + return __pos; + + const _CharT *__r = __search_substring<_CharT, _Traits>( + __p + __pos, __p + __sz, __s, __s + __n); + + if (__r == __p + __sz) + return __npos; + return static_cast<_SizeT>(__r - __p); +} + + +// __str_rfind + +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_rfind(const _CharT *__p, _SizeT __sz, + _CharT __c, _SizeT __pos) _NOEXCEPT +{ + if (__sz < 1) + return __npos; + if (__pos < __sz) + ++__pos; + else + __pos = __sz; + for (const _CharT* __ps = __p + __pos; __ps != __p;) + { + if (_Traits::eq(*--__ps, __c)) + return static_cast<_SizeT>(__ps - __p); + } + return __npos; +} + +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_rfind(const _CharT *__p, _SizeT __sz, + const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT +{ + __pos = _VSTD::min(__pos, __sz); + if (__n < __sz - __pos) + __pos += __n; + else + __pos = __sz; + const _CharT* __r = _VSTD::__find_end( + __p, __p + __pos, __s, __s + __n, _Traits::eq, + random_access_iterator_tag(), random_access_iterator_tag()); + if (__n > 0 && __r == __p + __pos) + return __npos; + return static_cast<_SizeT>(__r - __p); +} + +// __str_find_first_of +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find_first_of(const _CharT *__p, _SizeT __sz, + const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT +{ + if (__pos >= __sz || __n == 0) + return __npos; + const _CharT* __r = _VSTD::__find_first_of_ce + (__p + __pos, __p + __sz, __s, __s + __n, _Traits::eq ); + if (__r == __p + __sz) + return __npos; + return static_cast<_SizeT>(__r - __p); +} + + +// __str_find_last_of +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find_last_of(const _CharT *__p, _SizeT __sz, + const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT + { + if (__n != 0) + { + if (__pos < __sz) + ++__pos; + else + __pos = __sz; + for (const _CharT* __ps = __p + __pos; __ps != __p;) + { + const _CharT* __r = _Traits::find(__s, __n, *--__ps); + if (__r) + return static_cast<_SizeT>(__ps - __p); + } + } + return __npos; +} + + +// __str_find_first_not_of +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find_first_not_of(const _CharT *__p, _SizeT __sz, + const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT +{ + if (__pos < __sz) + { + const _CharT* __pe = __p + __sz; + for (const _CharT* __ps = __p + __pos; __ps != __pe; ++__ps) + if (_Traits::find(__s, __n, *__ps) == 0) + return static_cast<_SizeT>(__ps - __p); + } + return __npos; +} + + +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find_first_not_of(const _CharT *__p, _SizeT __sz, + _CharT __c, _SizeT __pos) _NOEXCEPT +{ + if (__pos < __sz) + { + const _CharT* __pe = __p + __sz; + for (const _CharT* __ps = __p + __pos; __ps != __pe; ++__ps) + if (!_Traits::eq(*__ps, __c)) + return static_cast<_SizeT>(__ps - __p); + } + return __npos; +} + + +// __str_find_last_not_of +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find_last_not_of(const _CharT *__p, _SizeT __sz, + const _CharT* __s, _SizeT __pos, _SizeT __n) _NOEXCEPT +{ + if (__pos < __sz) + ++__pos; + else + __pos = __sz; + for (const _CharT* __ps = __p + __pos; __ps != __p;) + if (_Traits::find(__s, __n, *--__ps) == 0) + return static_cast<_SizeT>(__ps - __p); + return __npos; +} + + +template +inline _SizeT _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY +__str_find_last_not_of(const _CharT *__p, _SizeT __sz, + _CharT __c, _SizeT __pos) _NOEXCEPT +{ + if (__pos < __sz) + ++__pos; + else + __pos = __sz; + for (const _CharT* __ps = __p + __pos; __ps != __p;) + if (!_Traits::eq(*--__ps, __c)) + return static_cast<_SizeT>(__ps - __p); + return __npos; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +size_t __do_string_hash(_Ptr __p, _Ptr __e) +{ + typedef typename iterator_traits<_Ptr>::value_type value_type; + return __murmur2_or_cityhash()(__p, (__e-__p)*sizeof(value_type)); +} + +template > +struct __quoted_output_proxy +{ + _Iter __first; + _Iter __last; + _CharT __delim; + _CharT __escape; + + __quoted_output_proxy(_Iter __f, _Iter __l, _CharT __d, _CharT __e) + : __first(__f), __last(__l), __delim(__d), __escape(__e) {} + // This would be a nice place for a string_ref +}; + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___STRING diff --git a/include/libc++/__threading_support b/include/libc++/__threading_support new file mode 100644 index 00000000..0d1f1e68 --- /dev/null +++ b/include/libc++/__threading_support @@ -0,0 +1,490 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_THREADING_SUPPORT +#define _LIBCPP_THREADING_SUPPORT + +#include <__config> +#include +#include +#include + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +#pragma GCC system_header +#endif + +#if defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +# include <__external_threading> +#elif !defined(_LIBCPP_HAS_NO_THREADS) + +#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +# include +# include +#endif + +#if defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \ + defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL) || \ + defined(_LIBCPP_HAS_THREAD_API_WIN32) +#define _LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_FUNC_VIS +#else +#define _LIBCPP_THREAD_ABI_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY +#endif + +#if defined(__FreeBSD__) && defined(__clang__) && __has_attribute(no_thread_safety_analysis) +#define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS __attribute__((no_thread_safety_analysis)) +#else +#define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +#endif + +typedef ::timespec __libcpp_timespec_t; +#endif // !defined(_LIBCPP_HAS_NO_THREADS) + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if !defined(_LIBCPP_HAS_NO_THREADS) + +#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +// Mutex +typedef pthread_mutex_t __libcpp_mutex_t; +#define _LIBCPP_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER + +typedef pthread_mutex_t __libcpp_recursive_mutex_t; + +// Condition Variable +typedef pthread_cond_t __libcpp_condvar_t; +#define _LIBCPP_CONDVAR_INITIALIZER PTHREAD_COND_INITIALIZER + +// Execute once +typedef pthread_once_t __libcpp_exec_once_flag; +#define _LIBCPP_EXEC_ONCE_INITIALIZER PTHREAD_ONCE_INIT + +// Thread id +typedef pthread_t __libcpp_thread_id; + +// Thread +#define _LIBCPP_NULL_THREAD 0U + +typedef pthread_t __libcpp_thread_t; + +// Thread Local Storage +typedef pthread_key_t __libcpp_tls_key; + +#define _LIBCPP_TLS_DESTRUCTOR_CC +#elif !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +// Mutex +typedef void* __libcpp_mutex_t; +#define _LIBCPP_MUTEX_INITIALIZER 0 + +#if defined(_M_IX86) || defined(__i386__) || defined(_M_ARM) || defined(__arm__) +typedef void* __libcpp_recursive_mutex_t[6]; +#elif defined(_M_AMD64) || defined(__x86_64__) || defined(_M_ARM64) || defined(__aarch64__) +typedef void* __libcpp_recursive_mutex_t[5]; +#else +# error Unsupported architecture +#endif + +// Condition Variable +typedef void* __libcpp_condvar_t; +#define _LIBCPP_CONDVAR_INITIALIZER 0 + +// Execute Once +typedef void* __libcpp_exec_once_flag; +#define _LIBCPP_EXEC_ONCE_INITIALIZER 0 + +// Thread ID +typedef long __libcpp_thread_id; + +// Thread +#define _LIBCPP_NULL_THREAD 0U + +typedef void* __libcpp_thread_t; + +// Thread Local Storage +typedef long __libcpp_tls_key; + +#define _LIBCPP_TLS_DESTRUCTOR_CC __stdcall +#endif // !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) + +#if !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +// Mutex +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +int __libcpp_mutex_lock(__libcpp_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +int __libcpp_mutex_unlock(__libcpp_mutex_t *__m); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_mutex_destroy(__libcpp_mutex_t *__m); + +// Condition variable +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_condvar_signal(__libcpp_condvar_t* __cv); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_condvar_broadcast(__libcpp_condvar_t* __cv); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +int __libcpp_condvar_wait(__libcpp_condvar_t* __cv, __libcpp_mutex_t* __m); + +_LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_NO_THREAD_SAFETY_ANALYSIS +int __libcpp_condvar_timedwait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m, + __libcpp_timespec_t *__ts); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_condvar_destroy(__libcpp_condvar_t* __cv); + +// Execute once +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_execute_once(__libcpp_exec_once_flag *flag, + void (*init_routine)()); + +// Thread id +_LIBCPP_THREAD_ABI_VISIBILITY +bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id t2); + +_LIBCPP_THREAD_ABI_VISIBILITY +bool __libcpp_thread_id_less(__libcpp_thread_id t1, __libcpp_thread_id t2); + +// Thread +_LIBCPP_THREAD_ABI_VISIBILITY +bool __libcpp_thread_isnull(const __libcpp_thread_t *__t); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_thread_create(__libcpp_thread_t *__t, void *(*__func)(void *), + void *__arg); + +_LIBCPP_THREAD_ABI_VISIBILITY +__libcpp_thread_id __libcpp_thread_get_current_id(); + +_LIBCPP_THREAD_ABI_VISIBILITY +__libcpp_thread_id __libcpp_thread_get_id(const __libcpp_thread_t *__t); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_thread_join(__libcpp_thread_t *__t); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_thread_detach(__libcpp_thread_t *__t); + +_LIBCPP_THREAD_ABI_VISIBILITY +void __libcpp_thread_yield(); + +_LIBCPP_THREAD_ABI_VISIBILITY +void __libcpp_thread_sleep_for(const chrono::nanoseconds& __ns); + +// Thread local storage +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_tls_create(__libcpp_tls_key* __key, + void(_LIBCPP_TLS_DESTRUCTOR_CC* __at_exit)(void*)); + +_LIBCPP_THREAD_ABI_VISIBILITY +void *__libcpp_tls_get(__libcpp_tls_key __key); + +_LIBCPP_THREAD_ABI_VISIBILITY +int __libcpp_tls_set(__libcpp_tls_key __key, void *__p); + +#endif // !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) + +#if (!defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \ + defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL)) && \ + defined(_LIBCPP_HAS_THREAD_API_PTHREAD) + +int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m) +{ + pthread_mutexattr_t attr; + int __ec = pthread_mutexattr_init(&attr); + if (__ec) + return __ec; + __ec = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + if (__ec) { + pthread_mutexattr_destroy(&attr); + return __ec; + } + __ec = pthread_mutex_init(__m, &attr); + if (__ec) { + pthread_mutexattr_destroy(&attr); + return __ec; + } + __ec = pthread_mutexattr_destroy(&attr); + if (__ec) { + pthread_mutex_destroy(__m); + return __ec; + } + return 0; +} + +int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m) +{ + return pthread_mutex_lock(__m); +} + +bool __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m) +{ + return pthread_mutex_trylock(__m) == 0; +} + +int __libcpp_recursive_mutex_unlock(__libcpp_mutex_t *__m) +{ + return pthread_mutex_unlock(__m); +} + +int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m) +{ + return pthread_mutex_destroy(__m); +} + +int __libcpp_mutex_lock(__libcpp_mutex_t *__m) +{ + return pthread_mutex_lock(__m); +} + +bool __libcpp_mutex_trylock(__libcpp_mutex_t *__m) +{ + return pthread_mutex_trylock(__m) == 0; +} + +int __libcpp_mutex_unlock(__libcpp_mutex_t *__m) +{ + return pthread_mutex_unlock(__m); +} + +int __libcpp_mutex_destroy(__libcpp_mutex_t *__m) +{ + return pthread_mutex_destroy(__m); +} + +// Condition Variable +int __libcpp_condvar_signal(__libcpp_condvar_t *__cv) +{ + return pthread_cond_signal(__cv); +} + +int __libcpp_condvar_broadcast(__libcpp_condvar_t *__cv) +{ + return pthread_cond_broadcast(__cv); +} + +int __libcpp_condvar_wait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m) +{ + return pthread_cond_wait(__cv, __m); +} + +int __libcpp_condvar_timedwait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m, + __libcpp_timespec_t *__ts) +{ + return pthread_cond_timedwait(__cv, __m, __ts); +} + +int __libcpp_condvar_destroy(__libcpp_condvar_t *__cv) +{ + return pthread_cond_destroy(__cv); +} + +// Execute once +int __libcpp_execute_once(__libcpp_exec_once_flag *flag, + void (*init_routine)()) { + return pthread_once(flag, init_routine); +} + +// Thread id +// Returns non-zero if the thread ids are equal, otherwise 0 +bool __libcpp_thread_id_equal(__libcpp_thread_id t1, __libcpp_thread_id t2) +{ + return pthread_equal(t1, t2) != 0; +} + +// Returns non-zero if t1 < t2, otherwise 0 +bool __libcpp_thread_id_less(__libcpp_thread_id t1, __libcpp_thread_id t2) +{ + return t1 < t2; +} + +// Thread +bool __libcpp_thread_isnull(const __libcpp_thread_t *__t) { + return *__t == 0; +} + +int __libcpp_thread_create(__libcpp_thread_t *__t, void *(*__func)(void *), + void *__arg) +{ + return pthread_create(__t, 0, __func, __arg); +} + +__libcpp_thread_id __libcpp_thread_get_current_id() +{ + return pthread_self(); +} + +__libcpp_thread_id __libcpp_thread_get_id(const __libcpp_thread_t *__t) +{ + return *__t; +} + +int __libcpp_thread_join(__libcpp_thread_t *__t) +{ + return pthread_join(*__t, 0); +} + +int __libcpp_thread_detach(__libcpp_thread_t *__t) +{ + return pthread_detach(*__t); +} + +void __libcpp_thread_yield() +{ + sched_yield(); +} + +void __libcpp_thread_sleep_for(const chrono::nanoseconds& __ns) +{ + using namespace chrono; + seconds __s = duration_cast(__ns); + __libcpp_timespec_t __ts; + typedef decltype(__ts.tv_sec) ts_sec; + _LIBCPP_CONSTEXPR ts_sec __ts_sec_max = numeric_limits::max(); + + if (__s.count() < __ts_sec_max) + { + __ts.tv_sec = static_cast(__s.count()); + __ts.tv_nsec = static_cast((__ns - __s).count()); + } + else + { + __ts.tv_sec = __ts_sec_max; + __ts.tv_nsec = 999999999; // (10^9 - 1) + } + + while (nanosleep(&__ts, &__ts) == -1 && errno == EINTR); +} + +// Thread local storage +int __libcpp_tls_create(__libcpp_tls_key *__key, void (*__at_exit)(void *)) +{ + return pthread_key_create(__key, __at_exit); +} + +void *__libcpp_tls_get(__libcpp_tls_key __key) +{ + return pthread_getspecific(__key); +} + +int __libcpp_tls_set(__libcpp_tls_key __key, void *__p) +{ + return pthread_setspecific(__key, __p); +} + +#endif // !_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL || _LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL + +class _LIBCPP_TYPE_VIS thread; +class _LIBCPP_TYPE_VIS __thread_id; + +namespace this_thread +{ + +_LIBCPP_INLINE_VISIBILITY __thread_id get_id() _NOEXCEPT; + +} // this_thread + +template<> struct hash<__thread_id>; + +class _LIBCPP_TEMPLATE_VIS __thread_id +{ + // FIXME: pthread_t is a pointer on Darwin but a long on Linux. + // NULL is the no-thread value on Darwin. Someone needs to check + // on other platforms. We assume 0 works everywhere for now. + __libcpp_thread_id __id_; + +public: + _LIBCPP_INLINE_VISIBILITY + __thread_id() _NOEXCEPT : __id_(0) {} + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(__thread_id __x, __thread_id __y) _NOEXCEPT + { // don't pass id==0 to underlying routines + if (__x.__id_ == 0) return __y.__id_ == 0; + if (__y.__id_ == 0) return false; + return __libcpp_thread_id_equal(__x.__id_, __y.__id_); + } + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(__thread_id __x, __thread_id __y) _NOEXCEPT + {return !(__x == __y);} + friend _LIBCPP_INLINE_VISIBILITY + bool operator< (__thread_id __x, __thread_id __y) _NOEXCEPT + { // id==0 is always less than any other thread_id + if (__x.__id_ == 0) return __y.__id_ != 0; + if (__y.__id_ == 0) return false; + return __libcpp_thread_id_less(__x.__id_, __y.__id_); + } + friend _LIBCPP_INLINE_VISIBILITY + bool operator<=(__thread_id __x, __thread_id __y) _NOEXCEPT + {return !(__y < __x);} + friend _LIBCPP_INLINE_VISIBILITY + bool operator> (__thread_id __x, __thread_id __y) _NOEXCEPT + {return __y < __x ;} + friend _LIBCPP_INLINE_VISIBILITY + bool operator>=(__thread_id __x, __thread_id __y) _NOEXCEPT + {return !(__x < __y);} + + _LIBCPP_INLINE_VISIBILITY + void __reset() { __id_ = 0; } + + template + friend + _LIBCPP_INLINE_VISIBILITY + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, __thread_id __id); + +private: + _LIBCPP_INLINE_VISIBILITY + __thread_id(__libcpp_thread_id __id) : __id_(__id) {} + + friend __thread_id this_thread::get_id() _NOEXCEPT; + friend class _LIBCPP_TYPE_VIS thread; + friend struct _LIBCPP_TEMPLATE_VIS hash<__thread_id>; +}; + +namespace this_thread +{ + +inline _LIBCPP_INLINE_VISIBILITY +__thread_id +get_id() _NOEXCEPT +{ + return __libcpp_thread_get_current_id(); +} + +} // this_thread + +#endif // !_LIBCPP_HAS_NO_THREADS + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_THREADING_SUPPORT diff --git a/include/libc++/__tree b/include/libc++/__tree new file mode 100644 index 00000000..15b03ec8 --- /dev/null +++ b/include/libc++/__tree @@ -0,0 +1,2843 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___TREE +#define _LIBCPP___TREE + +#include <__config> +#include +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if defined(__GNUC__) && !defined(__clang__) // gcc.gnu.org/PR37804 +template class _LIBCPP_TEMPLATE_VIS map; +template class _LIBCPP_TEMPLATE_VIS multimap; +template class _LIBCPP_TEMPLATE_VIS set; +template class _LIBCPP_TEMPLATE_VIS multiset; +#endif + +template class __tree; +template + class _LIBCPP_TEMPLATE_VIS __tree_iterator; +template + class _LIBCPP_TEMPLATE_VIS __tree_const_iterator; + +template class __tree_end_node; +template class __tree_node_base; +template class __tree_node; + +template +struct __value_type; + +template class __map_node_destructor; +template class _LIBCPP_TEMPLATE_VIS __map_iterator; +template class _LIBCPP_TEMPLATE_VIS __map_const_iterator; + +/* + +_NodePtr algorithms + +The algorithms taking _NodePtr are red black tree algorithms. Those +algorithms taking a parameter named __root should assume that __root +points to a proper red black tree (unless otherwise specified). + +Each algorithm herein assumes that __root->__parent_ points to a non-null +structure which has a member __left_ which points back to __root. No other +member is read or written to at __root->__parent_. + +__root->__parent_ will be referred to below (in comments only) as end_node. +end_node->__left_ is an externably accessible lvalue for __root, and can be +changed by node insertion and removal (without explicit reference to end_node). + +All nodes (with the exception of end_node), even the node referred to as +__root, have a non-null __parent_ field. + +*/ + +// Returns: true if __x is a left child of its parent, else false +// Precondition: __x != nullptr. +template +inline _LIBCPP_INLINE_VISIBILITY +bool +__tree_is_left_child(_NodePtr __x) _NOEXCEPT +{ + return __x == __x->__parent_->__left_; +} + +// Determines if the subtree rooted at __x is a proper red black subtree. If +// __x is a proper subtree, returns the black height (null counts as 1). If +// __x is an improper subtree, returns 0. +template +unsigned +__tree_sub_invariant(_NodePtr __x) +{ + if (__x == nullptr) + return 1; + // parent consistency checked by caller + // check __x->__left_ consistency + if (__x->__left_ != nullptr && __x->__left_->__parent_ != __x) + return 0; + // check __x->__right_ consistency + if (__x->__right_ != nullptr && __x->__right_->__parent_ != __x) + return 0; + // check __x->__left_ != __x->__right_ unless both are nullptr + if (__x->__left_ == __x->__right_ && __x->__left_ != nullptr) + return 0; + // If this is red, neither child can be red + if (!__x->__is_black_) + { + if (__x->__left_ && !__x->__left_->__is_black_) + return 0; + if (__x->__right_ && !__x->__right_->__is_black_) + return 0; + } + unsigned __h = __tree_sub_invariant(__x->__left_); + if (__h == 0) + return 0; // invalid left subtree + if (__h != __tree_sub_invariant(__x->__right_)) + return 0; // invalid or different height right subtree + return __h + __x->__is_black_; // return black height of this node +} + +// Determines if the red black tree rooted at __root is a proper red black tree. +// __root == nullptr is a proper tree. Returns true is __root is a proper +// red black tree, else returns false. +template +bool +__tree_invariant(_NodePtr __root) +{ + if (__root == nullptr) + return true; + // check __x->__parent_ consistency + if (__root->__parent_ == nullptr) + return false; + if (!__tree_is_left_child(__root)) + return false; + // root must be black + if (!__root->__is_black_) + return false; + // do normal node checks + return __tree_sub_invariant(__root) != 0; +} + +// Returns: pointer to the left-most node under __x. +// Precondition: __x != nullptr. +template +inline _LIBCPP_INLINE_VISIBILITY +_NodePtr +__tree_min(_NodePtr __x) _NOEXCEPT +{ + while (__x->__left_ != nullptr) + __x = __x->__left_; + return __x; +} + +// Returns: pointer to the right-most node under __x. +// Precondition: __x != nullptr. +template +inline _LIBCPP_INLINE_VISIBILITY +_NodePtr +__tree_max(_NodePtr __x) _NOEXCEPT +{ + while (__x->__right_ != nullptr) + __x = __x->__right_; + return __x; +} + +// Returns: pointer to the next in-order node after __x. +// Precondition: __x != nullptr. +template +_NodePtr +__tree_next(_NodePtr __x) _NOEXCEPT +{ + if (__x->__right_ != nullptr) + return __tree_min(__x->__right_); + while (!__tree_is_left_child(__x)) + __x = __x->__parent_unsafe(); + return __x->__parent_unsafe(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_EndNodePtr +__tree_next_iter(_NodePtr __x) _NOEXCEPT +{ + if (__x->__right_ != nullptr) + return static_cast<_EndNodePtr>(__tree_min(__x->__right_)); + while (!__tree_is_left_child(__x)) + __x = __x->__parent_unsafe(); + return static_cast<_EndNodePtr>(__x->__parent_); +} + +// Returns: pointer to the previous in-order node before __x. +// Precondition: __x != nullptr. +// Note: __x may be the end node. +template +inline _LIBCPP_INLINE_VISIBILITY +_NodePtr +__tree_prev_iter(_EndNodePtr __x) _NOEXCEPT +{ + if (__x->__left_ != nullptr) + return __tree_max(__x->__left_); + _NodePtr __xx = static_cast<_NodePtr>(__x); + while (__tree_is_left_child(__xx)) + __xx = __xx->__parent_unsafe(); + return __xx->__parent_unsafe(); +} + +// Returns: pointer to a node which has no children +// Precondition: __x != nullptr. +template +_NodePtr +__tree_leaf(_NodePtr __x) _NOEXCEPT +{ + while (true) + { + if (__x->__left_ != nullptr) + { + __x = __x->__left_; + continue; + } + if (__x->__right_ != nullptr) + { + __x = __x->__right_; + continue; + } + break; + } + return __x; +} + +// Effects: Makes __x->__right_ the subtree root with __x as its left child +// while preserving in-order order. +// Precondition: __x->__right_ != nullptr +template +void +__tree_left_rotate(_NodePtr __x) _NOEXCEPT +{ + _NodePtr __y = __x->__right_; + __x->__right_ = __y->__left_; + if (__x->__right_ != nullptr) + __x->__right_->__set_parent(__x); + __y->__parent_ = __x->__parent_; + if (__tree_is_left_child(__x)) + __x->__parent_->__left_ = __y; + else + __x->__parent_unsafe()->__right_ = __y; + __y->__left_ = __x; + __x->__set_parent(__y); +} + +// Effects: Makes __x->__left_ the subtree root with __x as its right child +// while preserving in-order order. +// Precondition: __x->__left_ != nullptr +template +void +__tree_right_rotate(_NodePtr __x) _NOEXCEPT +{ + _NodePtr __y = __x->__left_; + __x->__left_ = __y->__right_; + if (__x->__left_ != nullptr) + __x->__left_->__set_parent(__x); + __y->__parent_ = __x->__parent_; + if (__tree_is_left_child(__x)) + __x->__parent_->__left_ = __y; + else + __x->__parent_unsafe()->__right_ = __y; + __y->__right_ = __x; + __x->__set_parent(__y); +} + +// Effects: Rebalances __root after attaching __x to a leaf. +// Precondition: __root != nulptr && __x != nullptr. +// __x has no children. +// __x == __root or == a direct or indirect child of __root. +// If __x were to be unlinked from __root (setting __root to +// nullptr if __root == __x), __tree_invariant(__root) == true. +// Postcondition: __tree_invariant(end_node->__left_) == true. end_node->__left_ +// may be different than the value passed in as __root. +template +void +__tree_balance_after_insert(_NodePtr __root, _NodePtr __x) _NOEXCEPT +{ + __x->__is_black_ = __x == __root; + while (__x != __root && !__x->__parent_unsafe()->__is_black_) + { + // __x->__parent_ != __root because __x->__parent_->__is_black == false + if (__tree_is_left_child(__x->__parent_unsafe())) + { + _NodePtr __y = __x->__parent_unsafe()->__parent_unsafe()->__right_; + if (__y != nullptr && !__y->__is_black_) + { + __x = __x->__parent_unsafe(); + __x->__is_black_ = true; + __x = __x->__parent_unsafe(); + __x->__is_black_ = __x == __root; + __y->__is_black_ = true; + } + else + { + if (!__tree_is_left_child(__x)) + { + __x = __x->__parent_unsafe(); + __tree_left_rotate(__x); + } + __x = __x->__parent_unsafe(); + __x->__is_black_ = true; + __x = __x->__parent_unsafe(); + __x->__is_black_ = false; + __tree_right_rotate(__x); + break; + } + } + else + { + _NodePtr __y = __x->__parent_unsafe()->__parent_->__left_; + if (__y != nullptr && !__y->__is_black_) + { + __x = __x->__parent_unsafe(); + __x->__is_black_ = true; + __x = __x->__parent_unsafe(); + __x->__is_black_ = __x == __root; + __y->__is_black_ = true; + } + else + { + if (__tree_is_left_child(__x)) + { + __x = __x->__parent_unsafe(); + __tree_right_rotate(__x); + } + __x = __x->__parent_unsafe(); + __x->__is_black_ = true; + __x = __x->__parent_unsafe(); + __x->__is_black_ = false; + __tree_left_rotate(__x); + break; + } + } + } +} + +// Precondition: __root != nullptr && __z != nullptr. +// __tree_invariant(__root) == true. +// __z == __root or == a direct or indirect child of __root. +// Effects: unlinks __z from the tree rooted at __root, rebalancing as needed. +// Postcondition: __tree_invariant(end_node->__left_) == true && end_node->__left_ +// nor any of its children refer to __z. end_node->__left_ +// may be different than the value passed in as __root. +template +void +__tree_remove(_NodePtr __root, _NodePtr __z) _NOEXCEPT +{ + // __z will be removed from the tree. Client still needs to destruct/deallocate it + // __y is either __z, or if __z has two children, __tree_next(__z). + // __y will have at most one child. + // __y will be the initial hole in the tree (make the hole at a leaf) + _NodePtr __y = (__z->__left_ == nullptr || __z->__right_ == nullptr) ? + __z : __tree_next(__z); + // __x is __y's possibly null single child + _NodePtr __x = __y->__left_ != nullptr ? __y->__left_ : __y->__right_; + // __w is __x's possibly null uncle (will become __x's sibling) + _NodePtr __w = nullptr; + // link __x to __y's parent, and find __w + if (__x != nullptr) + __x->__parent_ = __y->__parent_; + if (__tree_is_left_child(__y)) + { + __y->__parent_->__left_ = __x; + if (__y != __root) + __w = __y->__parent_unsafe()->__right_; + else + __root = __x; // __w == nullptr + } + else + { + __y->__parent_unsafe()->__right_ = __x; + // __y can't be root if it is a right child + __w = __y->__parent_->__left_; + } + bool __removed_black = __y->__is_black_; + // If we didn't remove __z, do so now by splicing in __y for __z, + // but copy __z's color. This does not impact __x or __w. + if (__y != __z) + { + // __z->__left_ != nulptr but __z->__right_ might == __x == nullptr + __y->__parent_ = __z->__parent_; + if (__tree_is_left_child(__z)) + __y->__parent_->__left_ = __y; + else + __y->__parent_unsafe()->__right_ = __y; + __y->__left_ = __z->__left_; + __y->__left_->__set_parent(__y); + __y->__right_ = __z->__right_; + if (__y->__right_ != nullptr) + __y->__right_->__set_parent(__y); + __y->__is_black_ = __z->__is_black_; + if (__root == __z) + __root = __y; + } + // There is no need to rebalance if we removed a red, or if we removed + // the last node. + if (__removed_black && __root != nullptr) + { + // Rebalance: + // __x has an implicit black color (transferred from the removed __y) + // associated with it, no matter what its color is. + // If __x is __root (in which case it can't be null), it is supposed + // to be black anyway, and if it is doubly black, then the double + // can just be ignored. + // If __x is red (in which case it can't be null), then it can absorb + // the implicit black just by setting its color to black. + // Since __y was black and only had one child (which __x points to), __x + // is either red with no children, else null, otherwise __y would have + // different black heights under left and right pointers. + // if (__x == __root || __x != nullptr && !__x->__is_black_) + if (__x != nullptr) + __x->__is_black_ = true; + else + { + // Else __x isn't root, and is "doubly black", even though it may + // be null. __w can not be null here, else the parent would + // see a black height >= 2 on the __x side and a black height + // of 1 on the __w side (__w must be a non-null black or a red + // with a non-null black child). + while (true) + { + if (!__tree_is_left_child(__w)) // if x is left child + { + if (!__w->__is_black_) + { + __w->__is_black_ = true; + __w->__parent_unsafe()->__is_black_ = false; + __tree_left_rotate(__w->__parent_unsafe()); + // __x is still valid + // reset __root only if necessary + if (__root == __w->__left_) + __root = __w; + // reset sibling, and it still can't be null + __w = __w->__left_->__right_; + } + // __w->__is_black_ is now true, __w may have null children + if ((__w->__left_ == nullptr || __w->__left_->__is_black_) && + (__w->__right_ == nullptr || __w->__right_->__is_black_)) + { + __w->__is_black_ = false; + __x = __w->__parent_unsafe(); + // __x can no longer be null + if (__x == __root || !__x->__is_black_) + { + __x->__is_black_ = true; + break; + } + // reset sibling, and it still can't be null + __w = __tree_is_left_child(__x) ? + __x->__parent_unsafe()->__right_ : + __x->__parent_->__left_; + // continue; + } + else // __w has a red child + { + if (__w->__right_ == nullptr || __w->__right_->__is_black_) + { + // __w left child is non-null and red + __w->__left_->__is_black_ = true; + __w->__is_black_ = false; + __tree_right_rotate(__w); + // __w is known not to be root, so root hasn't changed + // reset sibling, and it still can't be null + __w = __w->__parent_unsafe(); + } + // __w has a right red child, left child may be null + __w->__is_black_ = __w->__parent_unsafe()->__is_black_; + __w->__parent_unsafe()->__is_black_ = true; + __w->__right_->__is_black_ = true; + __tree_left_rotate(__w->__parent_unsafe()); + break; + } + } + else + { + if (!__w->__is_black_) + { + __w->__is_black_ = true; + __w->__parent_unsafe()->__is_black_ = false; + __tree_right_rotate(__w->__parent_unsafe()); + // __x is still valid + // reset __root only if necessary + if (__root == __w->__right_) + __root = __w; + // reset sibling, and it still can't be null + __w = __w->__right_->__left_; + } + // __w->__is_black_ is now true, __w may have null children + if ((__w->__left_ == nullptr || __w->__left_->__is_black_) && + (__w->__right_ == nullptr || __w->__right_->__is_black_)) + { + __w->__is_black_ = false; + __x = __w->__parent_unsafe(); + // __x can no longer be null + if (!__x->__is_black_ || __x == __root) + { + __x->__is_black_ = true; + break; + } + // reset sibling, and it still can't be null + __w = __tree_is_left_child(__x) ? + __x->__parent_unsafe()->__right_ : + __x->__parent_->__left_; + // continue; + } + else // __w has a red child + { + if (__w->__left_ == nullptr || __w->__left_->__is_black_) + { + // __w right child is non-null and red + __w->__right_->__is_black_ = true; + __w->__is_black_ = false; + __tree_left_rotate(__w); + // __w is known not to be root, so root hasn't changed + // reset sibling, and it still can't be null + __w = __w->__parent_unsafe(); + } + // __w has a left red child, right child may be null + __w->__is_black_ = __w->__parent_unsafe()->__is_black_; + __w->__parent_unsafe()->__is_black_ = true; + __w->__left_->__is_black_ = true; + __tree_right_rotate(__w->__parent_unsafe()); + break; + } + } + } + } + } +} + +// node traits + + +#ifndef _LIBCPP_CXX03_LANG +template +struct __is_tree_value_type_imp : false_type {}; + +template +struct __is_tree_value_type_imp<__value_type<_Key, _Value>> : true_type {}; + +template +struct __is_tree_value_type : false_type {}; + +template +struct __is_tree_value_type<_One> : __is_tree_value_type_imp::type> {}; +#endif + +template +struct __tree_key_value_types { + typedef _Tp key_type; + typedef _Tp __node_value_type; + typedef _Tp __container_value_type; + static const bool __is_map = false; + + _LIBCPP_INLINE_VISIBILITY + static key_type const& __get_key(_Tp const& __v) { + return __v; + } + _LIBCPP_INLINE_VISIBILITY + static __container_value_type const& __get_value(__node_value_type const& __v) { + return __v; + } + _LIBCPP_INLINE_VISIBILITY + static __container_value_type* __get_ptr(__node_value_type& __n) { + return _VSTD::addressof(__n); + } +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + static __container_value_type&& __move(__node_value_type& __v) { + return _VSTD::move(__v); + } +#endif +}; + +template +struct __tree_key_value_types<__value_type<_Key, _Tp> > { + typedef _Key key_type; + typedef _Tp mapped_type; + typedef __value_type<_Key, _Tp> __node_value_type; + typedef pair __container_value_type; + typedef __container_value_type __map_value_type; + static const bool __is_map = true; + + _LIBCPP_INLINE_VISIBILITY + static key_type const& + __get_key(__node_value_type const& __t) { + return __t.__get_value().first; + } + + template + _LIBCPP_INLINE_VISIBILITY + static typename enable_if<__is_same_uncvref<_Up, __container_value_type>::value, + key_type const&>::type + __get_key(_Up& __t) { + return __t.first; + } + + _LIBCPP_INLINE_VISIBILITY + static __container_value_type const& + __get_value(__node_value_type const& __t) { + return __t.__get_value(); + } + + template + _LIBCPP_INLINE_VISIBILITY + static typename enable_if<__is_same_uncvref<_Up, __container_value_type>::value, + __container_value_type const&>::type + __get_value(_Up& __t) { + return __t; + } + + _LIBCPP_INLINE_VISIBILITY + static __container_value_type* __get_ptr(__node_value_type& __n) { + return _VSTD::addressof(__n.__get_value()); + } + +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + static pair __move(__node_value_type& __v) { + return __v.__move(); + } +#endif +}; + +template +struct __tree_node_base_types { + typedef _VoidPtr __void_pointer; + + typedef __tree_node_base<__void_pointer> __node_base_type; + typedef typename __rebind_pointer<_VoidPtr, __node_base_type>::type + __node_base_pointer; + + typedef __tree_end_node<__node_base_pointer> __end_node_type; + typedef typename __rebind_pointer<_VoidPtr, __end_node_type>::type + __end_node_pointer; +#if defined(_LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB) + typedef __end_node_pointer __parent_pointer; +#else + typedef typename conditional< + is_pointer<__end_node_pointer>::value, + __end_node_pointer, + __node_base_pointer>::type __parent_pointer; +#endif + +private: + static_assert((is_same::element_type, void>::value), + "_VoidPtr does not point to unqualified void type"); +}; + +template , + bool = _KVTypes::__is_map> +struct __tree_map_pointer_types {}; + +template +struct __tree_map_pointer_types<_Tp, _AllocPtr, _KVTypes, true> { + typedef typename _KVTypes::__map_value_type _Mv; + typedef typename __rebind_pointer<_AllocPtr, _Mv>::type + __map_value_type_pointer; + typedef typename __rebind_pointer<_AllocPtr, const _Mv>::type + __const_map_value_type_pointer; +}; + +template ::element_type> +struct __tree_node_types; + +template +struct __tree_node_types<_NodePtr, __tree_node<_Tp, _VoidPtr> > + : public __tree_node_base_types<_VoidPtr>, + __tree_key_value_types<_Tp>, + __tree_map_pointer_types<_Tp, _VoidPtr> +{ + typedef __tree_node_base_types<_VoidPtr> __base; + typedef __tree_key_value_types<_Tp> __key_base; + typedef __tree_map_pointer_types<_Tp, _VoidPtr> __map_pointer_base; +public: + + typedef typename pointer_traits<_NodePtr>::element_type __node_type; + typedef _NodePtr __node_pointer; + + typedef _Tp __node_value_type; + typedef typename __rebind_pointer<_VoidPtr, __node_value_type>::type + __node_value_type_pointer; + typedef typename __rebind_pointer<_VoidPtr, const __node_value_type>::type + __const_node_value_type_pointer; +#if defined(_LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB) + typedef typename __base::__end_node_pointer __iter_pointer; +#else + typedef typename conditional< + is_pointer<__node_pointer>::value, + typename __base::__end_node_pointer, + __node_pointer>::type __iter_pointer; +#endif +private: + static_assert(!is_const<__node_type>::value, + "_NodePtr should never be a pointer to const"); + static_assert((is_same::type, + _NodePtr>::value), "_VoidPtr does not rebind to _NodePtr."); +}; + +template +struct __make_tree_node_types { + typedef typename __rebind_pointer<_VoidPtr, __tree_node<_ValueTp, _VoidPtr> >::type + _NodePtr; + typedef __tree_node_types<_NodePtr> type; +}; + +// node + +template +class __tree_end_node +{ +public: + typedef _Pointer pointer; + pointer __left_; + + _LIBCPP_INLINE_VISIBILITY + __tree_end_node() _NOEXCEPT : __left_() {} +}; + +template +class __tree_node_base + : public __tree_node_base_types<_VoidPtr>::__end_node_type +{ + typedef __tree_node_base_types<_VoidPtr> _NodeBaseTypes; + +public: + typedef typename _NodeBaseTypes::__node_base_pointer pointer; + typedef typename _NodeBaseTypes::__parent_pointer __parent_pointer; + + pointer __right_; + __parent_pointer __parent_; + bool __is_black_; + + _LIBCPP_INLINE_VISIBILITY + pointer __parent_unsafe() const { return static_cast(__parent_);} + + _LIBCPP_INLINE_VISIBILITY + void __set_parent(pointer __p) { + __parent_ = static_cast<__parent_pointer>(__p); + } + +private: + ~__tree_node_base() _LIBCPP_EQUAL_DELETE; + __tree_node_base(__tree_node_base const&) _LIBCPP_EQUAL_DELETE; + __tree_node_base& operator=(__tree_node_base const&) _LIBCPP_EQUAL_DELETE; +}; + +template +class __tree_node + : public __tree_node_base<_VoidPtr> +{ +public: + typedef _Tp __node_value_type; + + __node_value_type __value_; + +private: + ~__tree_node() _LIBCPP_EQUAL_DELETE; + __tree_node(__tree_node const&) _LIBCPP_EQUAL_DELETE; + __tree_node& operator=(__tree_node const&) _LIBCPP_EQUAL_DELETE; +}; + + +template +class __tree_node_destructor +{ + typedef _Allocator allocator_type; + typedef allocator_traits __alloc_traits; + +public: + typedef typename __alloc_traits::pointer pointer; +private: + typedef __tree_node_types _NodeTypes; + allocator_type& __na_; + + __tree_node_destructor& operator=(const __tree_node_destructor&); + +public: + bool __value_constructed; + + _LIBCPP_INLINE_VISIBILITY + explicit __tree_node_destructor(allocator_type& __na, bool __val = false) _NOEXCEPT + : __na_(__na), + __value_constructed(__val) + {} + + _LIBCPP_INLINE_VISIBILITY + void operator()(pointer __p) _NOEXCEPT + { + if (__value_constructed) + __alloc_traits::destroy(__na_, _NodeTypes::__get_ptr(__p->__value_)); + if (__p) + __alloc_traits::deallocate(__na_, __p, 1); + } + + template friend class __map_node_destructor; +}; + +#if _LIBCPP_STD_VER > 14 +template +struct __generic_container_node_destructor; +template +struct __generic_container_node_destructor<__tree_node<_Tp, _VoidPtr>, _Alloc> + : __tree_node_destructor<_Alloc> +{ + using __tree_node_destructor<_Alloc>::__tree_node_destructor; +}; +#endif + +template +class _LIBCPP_TEMPLATE_VIS __tree_iterator +{ + typedef __tree_node_types<_NodePtr> _NodeTypes; + typedef _NodePtr __node_pointer; + typedef typename _NodeTypes::__node_base_pointer __node_base_pointer; + typedef typename _NodeTypes::__end_node_pointer __end_node_pointer; + typedef typename _NodeTypes::__iter_pointer __iter_pointer; + typedef pointer_traits<__node_pointer> __pointer_traits; + + __iter_pointer __ptr_; + +public: + typedef bidirectional_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _DiffType difference_type; + typedef value_type& reference; + typedef typename _NodeTypes::__node_value_type_pointer pointer; + + _LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT +#if _LIBCPP_STD_VER > 11 + : __ptr_(nullptr) +#endif + {} + + _LIBCPP_INLINE_VISIBILITY reference operator*() const + {return __get_np()->__value_;} + _LIBCPP_INLINE_VISIBILITY pointer operator->() const + {return pointer_traits::pointer_to(__get_np()->__value_);} + + _LIBCPP_INLINE_VISIBILITY + __tree_iterator& operator++() { + __ptr_ = static_cast<__iter_pointer>( + __tree_next_iter<__end_node_pointer>(static_cast<__node_base_pointer>(__ptr_))); + return *this; + } + _LIBCPP_INLINE_VISIBILITY + __tree_iterator operator++(int) + {__tree_iterator __t(*this); ++(*this); return __t;} + + _LIBCPP_INLINE_VISIBILITY + __tree_iterator& operator--() { + __ptr_ = static_cast<__iter_pointer>(__tree_prev_iter<__node_base_pointer>( + static_cast<__end_node_pointer>(__ptr_))); + return *this; + } + _LIBCPP_INLINE_VISIBILITY + __tree_iterator operator--(int) + {__tree_iterator __t(*this); --(*this); return __t;} + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(const __tree_iterator& __x, const __tree_iterator& __y) + {return __x.__ptr_ == __y.__ptr_;} + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(const __tree_iterator& __x, const __tree_iterator& __y) + {return !(__x == __y);} + +private: + _LIBCPP_INLINE_VISIBILITY + explicit __tree_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {} + _LIBCPP_INLINE_VISIBILITY + explicit __tree_iterator(__end_node_pointer __p) _NOEXCEPT : __ptr_(__p) {} + _LIBCPP_INLINE_VISIBILITY + __node_pointer __get_np() const { return static_cast<__node_pointer>(__ptr_); } + template friend class __tree; + template friend class _LIBCPP_TEMPLATE_VIS __tree_const_iterator; + template friend class _LIBCPP_TEMPLATE_VIS __map_iterator; + template friend class _LIBCPP_TEMPLATE_VIS map; + template friend class _LIBCPP_TEMPLATE_VIS multimap; + template friend class _LIBCPP_TEMPLATE_VIS set; + template friend class _LIBCPP_TEMPLATE_VIS multiset; +}; + +template +class _LIBCPP_TEMPLATE_VIS __tree_const_iterator +{ + typedef __tree_node_types<_NodePtr> _NodeTypes; + typedef typename _NodeTypes::__node_pointer __node_pointer; + typedef typename _NodeTypes::__node_base_pointer __node_base_pointer; + typedef typename _NodeTypes::__end_node_pointer __end_node_pointer; + typedef typename _NodeTypes::__iter_pointer __iter_pointer; + typedef pointer_traits<__node_pointer> __pointer_traits; + + __iter_pointer __ptr_; + +public: + typedef bidirectional_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _DiffType difference_type; + typedef const value_type& reference; + typedef typename _NodeTypes::__const_node_value_type_pointer pointer; + + _LIBCPP_INLINE_VISIBILITY __tree_const_iterator() _NOEXCEPT +#if _LIBCPP_STD_VER > 11 + : __ptr_(nullptr) +#endif + {} + +private: + typedef __tree_iterator + __non_const_iterator; +public: + _LIBCPP_INLINE_VISIBILITY + __tree_const_iterator(__non_const_iterator __p) _NOEXCEPT + : __ptr_(__p.__ptr_) {} + + _LIBCPP_INLINE_VISIBILITY reference operator*() const + {return __get_np()->__value_;} + _LIBCPP_INLINE_VISIBILITY pointer operator->() const + {return pointer_traits::pointer_to(__get_np()->__value_);} + + _LIBCPP_INLINE_VISIBILITY + __tree_const_iterator& operator++() { + __ptr_ = static_cast<__iter_pointer>( + __tree_next_iter<__end_node_pointer>(static_cast<__node_base_pointer>(__ptr_))); + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __tree_const_iterator operator++(int) + {__tree_const_iterator __t(*this); ++(*this); return __t;} + + _LIBCPP_INLINE_VISIBILITY + __tree_const_iterator& operator--() { + __ptr_ = static_cast<__iter_pointer>(__tree_prev_iter<__node_base_pointer>( + static_cast<__end_node_pointer>(__ptr_))); + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __tree_const_iterator operator--(int) + {__tree_const_iterator __t(*this); --(*this); return __t;} + + friend _LIBCPP_INLINE_VISIBILITY + bool operator==(const __tree_const_iterator& __x, const __tree_const_iterator& __y) + {return __x.__ptr_ == __y.__ptr_;} + friend _LIBCPP_INLINE_VISIBILITY + bool operator!=(const __tree_const_iterator& __x, const __tree_const_iterator& __y) + {return !(__x == __y);} + +private: + _LIBCPP_INLINE_VISIBILITY + explicit __tree_const_iterator(__node_pointer __p) _NOEXCEPT + : __ptr_(__p) {} + _LIBCPP_INLINE_VISIBILITY + explicit __tree_const_iterator(__end_node_pointer __p) _NOEXCEPT + : __ptr_(__p) {} + _LIBCPP_INLINE_VISIBILITY + __node_pointer __get_np() const { return static_cast<__node_pointer>(__ptr_); } + + template friend class __tree; + template friend class _LIBCPP_TEMPLATE_VIS map; + template friend class _LIBCPP_TEMPLATE_VIS multimap; + template friend class _LIBCPP_TEMPLATE_VIS set; + template friend class _LIBCPP_TEMPLATE_VIS multiset; + template friend class _LIBCPP_TEMPLATE_VIS __map_const_iterator; + +}; + +template +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_DIAGNOSE_WARNING(!std::__invokable<_Compare const&, _Tp const&, _Tp const&>::value, + "the specified comparator type does not provide a viable const call operator") +#endif +int __diagnose_non_const_comparator(); + +template +class __tree +{ +public: + typedef _Tp value_type; + typedef _Compare value_compare; + typedef _Allocator allocator_type; + +private: + typedef allocator_traits __alloc_traits; + typedef typename __make_tree_node_types::type + _NodeTypes; + typedef typename _NodeTypes::key_type key_type; +public: + typedef typename _NodeTypes::__node_value_type __node_value_type; + typedef typename _NodeTypes::__container_value_type __container_value_type; + + typedef typename __alloc_traits::pointer pointer; + typedef typename __alloc_traits::const_pointer const_pointer; + typedef typename __alloc_traits::size_type size_type; + typedef typename __alloc_traits::difference_type difference_type; + +public: + typedef typename _NodeTypes::__void_pointer __void_pointer; + + typedef typename _NodeTypes::__node_type __node; + typedef typename _NodeTypes::__node_pointer __node_pointer; + + typedef typename _NodeTypes::__node_base_type __node_base; + typedef typename _NodeTypes::__node_base_pointer __node_base_pointer; + + typedef typename _NodeTypes::__end_node_type __end_node_t; + typedef typename _NodeTypes::__end_node_pointer __end_node_ptr; + + typedef typename _NodeTypes::__parent_pointer __parent_pointer; + typedef typename _NodeTypes::__iter_pointer __iter_pointer; + + typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; + typedef allocator_traits<__node_allocator> __node_traits; + +private: + // check for sane allocator pointer rebinding semantics. Rebinding the + // allocator for a new pointer type should be exactly the same as rebinding + // the pointer using 'pointer_traits'. + static_assert((is_same<__node_pointer, typename __node_traits::pointer>::value), + "Allocator does not rebind pointers in a sane manner."); + typedef typename __rebind_alloc_helper<__node_traits, __node_base>::type + __node_base_allocator; + typedef allocator_traits<__node_base_allocator> __node_base_traits; + static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value), + "Allocator does not rebind pointers in a sane manner."); + +private: + __iter_pointer __begin_node_; + __compressed_pair<__end_node_t, __node_allocator> __pair1_; + __compressed_pair __pair3_; + +public: + _LIBCPP_INLINE_VISIBILITY + __iter_pointer __end_node() _NOEXCEPT + { + return static_cast<__iter_pointer>( + pointer_traits<__end_node_ptr>::pointer_to(__pair1_.first()) + ); + } + _LIBCPP_INLINE_VISIBILITY + __iter_pointer __end_node() const _NOEXCEPT + { + return static_cast<__iter_pointer>( + pointer_traits<__end_node_ptr>::pointer_to( + const_cast<__end_node_t&>(__pair1_.first()) + ) + ); + } + _LIBCPP_INLINE_VISIBILITY + __node_allocator& __node_alloc() _NOEXCEPT {return __pair1_.second();} +private: + _LIBCPP_INLINE_VISIBILITY + const __node_allocator& __node_alloc() const _NOEXCEPT + {return __pair1_.second();} + _LIBCPP_INLINE_VISIBILITY + __iter_pointer& __begin_node() _NOEXCEPT {return __begin_node_;} + _LIBCPP_INLINE_VISIBILITY + const __iter_pointer& __begin_node() const _NOEXCEPT {return __begin_node_;} +public: + _LIBCPP_INLINE_VISIBILITY + allocator_type __alloc() const _NOEXCEPT + {return allocator_type(__node_alloc());} +private: + _LIBCPP_INLINE_VISIBILITY + size_type& size() _NOEXCEPT {return __pair3_.first();} +public: + _LIBCPP_INLINE_VISIBILITY + const size_type& size() const _NOEXCEPT {return __pair3_.first();} + _LIBCPP_INLINE_VISIBILITY + value_compare& value_comp() _NOEXCEPT {return __pair3_.second();} + _LIBCPP_INLINE_VISIBILITY + const value_compare& value_comp() const _NOEXCEPT + {return __pair3_.second();} +public: + + _LIBCPP_INLINE_VISIBILITY + __node_pointer __root() const _NOEXCEPT + {return static_cast<__node_pointer>(__end_node()->__left_);} + + __node_base_pointer* __root_ptr() const _NOEXCEPT { + return _VSTD::addressof(__end_node()->__left_); + } + + typedef __tree_iterator iterator; + typedef __tree_const_iterator const_iterator; + + explicit __tree(const value_compare& __comp) + _NOEXCEPT_( + is_nothrow_default_constructible<__node_allocator>::value && + is_nothrow_copy_constructible::value); + explicit __tree(const allocator_type& __a); + __tree(const value_compare& __comp, const allocator_type& __a); + __tree(const __tree& __t); + __tree& operator=(const __tree& __t); + template + void __assign_unique(_ForwardIterator __first, _ForwardIterator __last); + template + void __assign_multi(_InputIterator __first, _InputIterator __last); +#ifndef _LIBCPP_CXX03_LANG + __tree(__tree&& __t) + _NOEXCEPT_( + is_nothrow_move_constructible<__node_allocator>::value && + is_nothrow_move_constructible::value); + __tree(__tree&& __t, const allocator_type& __a); + __tree& operator=(__tree&& __t) + _NOEXCEPT_( + __node_traits::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable<__node_allocator>::value); +#endif // _LIBCPP_CXX03_LANG + + ~__tree(); + + _LIBCPP_INLINE_VISIBILITY + iterator begin() _NOEXCEPT {return iterator(__begin_node());} + _LIBCPP_INLINE_VISIBILITY + const_iterator begin() const _NOEXCEPT {return const_iterator(__begin_node());} + _LIBCPP_INLINE_VISIBILITY + iterator end() _NOEXCEPT {return iterator(__end_node());} + _LIBCPP_INLINE_VISIBILITY + const_iterator end() const _NOEXCEPT {return const_iterator(__end_node());} + + _LIBCPP_INLINE_VISIBILITY + size_type max_size() const _NOEXCEPT + {return std::min( + __node_traits::max_size(__node_alloc()), + numeric_limits::max());} + + void clear() _NOEXCEPT; + + void swap(__tree& __t) +#if _LIBCPP_STD_VER <= 11 + _NOEXCEPT_( + __is_nothrow_swappable::value + && (!__node_traits::propagate_on_container_swap::value || + __is_nothrow_swappable<__node_allocator>::value) + ); +#else + _NOEXCEPT_(__is_nothrow_swappable::value); +#endif + +#ifndef _LIBCPP_CXX03_LANG + template + pair + __emplace_unique_key_args(_Key const&, _Args&&... __args); + template + iterator + __emplace_hint_unique_key_args(const_iterator, _Key const&, _Args&&...); + + template + pair __emplace_unique_impl(_Args&&... __args); + + template + iterator __emplace_hint_unique_impl(const_iterator __p, _Args&&... __args); + + template + iterator __emplace_multi(_Args&&... __args); + + template + iterator __emplace_hint_multi(const_iterator __p, _Args&&... __args); + + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique(_Pp&& __x) { + return __emplace_unique_extract_key(_VSTD::forward<_Pp>(__x), + __can_extract_key<_Pp, key_type>()); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename enable_if< + __can_extract_map_key<_First, key_type, __container_value_type>::value, + pair + >::type __emplace_unique(_First&& __f, _Second&& __s) { + return __emplace_unique_key_args(__f, _VSTD::forward<_First>(__f), + _VSTD::forward<_Second>(__s)); + } + + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique(_Args&&... __args) { + return __emplace_unique_impl(_VSTD::forward<_Args>(__args)...); + } + + template + _LIBCPP_INLINE_VISIBILITY + pair + __emplace_unique_extract_key(_Pp&& __x, __extract_key_fail_tag) { + return __emplace_unique_impl(_VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + pair + __emplace_unique_extract_key(_Pp&& __x, __extract_key_self_tag) { + return __emplace_unique_key_args(__x, _VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + pair + __emplace_unique_extract_key(_Pp&& __x, __extract_key_first_tag) { + return __emplace_unique_key_args(__x.first, _VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __emplace_hint_unique(const_iterator __p, _Pp&& __x) { + return __emplace_hint_unique_extract_key(__p, _VSTD::forward<_Pp>(__x), + __can_extract_key<_Pp, key_type>()); + } + + template + _LIBCPP_INLINE_VISIBILITY + typename enable_if< + __can_extract_map_key<_First, key_type, __container_value_type>::value, + iterator + >::type __emplace_hint_unique(const_iterator __p, _First&& __f, _Second&& __s) { + return __emplace_hint_unique_key_args(__p, __f, + _VSTD::forward<_First>(__f), + _VSTD::forward<_Second>(__s)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __emplace_hint_unique(const_iterator __p, _Args&&... __args) { + return __emplace_hint_unique_impl(__p, _VSTD::forward<_Args>(__args)...); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator + __emplace_hint_unique_extract_key(const_iterator __p, _Pp&& __x, __extract_key_fail_tag) { + return __emplace_hint_unique_impl(__p, _VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator + __emplace_hint_unique_extract_key(const_iterator __p, _Pp&& __x, __extract_key_self_tag) { + return __emplace_hint_unique_key_args(__p, __x, _VSTD::forward<_Pp>(__x)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator + __emplace_hint_unique_extract_key(const_iterator __p, _Pp&& __x, __extract_key_first_tag) { + return __emplace_hint_unique_key_args(__p, __x.first, _VSTD::forward<_Pp>(__x)); + } + +#else + template + _LIBCPP_INLINE_VISIBILITY + pair __emplace_unique_key_args(_Key const&, _Args& __args); + template + _LIBCPP_INLINE_VISIBILITY + iterator __emplace_hint_unique_key_args(const_iterator, _Key const&, _Args&); +#endif + + _LIBCPP_INLINE_VISIBILITY + pair __insert_unique(const __container_value_type& __v) { + return __emplace_unique_key_args(_NodeTypes::__get_key(__v), __v); + } + + _LIBCPP_INLINE_VISIBILITY + iterator __insert_unique(const_iterator __p, const __container_value_type& __v) { + return __emplace_hint_unique_key_args(__p, _NodeTypes::__get_key(__v), __v); + } + +#ifdef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(const __container_value_type& __v); + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(const_iterator __p, const __container_value_type& __v); +#else + _LIBCPP_INLINE_VISIBILITY + pair __insert_unique(__container_value_type&& __v) { + return __emplace_unique_key_args(_NodeTypes::__get_key(__v), _VSTD::move(__v)); + } + + _LIBCPP_INLINE_VISIBILITY + iterator __insert_unique(const_iterator __p, __container_value_type&& __v) { + return __emplace_hint_unique_key_args(__p, _NodeTypes::__get_key(__v), _VSTD::move(__v)); + } + + template ::type, + __container_value_type + >::value + >::type> + _LIBCPP_INLINE_VISIBILITY + pair __insert_unique(_Vp&& __v) { + return __emplace_unique(_VSTD::forward<_Vp>(__v)); + } + + template ::type, + __container_value_type + >::value + >::type> + _LIBCPP_INLINE_VISIBILITY + iterator __insert_unique(const_iterator __p, _Vp&& __v) { + return __emplace_hint_unique(__p, _VSTD::forward<_Vp>(__v)); + } + + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(__container_value_type&& __v) { + return __emplace_multi(_VSTD::move(__v)); + } + + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(const_iterator __p, __container_value_type&& __v) { + return __emplace_hint_multi(__p, _VSTD::move(__v)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(_Vp&& __v) { + return __emplace_multi(_VSTD::forward<_Vp>(__v)); + } + + template + _LIBCPP_INLINE_VISIBILITY + iterator __insert_multi(const_iterator __p, _Vp&& __v) { + return __emplace_hint_multi(__p, _VSTD::forward<_Vp>(__v)); + } + +#endif // !_LIBCPP_CXX03_LANG + + _LIBCPP_INLINE_VISIBILITY + pair __node_assign_unique(const __container_value_type& __v, __node_pointer __dest); + + _LIBCPP_INLINE_VISIBILITY + iterator __node_insert_multi(__node_pointer __nd); + _LIBCPP_INLINE_VISIBILITY + iterator __node_insert_multi(const_iterator __p, __node_pointer __nd); + + + _LIBCPP_INLINE_VISIBILITY iterator + __remove_node_pointer(__node_pointer) _NOEXCEPT; + +#if _LIBCPP_STD_VER > 14 + template + _LIBCPP_INLINE_VISIBILITY + _InsertReturnType __node_handle_insert_unique(_NodeHandle&&); + template + _LIBCPP_INLINE_VISIBILITY + iterator __node_handle_insert_unique(const_iterator, _NodeHandle&&); + template + _LIBCPP_INLINE_VISIBILITY + void __node_handle_merge_unique(_Tree& __source); + + template + _LIBCPP_INLINE_VISIBILITY + iterator __node_handle_insert_multi(_NodeHandle&&); + template + _LIBCPP_INLINE_VISIBILITY + iterator __node_handle_insert_multi(const_iterator, _NodeHandle&&); + template + _LIBCPP_INLINE_VISIBILITY + void __node_handle_merge_multi(_Tree& __source); + + + template + _LIBCPP_INLINE_VISIBILITY + _NodeHandle __node_handle_extract(key_type const&); + template + _LIBCPP_INLINE_VISIBILITY + _NodeHandle __node_handle_extract(const_iterator); +#endif + + iterator erase(const_iterator __p); + iterator erase(const_iterator __f, const_iterator __l); + template + size_type __erase_unique(const _Key& __k); + template + size_type __erase_multi(const _Key& __k); + + void __insert_node_at(__parent_pointer __parent, + __node_base_pointer& __child, + __node_base_pointer __new_node) _NOEXCEPT; + + template + iterator find(const _Key& __v); + template + const_iterator find(const _Key& __v) const; + + template + size_type __count_unique(const _Key& __k) const; + template + size_type __count_multi(const _Key& __k) const; + + template + _LIBCPP_INLINE_VISIBILITY + iterator lower_bound(const _Key& __v) + {return __lower_bound(__v, __root(), __end_node());} + template + iterator __lower_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result); + template + _LIBCPP_INLINE_VISIBILITY + const_iterator lower_bound(const _Key& __v) const + {return __lower_bound(__v, __root(), __end_node());} + template + const_iterator __lower_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result) const; + template + _LIBCPP_INLINE_VISIBILITY + iterator upper_bound(const _Key& __v) + {return __upper_bound(__v, __root(), __end_node());} + template + iterator __upper_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result); + template + _LIBCPP_INLINE_VISIBILITY + const_iterator upper_bound(const _Key& __v) const + {return __upper_bound(__v, __root(), __end_node());} + template + const_iterator __upper_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result) const; + template + pair + __equal_range_unique(const _Key& __k); + template + pair + __equal_range_unique(const _Key& __k) const; + + template + pair + __equal_range_multi(const _Key& __k); + template + pair + __equal_range_multi(const _Key& __k) const; + + typedef __tree_node_destructor<__node_allocator> _Dp; + typedef unique_ptr<__node, _Dp> __node_holder; + + __node_holder remove(const_iterator __p) _NOEXCEPT; +private: + __node_base_pointer& + __find_leaf_low(__parent_pointer& __parent, const key_type& __v); + __node_base_pointer& + __find_leaf_high(__parent_pointer& __parent, const key_type& __v); + __node_base_pointer& + __find_leaf(const_iterator __hint, + __parent_pointer& __parent, const key_type& __v); + // FIXME: Make this function const qualified. Unfortunetly doing so + // breaks existing code which uses non-const callable comparators. + template + __node_base_pointer& + __find_equal(__parent_pointer& __parent, const _Key& __v); + template + _LIBCPP_INLINE_VISIBILITY __node_base_pointer& + __find_equal(__parent_pointer& __parent, const _Key& __v) const { + return const_cast<__tree*>(this)->__find_equal(__parent, __v); + } + template + __node_base_pointer& + __find_equal(const_iterator __hint, __parent_pointer& __parent, + __node_base_pointer& __dummy, + const _Key& __v); + +#ifndef _LIBCPP_CXX03_LANG + template + __node_holder __construct_node(_Args&& ...__args); +#else + __node_holder __construct_node(const __container_value_type& __v); +#endif + + void destroy(__node_pointer __nd) _NOEXCEPT; + + _LIBCPP_INLINE_VISIBILITY + void __copy_assign_alloc(const __tree& __t) + {__copy_assign_alloc(__t, integral_constant());} + + _LIBCPP_INLINE_VISIBILITY + void __copy_assign_alloc(const __tree& __t, true_type) + { + if (__node_alloc() != __t.__node_alloc()) + clear(); + __node_alloc() = __t.__node_alloc(); + } + _LIBCPP_INLINE_VISIBILITY + void __copy_assign_alloc(const __tree&, false_type) {} + + void __move_assign(__tree& __t, false_type); + void __move_assign(__tree& __t, true_type) + _NOEXCEPT_(is_nothrow_move_assignable::value && + is_nothrow_move_assignable<__node_allocator>::value); + + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__tree& __t) + _NOEXCEPT_( + !__node_traits::propagate_on_container_move_assignment::value || + is_nothrow_move_assignable<__node_allocator>::value) + {__move_assign_alloc(__t, integral_constant());} + + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__tree& __t, true_type) + _NOEXCEPT_(is_nothrow_move_assignable<__node_allocator>::value) + {__node_alloc() = _VSTD::move(__t.__node_alloc());} + _LIBCPP_INLINE_VISIBILITY + void __move_assign_alloc(__tree&, false_type) _NOEXCEPT {} + + struct _DetachedTreeCache { + _LIBCPP_INLINE_VISIBILITY + explicit _DetachedTreeCache(__tree *__t) _NOEXCEPT : __t_(__t), + __cache_root_(__detach_from_tree(__t)) { + __advance(); + } + + _LIBCPP_INLINE_VISIBILITY + __node_pointer __get() const _NOEXCEPT { + return __cache_elem_; + } + + _LIBCPP_INLINE_VISIBILITY + void __advance() _NOEXCEPT { + __cache_elem_ = __cache_root_; + if (__cache_root_) { + __cache_root_ = __detach_next(__cache_root_); + } + } + + _LIBCPP_INLINE_VISIBILITY + ~_DetachedTreeCache() { + __t_->destroy(__cache_elem_); + if (__cache_root_) { + while (__cache_root_->__parent_ != nullptr) + __cache_root_ = static_cast<__node_pointer>(__cache_root_->__parent_); + __t_->destroy(__cache_root_); + } + } + + _DetachedTreeCache(_DetachedTreeCache const&) = delete; + _DetachedTreeCache& operator=(_DetachedTreeCache const&) = delete; + + private: + _LIBCPP_INLINE_VISIBILITY + static __node_pointer __detach_from_tree(__tree *__t) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY + static __node_pointer __detach_next(__node_pointer) _NOEXCEPT; + + __tree *__t_; + __node_pointer __cache_root_; + __node_pointer __cache_elem_; + }; + + + template friend class _LIBCPP_TEMPLATE_VIS map; + template friend class _LIBCPP_TEMPLATE_VIS multimap; +}; + +template +__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp) + _NOEXCEPT_( + is_nothrow_default_constructible<__node_allocator>::value && + is_nothrow_copy_constructible::value) + : __pair3_(0, __comp) +{ + __begin_node() = __end_node(); +} + +template +__tree<_Tp, _Compare, _Allocator>::__tree(const allocator_type& __a) + : __begin_node_(__iter_pointer()), + __pair1_(__second_tag(), __node_allocator(__a)), + __pair3_(0) +{ + __begin_node() = __end_node(); +} + +template +__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp, + const allocator_type& __a) + : __begin_node_(__iter_pointer()), + __pair1_(__second_tag(), __node_allocator(__a)), + __pair3_(0, __comp) +{ + __begin_node() = __end_node(); +} + +// Precondition: size() != 0 +template +typename __tree<_Tp, _Compare, _Allocator>::__node_pointer +__tree<_Tp, _Compare, _Allocator>::_DetachedTreeCache::__detach_from_tree(__tree *__t) _NOEXCEPT +{ + __node_pointer __cache = static_cast<__node_pointer>(__t->__begin_node()); + __t->__begin_node() = __t->__end_node(); + __t->__end_node()->__left_->__parent_ = nullptr; + __t->__end_node()->__left_ = nullptr; + __t->size() = 0; + // __cache->__left_ == nullptr + if (__cache->__right_ != nullptr) + __cache = static_cast<__node_pointer>(__cache->__right_); + // __cache->__left_ == nullptr + // __cache->__right_ == nullptr + return __cache; +} + +// Precondition: __cache != nullptr +// __cache->left_ == nullptr +// __cache->right_ == nullptr +// This is no longer a red-black tree +template +typename __tree<_Tp, _Compare, _Allocator>::__node_pointer +__tree<_Tp, _Compare, _Allocator>::_DetachedTreeCache::__detach_next(__node_pointer __cache) _NOEXCEPT +{ + if (__cache->__parent_ == nullptr) + return nullptr; + if (__tree_is_left_child(static_cast<__node_base_pointer>(__cache))) + { + __cache->__parent_->__left_ = nullptr; + __cache = static_cast<__node_pointer>(__cache->__parent_); + if (__cache->__right_ == nullptr) + return __cache; + return static_cast<__node_pointer>(__tree_leaf(__cache->__right_)); + } + // __cache is right child + __cache->__parent_unsafe()->__right_ = nullptr; + __cache = static_cast<__node_pointer>(__cache->__parent_); + if (__cache->__left_ == nullptr) + return __cache; + return static_cast<__node_pointer>(__tree_leaf(__cache->__left_)); +} + +template +__tree<_Tp, _Compare, _Allocator>& +__tree<_Tp, _Compare, _Allocator>::operator=(const __tree& __t) +{ + if (this != &__t) + { + value_comp() = __t.value_comp(); + __copy_assign_alloc(__t); + __assign_multi(__t.begin(), __t.end()); + } + return *this; +} + +template +template +void +__tree<_Tp, _Compare, _Allocator>::__assign_unique(_ForwardIterator __first, _ForwardIterator __last) +{ + typedef iterator_traits<_ForwardIterator> _ITraits; + typedef typename _ITraits::value_type _ItValueType; + static_assert((is_same<_ItValueType, __container_value_type>::value), + "__assign_unique may only be called with the containers value type"); + static_assert(__is_forward_iterator<_ForwardIterator>::value, + "__assign_unique requires a forward iterator"); + if (size() != 0) + { + _DetachedTreeCache __cache(this); + for (; __cache.__get() != nullptr && __first != __last; ++__first) { + if (__node_assign_unique(*__first, __cache.__get()).second) + __cache.__advance(); + } + } + for (; __first != __last; ++__first) + __insert_unique(*__first); +} + +template +template +void +__tree<_Tp, _Compare, _Allocator>::__assign_multi(_InputIterator __first, _InputIterator __last) +{ + typedef iterator_traits<_InputIterator> _ITraits; + typedef typename _ITraits::value_type _ItValueType; + static_assert((is_same<_ItValueType, __container_value_type>::value || + is_same<_ItValueType, __node_value_type>::value), + "__assign_multi may only be called with the containers value type" + " or the nodes value type"); + if (size() != 0) + { + _DetachedTreeCache __cache(this); + for (; __cache.__get() && __first != __last; ++__first) { + __cache.__get()->__value_ = *__first; + __node_insert_multi(__cache.__get()); + __cache.__advance(); + } + } + for (; __first != __last; ++__first) + __insert_multi(_NodeTypes::__get_value(*__first)); +} + +template +__tree<_Tp, _Compare, _Allocator>::__tree(const __tree& __t) + : __begin_node_(__iter_pointer()), + __pair1_(__second_tag(), __node_traits::select_on_container_copy_construction(__t.__node_alloc())), + __pair3_(0, __t.value_comp()) +{ + __begin_node() = __end_node(); +} + +#ifndef _LIBCPP_CXX03_LANG + +template +__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t) + _NOEXCEPT_( + is_nothrow_move_constructible<__node_allocator>::value && + is_nothrow_move_constructible::value) + : __begin_node_(_VSTD::move(__t.__begin_node_)), + __pair1_(_VSTD::move(__t.__pair1_)), + __pair3_(_VSTD::move(__t.__pair3_)) +{ + if (size() == 0) + __begin_node() = __end_node(); + else + { + __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node()); + __t.__begin_node() = __t.__end_node(); + __t.__end_node()->__left_ = nullptr; + __t.size() = 0; + } +} + +template +__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t, const allocator_type& __a) + : __pair1_(__second_tag(), __node_allocator(__a)), + __pair3_(0, _VSTD::move(__t.value_comp())) +{ + if (__a == __t.__alloc()) + { + if (__t.size() == 0) + __begin_node() = __end_node(); + else + { + __begin_node() = __t.__begin_node(); + __end_node()->__left_ = __t.__end_node()->__left_; + __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node()); + size() = __t.size(); + __t.__begin_node() = __t.__end_node(); + __t.__end_node()->__left_ = nullptr; + __t.size() = 0; + } + } + else + { + __begin_node() = __end_node(); + } +} + +template +void +__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, true_type) + _NOEXCEPT_(is_nothrow_move_assignable::value && + is_nothrow_move_assignable<__node_allocator>::value) +{ + destroy(static_cast<__node_pointer>(__end_node()->__left_)); + __begin_node_ = __t.__begin_node_; + __pair1_.first() = __t.__pair1_.first(); + __move_assign_alloc(__t); + __pair3_ = _VSTD::move(__t.__pair3_); + if (size() == 0) + __begin_node() = __end_node(); + else + { + __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node()); + __t.__begin_node() = __t.__end_node(); + __t.__end_node()->__left_ = nullptr; + __t.size() = 0; + } +} + +template +void +__tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, false_type) +{ + if (__node_alloc() == __t.__node_alloc()) + __move_assign(__t, true_type()); + else + { + value_comp() = _VSTD::move(__t.value_comp()); + const_iterator __e = end(); + if (size() != 0) + { + _DetachedTreeCache __cache(this); + while (__cache.__get() != nullptr && __t.size() != 0) { + __cache.__get()->__value_ = _VSTD::move(__t.remove(__t.begin())->__value_); + __node_insert_multi(__cache.__get()); + __cache.__advance(); + } + } + while (__t.size() != 0) + __insert_multi(__e, _NodeTypes::__move(__t.remove(__t.begin())->__value_)); + } +} + +template +__tree<_Tp, _Compare, _Allocator>& +__tree<_Tp, _Compare, _Allocator>::operator=(__tree&& __t) + _NOEXCEPT_( + __node_traits::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable<__node_allocator>::value) + +{ + __move_assign(__t, integral_constant()); + return *this; +} + +#endif // _LIBCPP_CXX03_LANG + +template +__tree<_Tp, _Compare, _Allocator>::~__tree() +{ + static_assert((is_copy_constructible::value), + "Comparator must be copy-constructible."); + destroy(__root()); +} + +template +void +__tree<_Tp, _Compare, _Allocator>::destroy(__node_pointer __nd) _NOEXCEPT +{ + if (__nd != nullptr) + { + destroy(static_cast<__node_pointer>(__nd->__left_)); + destroy(static_cast<__node_pointer>(__nd->__right_)); + __node_allocator& __na = __node_alloc(); + __node_traits::destroy(__na, _NodeTypes::__get_ptr(__nd->__value_)); + __node_traits::deallocate(__na, __nd, 1); + } +} + +template +void +__tree<_Tp, _Compare, _Allocator>::swap(__tree& __t) +#if _LIBCPP_STD_VER <= 11 + _NOEXCEPT_( + __is_nothrow_swappable::value + && (!__node_traits::propagate_on_container_swap::value || + __is_nothrow_swappable<__node_allocator>::value) + ) +#else + _NOEXCEPT_(__is_nothrow_swappable::value) +#endif +{ + using _VSTD::swap; + swap(__begin_node_, __t.__begin_node_); + swap(__pair1_.first(), __t.__pair1_.first()); + __swap_allocator(__node_alloc(), __t.__node_alloc()); + __pair3_.swap(__t.__pair3_); + if (size() == 0) + __begin_node() = __end_node(); + else + __end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__end_node()); + if (__t.size() == 0) + __t.__begin_node() = __t.__end_node(); + else + __t.__end_node()->__left_->__parent_ = static_cast<__parent_pointer>(__t.__end_node()); +} + +template +void +__tree<_Tp, _Compare, _Allocator>::clear() _NOEXCEPT +{ + destroy(__root()); + size() = 0; + __begin_node() = __end_node(); + __end_node()->__left_ = nullptr; +} + +// Find lower_bound place to insert +// Set __parent to parent of null leaf +// Return reference to null leaf +template +typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer& +__tree<_Tp, _Compare, _Allocator>::__find_leaf_low(__parent_pointer& __parent, + const key_type& __v) +{ + __node_pointer __nd = __root(); + if (__nd != nullptr) + { + while (true) + { + if (value_comp()(__nd->__value_, __v)) + { + if (__nd->__right_ != nullptr) + __nd = static_cast<__node_pointer>(__nd->__right_); + else + { + __parent = static_cast<__parent_pointer>(__nd); + return __nd->__right_; + } + } + else + { + if (__nd->__left_ != nullptr) + __nd = static_cast<__node_pointer>(__nd->__left_); + else + { + __parent = static_cast<__parent_pointer>(__nd); + return __parent->__left_; + } + } + } + } + __parent = static_cast<__parent_pointer>(__end_node()); + return __parent->__left_; +} + +// Find upper_bound place to insert +// Set __parent to parent of null leaf +// Return reference to null leaf +template +typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer& +__tree<_Tp, _Compare, _Allocator>::__find_leaf_high(__parent_pointer& __parent, + const key_type& __v) +{ + __node_pointer __nd = __root(); + if (__nd != nullptr) + { + while (true) + { + if (value_comp()(__v, __nd->__value_)) + { + if (__nd->__left_ != nullptr) + __nd = static_cast<__node_pointer>(__nd->__left_); + else + { + __parent = static_cast<__parent_pointer>(__nd); + return __parent->__left_; + } + } + else + { + if (__nd->__right_ != nullptr) + __nd = static_cast<__node_pointer>(__nd->__right_); + else + { + __parent = static_cast<__parent_pointer>(__nd); + return __nd->__right_; + } + } + } + } + __parent = static_cast<__parent_pointer>(__end_node()); + return __parent->__left_; +} + +// Find leaf place to insert closest to __hint +// First check prior to __hint. +// Next check after __hint. +// Next do O(log N) search. +// Set __parent to parent of null leaf +// Return reference to null leaf +template +typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer& +__tree<_Tp, _Compare, _Allocator>::__find_leaf(const_iterator __hint, + __parent_pointer& __parent, + const key_type& __v) +{ + if (__hint == end() || !value_comp()(*__hint, __v)) // check before + { + // __v <= *__hint + const_iterator __prior = __hint; + if (__prior == begin() || !value_comp()(__v, *--__prior)) + { + // *prev(__hint) <= __v <= *__hint + if (__hint.__ptr_->__left_ == nullptr) + { + __parent = static_cast<__parent_pointer>(__hint.__ptr_); + return __parent->__left_; + } + else + { + __parent = static_cast<__parent_pointer>(__prior.__ptr_); + return static_cast<__node_base_pointer>(__prior.__ptr_)->__right_; + } + } + // __v < *prev(__hint) + return __find_leaf_high(__parent, __v); + } + // else __v > *__hint + return __find_leaf_low(__parent, __v); +} + +// Find place to insert if __v doesn't exist +// Set __parent to parent of null leaf +// Return reference to null leaf +// If __v exists, set parent to node of __v and return reference to node of __v +template +template +typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer& +__tree<_Tp, _Compare, _Allocator>::__find_equal(__parent_pointer& __parent, + const _Key& __v) +{ + __node_pointer __nd = __root(); + __node_base_pointer* __nd_ptr = __root_ptr(); + if (__nd != nullptr) + { + while (true) + { + if (value_comp()(__v, __nd->__value_)) + { + if (__nd->__left_ != nullptr) { + __nd_ptr = _VSTD::addressof(__nd->__left_); + __nd = static_cast<__node_pointer>(__nd->__left_); + } else { + __parent = static_cast<__parent_pointer>(__nd); + return __parent->__left_; + } + } + else if (value_comp()(__nd->__value_, __v)) + { + if (__nd->__right_ != nullptr) { + __nd_ptr = _VSTD::addressof(__nd->__right_); + __nd = static_cast<__node_pointer>(__nd->__right_); + } else { + __parent = static_cast<__parent_pointer>(__nd); + return __nd->__right_; + } + } + else + { + __parent = static_cast<__parent_pointer>(__nd); + return *__nd_ptr; + } + } + } + __parent = static_cast<__parent_pointer>(__end_node()); + return __parent->__left_; +} + +// Find place to insert if __v doesn't exist +// First check prior to __hint. +// Next check after __hint. +// Next do O(log N) search. +// Set __parent to parent of null leaf +// Return reference to null leaf +// If __v exists, set parent to node of __v and return reference to node of __v +template +template +typename __tree<_Tp, _Compare, _Allocator>::__node_base_pointer& +__tree<_Tp, _Compare, _Allocator>::__find_equal(const_iterator __hint, + __parent_pointer& __parent, + __node_base_pointer& __dummy, + const _Key& __v) +{ + if (__hint == end() || value_comp()(__v, *__hint)) // check before + { + // __v < *__hint + const_iterator __prior = __hint; + if (__prior == begin() || value_comp()(*--__prior, __v)) + { + // *prev(__hint) < __v < *__hint + if (__hint.__ptr_->__left_ == nullptr) + { + __parent = static_cast<__parent_pointer>(__hint.__ptr_); + return __parent->__left_; + } + else + { + __parent = static_cast<__parent_pointer>(__prior.__ptr_); + return static_cast<__node_base_pointer>(__prior.__ptr_)->__right_; + } + } + // __v <= *prev(__hint) + return __find_equal(__parent, __v); + } + else if (value_comp()(*__hint, __v)) // check after + { + // *__hint < __v + const_iterator __next = _VSTD::next(__hint); + if (__next == end() || value_comp()(__v, *__next)) + { + // *__hint < __v < *_VSTD::next(__hint) + if (__hint.__get_np()->__right_ == nullptr) + { + __parent = static_cast<__parent_pointer>(__hint.__ptr_); + return static_cast<__node_base_pointer>(__hint.__ptr_)->__right_; + } + else + { + __parent = static_cast<__parent_pointer>(__next.__ptr_); + return __parent->__left_; + } + } + // *next(__hint) <= __v + return __find_equal(__parent, __v); + } + // else __v == *__hint + __parent = static_cast<__parent_pointer>(__hint.__ptr_); + __dummy = static_cast<__node_base_pointer>(__hint.__ptr_); + return __dummy; +} + +template +void __tree<_Tp, _Compare, _Allocator>::__insert_node_at( + __parent_pointer __parent, __node_base_pointer& __child, + __node_base_pointer __new_node) _NOEXCEPT +{ + __new_node->__left_ = nullptr; + __new_node->__right_ = nullptr; + __new_node->__parent_ = __parent; + // __new_node->__is_black_ is initialized in __tree_balance_after_insert + __child = __new_node; + if (__begin_node()->__left_ != nullptr) + __begin_node() = static_cast<__iter_pointer>(__begin_node()->__left_); + __tree_balance_after_insert(__end_node()->__left_, __child); + ++size(); +} + +#ifndef _LIBCPP_CXX03_LANG +template +template +pair::iterator, bool> +__tree<_Tp, _Compare, _Allocator>::__emplace_unique_key_args(_Key const& __k, _Args&&... __args) +#else +template +template +pair::iterator, bool> +__tree<_Tp, _Compare, _Allocator>::__emplace_unique_key_args(_Key const& __k, _Args& __args) +#endif +{ + __parent_pointer __parent; + __node_base_pointer& __child = __find_equal(__parent, __k); + __node_pointer __r = static_cast<__node_pointer>(__child); + bool __inserted = false; + if (__child == nullptr) + { +#ifndef _LIBCPP_CXX03_LANG + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); +#else + __node_holder __h = __construct_node(__args); +#endif + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + __r = __h.release(); + __inserted = true; + } + return pair(iterator(__r), __inserted); +} + + +#ifndef _LIBCPP_CXX03_LANG +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique_key_args( + const_iterator __p, _Key const& __k, _Args&&... __args) +#else +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique_key_args( + const_iterator __p, _Key const& __k, _Args& __args) +#endif +{ + __parent_pointer __parent; + __node_base_pointer __dummy; + __node_base_pointer& __child = __find_equal(__p, __parent, __dummy, __k); + __node_pointer __r = static_cast<__node_pointer>(__child); + if (__child == nullptr) + { +#ifndef _LIBCPP_CXX03_LANG + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); +#else + __node_holder __h = __construct_node(__args); +#endif + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + __r = __h.release(); + } + return iterator(__r); +} + + +#ifndef _LIBCPP_CXX03_LANG + +template +template +typename __tree<_Tp, _Compare, _Allocator>::__node_holder +__tree<_Tp, _Compare, _Allocator>::__construct_node(_Args&& ...__args) +{ + static_assert(!__is_tree_value_type<_Args...>::value, + "Cannot construct from __value_type"); + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), _VSTD::forward<_Args>(__args)...); + __h.get_deleter().__value_constructed = true; + return __h; +} + + +template +template +pair::iterator, bool> +__tree<_Tp, _Compare, _Allocator>::__emplace_unique_impl(_Args&&... __args) +{ + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + __parent_pointer __parent; + __node_base_pointer& __child = __find_equal(__parent, __h->__value_); + __node_pointer __r = static_cast<__node_pointer>(__child); + bool __inserted = false; + if (__child == nullptr) + { + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + __r = __h.release(); + __inserted = true; + } + return pair(iterator(__r), __inserted); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__emplace_hint_unique_impl(const_iterator __p, _Args&&... __args) +{ + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + __parent_pointer __parent; + __node_base_pointer __dummy; + __node_base_pointer& __child = __find_equal(__p, __parent, __dummy, __h->__value_); + __node_pointer __r = static_cast<__node_pointer>(__child); + if (__child == nullptr) + { + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + __r = __h.release(); + } + return iterator(__r); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__emplace_multi(_Args&&... __args) +{ + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf_high(__parent, _NodeTypes::__get_key(__h->__value_)); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + return iterator(static_cast<__node_pointer>(__h.release())); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__emplace_hint_multi(const_iterator __p, + _Args&&... __args) +{ + __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf(__p, __parent, _NodeTypes::__get_key(__h->__value_)); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + return iterator(static_cast<__node_pointer>(__h.release())); +} + + +#else // _LIBCPP_CXX03_LANG + +template +typename __tree<_Tp, _Compare, _Allocator>::__node_holder +__tree<_Tp, _Compare, _Allocator>::__construct_node(const __container_value_type& __v) +{ + __node_allocator& __na = __node_alloc(); + __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); + __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), __v); + __h.get_deleter().__value_constructed = true; + return _LIBCPP_EXPLICIT_MOVE(__h); // explicitly moved for C++03 +} + +#endif // _LIBCPP_CXX03_LANG + +#ifdef _LIBCPP_CXX03_LANG +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__insert_multi(const __container_value_type& __v) +{ + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf_high(__parent, _NodeTypes::__get_key(__v)); + __node_holder __h = __construct_node(__v); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + return iterator(__h.release()); +} + +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__insert_multi(const_iterator __p, const __container_value_type& __v) +{ + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf(__p, __parent, _NodeTypes::__get_key(__v)); + __node_holder __h = __construct_node(__v); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__h.get())); + return iterator(__h.release()); +} +#endif + +template +pair::iterator, bool> +__tree<_Tp, _Compare, _Allocator>::__node_assign_unique(const __container_value_type& __v, __node_pointer __nd) +{ + __parent_pointer __parent; + __node_base_pointer& __child = __find_equal(__parent, _NodeTypes::__get_key(__v)); + __node_pointer __r = static_cast<__node_pointer>(__child); + bool __inserted = false; + if (__child == nullptr) + { + __nd->__value_ = __v; + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); + __r = __nd; + __inserted = true; + } + return pair(iterator(__r), __inserted); +} + + +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(__node_pointer __nd) +{ + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf_high(__parent, _NodeTypes::__get_key(__nd->__value_)); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); + return iterator(__nd); +} + +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__node_insert_multi(const_iterator __p, + __node_pointer __nd) +{ + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf(__p, __parent, _NodeTypes::__get_key(__nd->__value_)); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__nd)); + return iterator(__nd); +} + +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__remove_node_pointer(__node_pointer __ptr) _NOEXCEPT +{ + iterator __r(__ptr); + ++__r; + if (__begin_node() == __ptr) + __begin_node() = __r.__ptr_; + --size(); + __tree_remove(__end_node()->__left_, + static_cast<__node_base_pointer>(__ptr)); + return __r; +} + +#if _LIBCPP_STD_VER > 14 +template +template +_LIBCPP_INLINE_VISIBILITY +_InsertReturnType +__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_unique( + _NodeHandle&& __nh) +{ + if (__nh.empty()) + return _InsertReturnType{end(), false, _NodeHandle()}; + + __node_pointer __ptr = __nh.__ptr_; + __parent_pointer __parent; + __node_base_pointer& __child = __find_equal(__parent, + __ptr->__value_); + if (__child != nullptr) + return _InsertReturnType{ + iterator(static_cast<__node_pointer>(__child)), + false, _VSTD::move(__nh)}; + + __insert_node_at(__parent, __child, + static_cast<__node_base_pointer>(__ptr)); + __nh.__release_ptr(); + return _InsertReturnType{iterator(__ptr), true, _NodeHandle()}; +} + +template +template +_LIBCPP_INLINE_VISIBILITY +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_unique( + const_iterator __hint, _NodeHandle&& __nh) +{ + if (__nh.empty()) + return end(); + + __node_pointer __ptr = __nh.__ptr_; + __parent_pointer __parent; + __node_base_pointer __dummy; + __node_base_pointer& __child = __find_equal(__hint, __parent, __dummy, + __ptr->__value_); + __node_pointer __r = static_cast<__node_pointer>(__child); + if (__child == nullptr) + { + __insert_node_at(__parent, __child, + static_cast<__node_base_pointer>(__ptr)); + __r = __ptr; + __nh.__release_ptr(); + } + return iterator(__r); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +_NodeHandle +__tree<_Tp, _Compare, _Allocator>::__node_handle_extract(key_type const& __key) +{ + iterator __it = find(__key); + if (__it == end()) + return _NodeHandle(); + return __node_handle_extract<_NodeHandle>(__it); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +_NodeHandle +__tree<_Tp, _Compare, _Allocator>::__node_handle_extract(const_iterator __p) +{ + __node_pointer __np = __p.__get_np(); + __remove_node_pointer(__np); + return _NodeHandle(__np, __alloc()); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +void +__tree<_Tp, _Compare, _Allocator>::__node_handle_merge_unique(_Tree& __source) +{ + static_assert(is_same::value, ""); + + for (typename _Tree::iterator __i = __source.begin(); + __i != __source.end();) + { + __node_pointer __src_ptr = __i.__get_np(); + __parent_pointer __parent; + __node_base_pointer& __child = + __find_equal(__parent, _NodeTypes::__get_key(__src_ptr->__value_)); + ++__i; + if (__child != nullptr) + continue; + __source.__remove_node_pointer(__src_ptr); + __insert_node_at(__parent, __child, + static_cast<__node_base_pointer>(__src_ptr)); + } +} + +template +template +_LIBCPP_INLINE_VISIBILITY +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_multi(_NodeHandle&& __nh) +{ + if (__nh.empty()) + return end(); + __node_pointer __ptr = __nh.__ptr_; + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf_high( + __parent, _NodeTypes::__get_key(__ptr->__value_)); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr)); + __nh.__release_ptr(); + return iterator(__ptr); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__node_handle_insert_multi( + const_iterator __hint, _NodeHandle&& __nh) +{ + if (__nh.empty()) + return end(); + + __node_pointer __ptr = __nh.__ptr_; + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf(__hint, __parent, + _NodeTypes::__get_key(__ptr->__value_)); + __insert_node_at(__parent, __child, static_cast<__node_base_pointer>(__ptr)); + __nh.__release_ptr(); + return iterator(__ptr); +} + +template +template +_LIBCPP_INLINE_VISIBILITY +void +__tree<_Tp, _Compare, _Allocator>::__node_handle_merge_multi(_Tree& __source) +{ + static_assert(is_same::value, ""); + + for (typename _Tree::iterator __i = __source.begin(); + __i != __source.end();) + { + __node_pointer __src_ptr = __i.__get_np(); + __parent_pointer __parent; + __node_base_pointer& __child = __find_leaf_high( + __parent, _NodeTypes::__get_key(__src_ptr->__value_)); + ++__i; + __source.__remove_node_pointer(__src_ptr); + __insert_node_at(__parent, __child, + static_cast<__node_base_pointer>(__src_ptr)); + } +} + +#endif // _LIBCPP_STD_VER > 14 + +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __p) +{ + __node_pointer __np = __p.__get_np(); + iterator __r = __remove_node_pointer(__np); + __node_allocator& __na = __node_alloc(); + __node_traits::destroy(__na, _NodeTypes::__get_ptr( + const_cast<__node_value_type&>(*__p))); + __node_traits::deallocate(__na, __np, 1); + return __r; +} + +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::erase(const_iterator __f, const_iterator __l) +{ + while (__f != __l) + __f = erase(__f); + return iterator(__l.__ptr_); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::size_type +__tree<_Tp, _Compare, _Allocator>::__erase_unique(const _Key& __k) +{ + iterator __i = find(__k); + if (__i == end()) + return 0; + erase(__i); + return 1; +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::size_type +__tree<_Tp, _Compare, _Allocator>::__erase_multi(const _Key& __k) +{ + pair __p = __equal_range_multi(__k); + size_type __r = 0; + for (; __p.first != __p.second; ++__r) + __p.first = erase(__p.first); + return __r; +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) +{ + iterator __p = __lower_bound(__v, __root(), __end_node()); + if (__p != end() && !value_comp()(__v, *__p)) + return __p; + return end(); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::const_iterator +__tree<_Tp, _Compare, _Allocator>::find(const _Key& __v) const +{ + const_iterator __p = __lower_bound(__v, __root(), __end_node()); + if (__p != end() && !value_comp()(__v, *__p)) + return __p; + return end(); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::size_type +__tree<_Tp, _Compare, _Allocator>::__count_unique(const _Key& __k) const +{ + __node_pointer __rt = __root(); + while (__rt != nullptr) + { + if (value_comp()(__k, __rt->__value_)) + { + __rt = static_cast<__node_pointer>(__rt->__left_); + } + else if (value_comp()(__rt->__value_, __k)) + __rt = static_cast<__node_pointer>(__rt->__right_); + else + return 1; + } + return 0; +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::size_type +__tree<_Tp, _Compare, _Allocator>::__count_multi(const _Key& __k) const +{ + __iter_pointer __result = __end_node(); + __node_pointer __rt = __root(); + while (__rt != nullptr) + { + if (value_comp()(__k, __rt->__value_)) + { + __result = static_cast<__iter_pointer>(__rt); + __rt = static_cast<__node_pointer>(__rt->__left_); + } + else if (value_comp()(__rt->__value_, __k)) + __rt = static_cast<__node_pointer>(__rt->__right_); + else + return _VSTD::distance( + __lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__iter_pointer>(__rt)), + __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result) + ); + } + return 0; +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result) +{ + while (__root != nullptr) + { + if (!value_comp()(__root->__value_, __v)) + { + __result = static_cast<__iter_pointer>(__root); + __root = static_cast<__node_pointer>(__root->__left_); + } + else + __root = static_cast<__node_pointer>(__root->__right_); + } + return iterator(__result); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::const_iterator +__tree<_Tp, _Compare, _Allocator>::__lower_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result) const +{ + while (__root != nullptr) + { + if (!value_comp()(__root->__value_, __v)) + { + __result = static_cast<__iter_pointer>(__root); + __root = static_cast<__node_pointer>(__root->__left_); + } + else + __root = static_cast<__node_pointer>(__root->__right_); + } + return const_iterator(__result); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::iterator +__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result) +{ + while (__root != nullptr) + { + if (value_comp()(__v, __root->__value_)) + { + __result = static_cast<__iter_pointer>(__root); + __root = static_cast<__node_pointer>(__root->__left_); + } + else + __root = static_cast<__node_pointer>(__root->__right_); + } + return iterator(__result); +} + +template +template +typename __tree<_Tp, _Compare, _Allocator>::const_iterator +__tree<_Tp, _Compare, _Allocator>::__upper_bound(const _Key& __v, + __node_pointer __root, + __iter_pointer __result) const +{ + while (__root != nullptr) + { + if (value_comp()(__v, __root->__value_)) + { + __result = static_cast<__iter_pointer>(__root); + __root = static_cast<__node_pointer>(__root->__left_); + } + else + __root = static_cast<__node_pointer>(__root->__right_); + } + return const_iterator(__result); +} + +template +template +pair::iterator, + typename __tree<_Tp, _Compare, _Allocator>::iterator> +__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) +{ + typedef pair _Pp; + __iter_pointer __result = __end_node(); + __node_pointer __rt = __root(); + while (__rt != nullptr) + { + if (value_comp()(__k, __rt->__value_)) + { + __result = static_cast<__iter_pointer>(__rt); + __rt = static_cast<__node_pointer>(__rt->__left_); + } + else if (value_comp()(__rt->__value_, __k)) + __rt = static_cast<__node_pointer>(__rt->__right_); + else + return _Pp(iterator(__rt), + iterator( + __rt->__right_ != nullptr ? + static_cast<__iter_pointer>(__tree_min(__rt->__right_)) + : __result)); + } + return _Pp(iterator(__result), iterator(__result)); +} + +template +template +pair::const_iterator, + typename __tree<_Tp, _Compare, _Allocator>::const_iterator> +__tree<_Tp, _Compare, _Allocator>::__equal_range_unique(const _Key& __k) const +{ + typedef pair _Pp; + __iter_pointer __result = __end_node(); + __node_pointer __rt = __root(); + while (__rt != nullptr) + { + if (value_comp()(__k, __rt->__value_)) + { + __result = static_cast<__iter_pointer>(__rt); + __rt = static_cast<__node_pointer>(__rt->__left_); + } + else if (value_comp()(__rt->__value_, __k)) + __rt = static_cast<__node_pointer>(__rt->__right_); + else + return _Pp(const_iterator(__rt), + const_iterator( + __rt->__right_ != nullptr ? + static_cast<__iter_pointer>(__tree_min(__rt->__right_)) + : __result)); + } + return _Pp(const_iterator(__result), const_iterator(__result)); +} + +template +template +pair::iterator, + typename __tree<_Tp, _Compare, _Allocator>::iterator> +__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) +{ + typedef pair _Pp; + __iter_pointer __result = __end_node(); + __node_pointer __rt = __root(); + while (__rt != nullptr) + { + if (value_comp()(__k, __rt->__value_)) + { + __result = static_cast<__iter_pointer>(__rt); + __rt = static_cast<__node_pointer>(__rt->__left_); + } + else if (value_comp()(__rt->__value_, __k)) + __rt = static_cast<__node_pointer>(__rt->__right_); + else + return _Pp(__lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__iter_pointer>(__rt)), + __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result)); + } + return _Pp(iterator(__result), iterator(__result)); +} + +template +template +pair::const_iterator, + typename __tree<_Tp, _Compare, _Allocator>::const_iterator> +__tree<_Tp, _Compare, _Allocator>::__equal_range_multi(const _Key& __k) const +{ + typedef pair _Pp; + __iter_pointer __result = __end_node(); + __node_pointer __rt = __root(); + while (__rt != nullptr) + { + if (value_comp()(__k, __rt->__value_)) + { + __result = static_cast<__iter_pointer>(__rt); + __rt = static_cast<__node_pointer>(__rt->__left_); + } + else if (value_comp()(__rt->__value_, __k)) + __rt = static_cast<__node_pointer>(__rt->__right_); + else + return _Pp(__lower_bound(__k, static_cast<__node_pointer>(__rt->__left_), static_cast<__iter_pointer>(__rt)), + __upper_bound(__k, static_cast<__node_pointer>(__rt->__right_), __result)); + } + return _Pp(const_iterator(__result), const_iterator(__result)); +} + +template +typename __tree<_Tp, _Compare, _Allocator>::__node_holder +__tree<_Tp, _Compare, _Allocator>::remove(const_iterator __p) _NOEXCEPT +{ + __node_pointer __np = __p.__get_np(); + if (__begin_node() == __p.__ptr_) + { + if (__np->__right_ != nullptr) + __begin_node() = static_cast<__iter_pointer>(__np->__right_); + else + __begin_node() = static_cast<__iter_pointer>(__np->__parent_); + } + --size(); + __tree_remove(__end_node()->__left_, + static_cast<__node_base_pointer>(__np)); + return __node_holder(__np, _Dp(__node_alloc(), true)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(__tree<_Tp, _Compare, _Allocator>& __x, + __tree<_Tp, _Compare, _Allocator>& __y) + _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) +{ + __x.swap(__y); +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___TREE diff --git a/include/libc++/__tuple b/include/libc++/__tuple new file mode 100644 index 00000000..4da9ec55 --- /dev/null +++ b/include/libc++/__tuple @@ -0,0 +1,551 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___TUPLE +#define _LIBCPP___TUPLE + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + + +_LIBCPP_BEGIN_NAMESPACE_STD + +template struct _LIBCPP_TEMPLATE_VIS tuple_size; + +#if !defined(_LIBCPP_CXX03_LANG) +template +using __enable_if_tuple_size_imp = _Tp; + +template +struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< + const _Tp, + typename enable_if::value>::type, + integral_constant)>>> + : public integral_constant::value> {}; + +template +struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< + volatile _Tp, + typename enable_if::value>::type, + integral_constant)>>> + : public integral_constant::value> {}; + +template +struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< + const volatile _Tp, + integral_constant)>>> + : public integral_constant::value> {}; + +#else +template struct _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; +template struct _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; +template struct _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; +#endif + +template struct _LIBCPP_TEMPLATE_VIS tuple_element; + +template +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const _Tp> +{ + typedef _LIBCPP_NODEBUG_TYPE typename add_const::type>::type type; +}; + +template +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, volatile _Tp> +{ + typedef _LIBCPP_NODEBUG_TYPE typename add_volatile::type>::type type; +}; + +template +struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp> +{ + typedef _LIBCPP_NODEBUG_TYPE typename add_cv::type>::type type; +}; + +template struct __tuple_like : false_type {}; + +template struct __tuple_like : public __tuple_like<_Tp> {}; +template struct __tuple_like : public __tuple_like<_Tp> {}; +template struct __tuple_like : public __tuple_like<_Tp> {}; + +// tuple specializations + +#ifndef _LIBCPP_CXX03_LANG + +template struct __tuple_indices {}; + +template +struct __integer_sequence { + template