From c16d5557cd05119b5b7b1318ef778ebe3195b4a1 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 22 Oct 2018 11:04:58 -0700 Subject: Export of internal Abseil changes. -- 4e043a11b4c10a24e84046827ee16f47e11e35cc by Abseil Team : Merge of https://github.com/abseil/abseil-cpp/pull/136 PiperOrigin-RevId: 218197648 -- e61f06e1e601061a443feaa8c5207c52437bd641 by Abseil Team : Don't include into int128, it's wasteful Including iostream emits a global constructor for initializing std::cout and friends, which isn't actually used by this file. PiperOrigin-RevId: 218156386 -- 8a6c82396e4c956be7f285328aec131cb4965f16 by Xiaoyi Zhang : Fix MSVC compiler warnings on discarding return values of functions with 'nodiscard' attribute. PiperOrigin-RevId: 217883401 -- abf3e3a0f22bc4070df9dbc9a4ef4d883ed686bf by Tom Manshreck : Update public README to add new libraries PiperOrigin-RevId: 217879399 -- 43b3b420a4e861711abbfbd497b8f2b3de17ec8c by Abseil Team : Import of CCTZ from GitHub. PiperOrigin-RevId: 217780963 -- 1c8831947ca6a65a63842e6bd5f37a7c102a4e1b by Abseil Team : Fix typo in a comment (missing comma in usage example). PiperOrigin-RevId: 217776645 GitOrigin-RevId: 4e043a11b4c10a24e84046827ee16f47e11e35cc Change-Id: I8999ae928da7a0030b4ecfd8d13da8522fdd013a --- absl/time/internal/cctz/src/tzfile.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 90cfc0c4..4485ba55 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -1,3 +1,5 @@ +/* Layout and location of TZif files. */ + #ifndef TZFILE_H #define TZFILE_H -- cgit v1.2.3 From 93dfcf74cb5fccae3da07897d8613ae6cab958a0 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 1 Apr 2019 14:06:28 -0700 Subject: Export of internal Abseil changes. -- 855576faf9556573fd74c2874b290d8feb6565d5 by Gennadiy Rozental : Import of CCTZ from GitHub. PiperOrigin-RevId: 241395451 -- b93bfd43eb2a992258f131e10f503526cfec6d48 by CJ Johnson : Fixes comment over AbslHashValue for InlinedVector PiperOrigin-RevId: 241368320 -- 75f58dafcac7d78c28d92a61ec7e53c5b3b86697 by Matt Kulukundis : Do not call sampling logic for tables with custom allocators. PiperOrigin-RevId: 241356451 -- 09f1b4889476ff707a54189aff540e2fe1edcf61 by Derek Mauro : Re-enable optionalTest.InPlaceTSFINAEBug after libc++ update PiperOrigin-RevId: 241222673 -- 01a8bb5a8cb1e13e88ddb92f9c0160beb6e126be by Derek Mauro : Update Clang on Kokoro to r356196. This includes a workaround for a -Wgnu-include-next warning fixed by https://reviews.llvm.org/rG0706e144d57305782988dd4367530ae04986116f PiperOrigin-RevId: 241222395 -- 1de66bb669a7ec1494d6064677687f761ee2d369 by Abseil Team : Remove identical test and fix char to string per comment PiperOrigin-RevId: 240855512 GitOrigin-RevId: 855576faf9556573fd74c2874b290d8feb6565d5 Change-Id: Ie155b209ef5567e6597da6ef1844db7e2ad72586 --- absl/container/inlined_vector.h | 6 +-- absl/container/internal/raw_hash_set.h | 13 ++++++- absl/container/internal/raw_hash_set_test.cc | 41 ++++++++++++++++++++- absl/copts/GENERATED_AbseilCopts.cmake | 4 +- absl/copts/GENERATED_copts.bzl | 4 +- absl/copts/copts.py | 2 + absl/strings/str_split_test.cc | 19 ++-------- absl/time/internal/cctz/src/time_zone_lookup.cc | 33 ++++++++++------- absl/time/internal/cctz/src/tzfile.h | 3 ++ absl/time/internal/cctz/testdata/version | 2 +- .../cctz/testdata/zoneinfo/America/Metlakatla | Bin 1409 -> 1423 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Gaza | Bin 2286 -> 2343 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hebron | Bin 2314 -> 2371 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jerusalem | Bin 2256 -> 2312 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv | Bin 2256 -> 2312 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT | Bin 118 -> 118 bytes absl/time/internal/cctz/testdata/zoneinfo/Israel | Bin 2256 -> 2312 bytes absl/time/internal/cctz/testdata/zoneinfo/UCT | Bin 118 -> 118 bytes .../internal/cctz/testdata/zoneinfo/iso3166.tab | 6 +-- absl/types/optional_test.cc | 2 - ci/linux_clang-latest_libcxx_bazel.sh | 2 +- ci/linux_clang-latest_libstdcxx_bazel.sh | 2 +- 22 files changed, 96 insertions(+), 43 deletions(-) (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h index 0f066860..9b699b57 100644 --- a/absl/container/inlined_vector.h +++ b/absl/container/inlined_vector.h @@ -1303,10 +1303,10 @@ bool operator>=(const absl::InlinedVector& a, return !(a < b); } -// AbslHashValue() +// `AbslHashValue()` // -// Provides `absl::Hash` support for inlined vectors. You do not normally call -// this function directly. +// Provides `absl::Hash` support for `absl::InlinedVector`. You do not normally +// call this function directly. template H AbslHashValue(H h, const absl::InlinedVector& a) { auto a_data = a.data(); diff --git a/absl/container/internal/raw_hash_set.h b/absl/container/internal/raw_hash_set.h index 85e33344..9c926812 100644 --- a/absl/container/internal/raw_hash_set.h +++ b/absl/container/internal/raw_hash_set.h @@ -1437,7 +1437,18 @@ class raw_hash_set { void initialize_slots() { assert(capacity_); - if (slots_ == nullptr) { + // Folks with custom allocators often make unwaranted assumptions about the + // behavior of their classes vis-a-vis trivial destructability and what + // calls they will or wont make. Avoid sampling for people with custom + // allocators to get us out of this mess. This is not a hard guarntee but a + // workaround while we plan the exact guarantee we want to provide. + // + // People are often sloppy with the exact type of their allocator (sometimes + // it has an extra const or is missing the pair, but rebinds made it work + // anyway). To avoid the ambiguitity, we work off SlotAlloc which we have + // bound more carefully. + if (std::is_same>::value && + slots_ == nullptr) { infoz_ = Sample(); } diff --git a/absl/container/internal/raw_hash_set_test.cc b/absl/container/internal/raw_hash_set_test.cc index 7d96ed90..871d85f1 100644 --- a/absl/container/internal/raw_hash_set_test.cc +++ b/absl/container/internal/raw_hash_set_test.cc @@ -343,7 +343,25 @@ struct IntTable : raw_hash_set, std::equal_to, std::allocator> { using Base = typename IntTable::raw_hash_set; - IntTable() {} + using Base::Base; +}; + +template +struct CustomAlloc : std::allocator { + CustomAlloc() {} + + template + CustomAlloc(const CustomAlloc& other) {} + + template struct rebind { + using other = CustomAlloc; + }; +}; + +struct CustomAllocIntTable + : raw_hash_set, + std::equal_to, CustomAlloc> { + using Base = typename CustomAllocIntTable::raw_hash_set; using Base::Base; }; @@ -1869,6 +1887,27 @@ TEST(RawHashSamplerTest, Sample) { 0.01, 0.005); } +TEST(RawHashSamplerTest, DoNotSampleCustomAllocators) { + // Enable the feature even if the prod default is off. + SetHashtablezEnabled(true); + SetHashtablezSampleParameter(100); + + auto& sampler = HashtablezSampler::Global(); + size_t start_size = 0; + start_size += sampler.Iterate([&](const HashtablezInfo&) { ++start_size; }); + + std::vector tables; + for (int i = 0; i < 1000000; ++i) { + tables.emplace_back(); + tables.back().insert(1); + } + size_t end_size = 0; + end_size += sampler.Iterate([&](const HashtablezInfo&) { ++end_size; }); + + EXPECT_NEAR((end_size - start_size) / static_cast(tables.size()), + 0.00, 0.001); +} + #ifdef ADDRESS_SANITIZER TEST(Sanitizer, PoisoningUnused) { IntTable t; diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake index 043c88a2..16cf9fea 100644 --- a/absl/copts/GENERATED_AbseilCopts.cmake +++ b/absl/copts/GENERATED_AbseilCopts.cmake @@ -76,6 +76,7 @@ list(APPEND ABSL_CLANG_CL_TEST_FLAGS "-Wno-unused-template" "-Wno-used-but-marked-unused" "-Wno-zero-as-null-pointer-constant" + "-Wno-gnu-include-next" "-Wno-gnu-zero-variadic-macro-arguments" ) @@ -177,6 +178,7 @@ list(APPEND ABSL_LLVM_TEST_FLAGS "-Wno-unused-template" "-Wno-used-but-marked-unused" "-Wno-zero-as-null-pointer-constant" + "-Wno-gnu-include-next" "-Wno-gnu-zero-variadic-macro-arguments" ) @@ -202,7 +204,7 @@ list(APPEND ABSL_MSVC_FLAGS ) list(APPEND ABSL_MSVC_LINKOPTS - "-ignore:4221" + "/ignore:4221" ) list(APPEND ABSL_MSVC_TEST_FLAGS diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl index d40380b8..0669c724 100644 --- a/absl/copts/GENERATED_copts.bzl +++ b/absl/copts/GENERATED_copts.bzl @@ -77,6 +77,7 @@ ABSL_CLANG_CL_TEST_FLAGS = [ "-Wno-unused-template", "-Wno-used-but-marked-unused", "-Wno-zero-as-null-pointer-constant", + "-Wno-gnu-include-next", "-Wno-gnu-zero-variadic-macro-arguments", ] @@ -178,6 +179,7 @@ ABSL_LLVM_TEST_FLAGS = [ "-Wno-unused-template", "-Wno-used-but-marked-unused", "-Wno-zero-as-null-pointer-constant", + "-Wno-gnu-include-next", "-Wno-gnu-zero-variadic-macro-arguments", ] @@ -203,7 +205,7 @@ ABSL_MSVC_FLAGS = [ ] ABSL_MSVC_LINKOPTS = [ - "-ignore:4221", + "/ignore:4221", ] ABSL_MSVC_TEST_FLAGS = [ diff --git a/absl/copts/copts.py b/absl/copts/copts.py index 608d7c0e..cd568906 100644 --- a/absl/copts/copts.py +++ b/absl/copts/copts.py @@ -103,6 +103,8 @@ LLVM_TEST_DISABLE_WARNINGS_FLAGS = [ "-Wno-unused-template", "-Wno-used-but-marked-unused", "-Wno-zero-as-null-pointer-constant", + # For a libc++ bug fixed in r357267 + "-Wno-gnu-include-next", # gtest depends on this GNU extension being offered. "-Wno-gnu-zero-variadic-macro-arguments", ] diff --git a/absl/strings/str_split_test.cc b/absl/strings/str_split_test.cc index 4b8e7d6b..02f27bc4 100644 --- a/absl/strings/str_split_test.cc +++ b/absl/strings/str_split_test.cc @@ -71,8 +71,8 @@ TEST(Split, TraitsTest) { // namespaces just like callers will need to use. TEST(Split, APIExamples) { { - // Passes std::string delimiter. Assumes the default of Literal. - std::vector v = absl::StrSplit("a,b,c", ','); + // Passes std::string delimiter. Assumes the default of ByString. + std::vector v = absl::StrSplit("a,b,c", ","); // NOLINT EXPECT_THAT(v, ElementsAre("a", "b", "c")); // Equivalent to... @@ -96,17 +96,6 @@ TEST(Split, APIExamples) { EXPECT_THAT(v, ElementsAre("a", "b", "c")); } - { - // Same as above, but using std::string - std::vector v = absl::StrSplit("a,b,c", ','); - EXPECT_THAT(v, ElementsAre("a", "b", "c")); - - // Equivalent to... - using absl::ByChar; - v = absl::StrSplit("a,b,c", ByChar(',')); - EXPECT_THAT(v, ElementsAre("a", "b", "c")); - } - { // Uses the Literal std::string "=>" as the delimiter. const std::vector v = absl::StrSplit("a=>b=>c", "=>"); @@ -797,7 +786,7 @@ static bool IsFoundAt(absl::string_view text, Delimiter d, int expected_pos) { } // -// Tests for Literal +// Tests for ByString // // Tests using any delimiter that represents a single comma. @@ -817,7 +806,7 @@ void TestComma(Delimiter d) { EXPECT_FALSE(IsFoundAt(";", d, -1)); } -TEST(Delimiter, Literal) { +TEST(Delimiter, ByString) { using absl::ByString; TestComma(ByString(",")); diff --git a/absl/time/internal/cctz/src/time_zone_lookup.cc b/absl/time/internal/cctz/src/time_zone_lookup.cc index fd04e2df..a27bfc13 100644 --- a/absl/time/internal/cctz/src/time_zone_lookup.cc +++ b/absl/time/internal/cctz/src/time_zone_lookup.cc @@ -23,6 +23,7 @@ #if defined(__APPLE__) #include +#include #endif #include @@ -121,24 +122,32 @@ time_zone fixed_time_zone(const seconds& offset) { time_zone local_time_zone() { const char* zone = ":localtime"; +#if defined(__ANDROID__) + char sysprop[PROP_VALUE_MAX]; + if (__system_property_get("persist.sys.timezone", sysprop) > 0) { + zone = sysprop; + } +#endif +#if defined(__APPLE__) + std::vector buffer; + CFTimeZoneRef tz_default = CFTimeZoneCopyDefault(); + if (CFStringRef tz_name = CFTimeZoneGetName(tz_default)) { + CFStringEncoding encoding = kCFStringEncodingUTF8; + CFIndex length = CFStringGetLength(tz_name); + buffer.resize(CFStringGetMaximumSizeForEncoding(length, encoding) + 1); + if (CFStringGetCString(tz_name, &buffer[0], buffer.size(), encoding)) { + zone = &buffer[0]; + } + } + CFRelease(tz_default); +#endif // Allow ${TZ} to override to default zone. char* tz_env = nullptr; #if defined(_MSC_VER) _dupenv_s(&tz_env, nullptr, "TZ"); -#elif defined(__APPLE__) - CFTimeZoneRef system_time_zone = CFTimeZoneCopyDefault(); - CFStringRef tz_name = CFTimeZoneGetName(system_time_zone); - tz_env = strdup(CFStringGetCStringPtr(tz_name, CFStringGetSystemEncoding())); - CFRelease(system_time_zone); #else tz_env = std::getenv("TZ"); -#endif -#if defined(__ANDROID__) - char sysprop[PROP_VALUE_MAX]; - if (tz_env == nullptr) - if (__system_property_get("persist.sys.timezone", sysprop) > 0) - tz_env = sysprop; #endif if (tz_env) zone = tz_env; @@ -163,8 +172,6 @@ time_zone local_time_zone() { #if defined(_MSC_VER) free(localtime_env); free(tz_env); -#elif defined(__APPLE__) - free(tz_env); #endif time_zone tz; diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 4485ba55..ef3feff0 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -33,6 +33,9 @@ #define TZDEFRULES "posixrules" #endif /* !defined TZDEFRULES */ + +/* See Internet RFC 8536 for more details about the following format. */ + /* ** Each file begins with. . . */ diff --git a/absl/time/internal/cctz/testdata/version b/absl/time/internal/cctz/testdata/version index 63f58006..149d790c 100644 --- a/absl/time/internal/cctz/testdata/version +++ b/absl/time/internal/cctz/testdata/version @@ -1 +1 @@ -2018i +2019a diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla b/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla index 85a7e16e..1e94be3d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla and b/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza index cf54deb8..32b4ed65 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron index 09c876a6..0ed8b0d4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem index 2d14c999..93e9f19c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv index 2d14c999..93e9f19c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT index a88c4b66..5583f5b0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Israel b/absl/time/internal/cctz/testdata/zoneinfo/Israel index 2d14c999..93e9f19c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Israel and b/absl/time/internal/cctz/testdata/zoneinfo/Israel differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/UCT b/absl/time/internal/cctz/testdata/zoneinfo/UCT index a88c4b66..5583f5b0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/UCT and b/absl/time/internal/cctz/testdata/zoneinfo/UCT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab b/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab index 4e4a5c3d..a4ff61a4 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +++ b/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab @@ -9,7 +9,7 @@ # All text uses UTF-8 encoding. The columns of the table are as follows: # # 1. ISO 3166-1 alpha-2 country code, current as of -# ISO 3166-1 N905 (2016-11-15). See: Updates on ISO 3166-1 +# ISO 3166-1 N976 (2018-11-06). See: Updates on ISO 3166-1 # https://isotc.iso.org/livelink/livelink/Open/16944257 # 2. The usual English name for the coded region, # chosen so that alphabetic sorting of subsets produces helpful lists. @@ -166,7 +166,7 @@ ME Montenegro MF St Martin (French) MG Madagascar MH Marshall Islands -MK Macedonia +MK North Macedonia ML Mali MM Myanmar (Burma) MN Mongolia @@ -235,7 +235,7 @@ ST Sao Tome & Principe SV El Salvador SX St Maarten (Dutch) SY Syria -SZ Swaziland +SZ Eswatini (Swaziland) TC Turks & Caicos Is TD Chad TF French Southern & Antarctic Lands diff --git a/absl/types/optional_test.cc b/absl/types/optional_test.cc index 897c183a..221c3145 100644 --- a/absl/types/optional_test.cc +++ b/absl/types/optional_test.cc @@ -1628,7 +1628,6 @@ TEST(optionalTest, AssignmentConstraints) { EXPECT_TRUE(absl::is_copy_assignable>::value); } -#if !defined(ABSL_HAVE_STD_OPTIONAL) && !defined(_LIBCPP_VERSION) struct NestedClassBug { struct Inner { bool dummy = false; @@ -1651,6 +1650,5 @@ TEST(optionalTest, InPlaceTSFINAEBug) { o.emplace(); EXPECT_TRUE(o.has_value()); } -#endif // !defined(ABSL_HAVE_STD_OPTIONAL) && !defined(_LIBCPP_VERSION) } // namespace diff --git a/ci/linux_clang-latest_libcxx_bazel.sh b/ci/linux_clang-latest_libcxx_bazel.sh index eec6c26f..fe9d6aaf 100755 --- a/ci/linux_clang-latest_libcxx_bazel.sh +++ b/ci/linux_clang-latest_libcxx_bazel.sh @@ -32,7 +32,7 @@ if [ -z ${COMPILATION_MODE:-} ]; then COMPILATION_MODE="fastbuild opt" fi -readonly DOCKER_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20190313" +readonly DOCKER_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20190329" # USE_BAZEL_CACHE=1 only works on Kokoro. # Without access to the credentials this won't work. diff --git a/ci/linux_clang-latest_libstdcxx_bazel.sh b/ci/linux_clang-latest_libstdcxx_bazel.sh index 14723235..611b7f24 100755 --- a/ci/linux_clang-latest_libstdcxx_bazel.sh +++ b/ci/linux_clang-latest_libstdcxx_bazel.sh @@ -32,7 +32,7 @@ if [ -z ${COMPILATION_MODE:-} ]; then COMPILATION_MODE="fastbuild opt" fi -readonly DOCKER_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20190313" +readonly DOCKER_CONTAINER="gcr.io/google.com/absl-177019/linux_clang-latest:20190329" # USE_BAZEL_CACHE=1 only works on Kokoro. # Without access to the credentials this won't work. -- cgit v1.2.3 From 74d91756c11bc22f9b0108b94da9326f7f9e376f Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Wed, 3 Jul 2019 12:13:04 -0700 Subject: Export of internal Abseil changes. -- a874475e842d2adeb31bb7bd37bdd6eb15a2aeb9 by Mark Barolak : Import of CCTZ from GitHub. PiperOrigin-RevId: 256414250 -- c95e6c21944c59c9b9b9e7eb9dc79cfb9ae5ef8d by CJ Johnson : Update the license year + run clang-format for the FixedArray and InlinedVector test files PiperOrigin-RevId: 256376285 -- f430b04f332d6b89cb8447b07217e391e1c38000 by Derek Mauro : Migrate the Linux CMake tests from GCC 4.8 to the GCC latest version. This will allow us to delete the GCC 4.8 test since that is currently our only CMake coverage. This also means that we don't have to update the script every time we move to a new minumum GCC version. This change includes a fix for a -Wstringops-truncation warning in symbolize_test.cc that triggers when it is built in release mode with the latest GCC. PiperOrigin-RevId: 256370092 GitOrigin-RevId: a874475e842d2adeb31bb7bd37bdd6eb15a2aeb9 Change-Id: Ia2ec58f9b9dfc382d043344e346cb397b802270a --- absl/container/fixed_array_benchmark.cc | 9 +-- .../container/fixed_array_exception_safety_test.cc | 5 +- absl/container/fixed_array_test.cc | 53 ++++++++---------- absl/container/inlined_vector_test.cc | 49 ++++++++--------- absl/debugging/symbolize_test.cc | 3 +- absl/time/internal/cctz/src/time_zone_info.cc | 10 ++-- absl/time/internal/cctz/src/time_zone_info.h | 2 +- absl/time/internal/cctz/src/tzfile.h | 17 +++--- absl/time/internal/cctz/testdata/version | 2 +- .../internal/cctz/testdata/zoneinfo/Africa/Abidjan | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/Africa/Accra | Bin 828 -> 816 bytes .../cctz/testdata/zoneinfo/Africa/Addis_Ababa | Bin 271 -> 251 bytes .../internal/cctz/testdata/zoneinfo/Africa/Algiers | Bin 751 -> 735 bytes .../internal/cctz/testdata/zoneinfo/Africa/Asmara | Bin 271 -> 251 bytes .../internal/cctz/testdata/zoneinfo/Africa/Asmera | Bin 271 -> 251 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bamako | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bangui | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Banjul | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/Africa/Blantyre | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Brazzaville | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Bujumbura | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Cairo | Bin 1963 -> 1955 bytes .../cctz/testdata/zoneinfo/Africa/Casablanca | Bin 1533 -> 2429 bytes .../internal/cctz/testdata/zoneinfo/Africa/Ceuta | Bin 2050 -> 2036 bytes .../internal/cctz/testdata/zoneinfo/Africa/Conakry | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/Africa/Dakar | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/Africa/Dar_es_Salaam | Bin 271 -> 251 bytes .../cctz/testdata/zoneinfo/Africa/Djibouti | Bin 271 -> 251 bytes .../internal/cctz/testdata/zoneinfo/Africa/Douala | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/El_Aaiun | Bin 1403 -> 2295 bytes .../cctz/testdata/zoneinfo/Africa/Freetown | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/Africa/Gaborone | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Harare | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Johannesburg | Bin 262 -> 246 bytes .../internal/cctz/testdata/zoneinfo/Africa/Juba | Bin 669 -> 653 bytes .../internal/cctz/testdata/zoneinfo/Africa/Kampala | Bin 271 -> 251 bytes .../cctz/testdata/zoneinfo/Africa/Khartoum | Bin 699 -> 679 bytes .../internal/cctz/testdata/zoneinfo/Africa/Kigali | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Kinshasa | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lagos | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Libreville | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lome | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/Africa/Luanda | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Lubumbashi | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lusaka | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Malabo | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Maputo | Bin 157 -> 149 bytes .../internal/cctz/testdata/zoneinfo/Africa/Maseru | Bin 262 -> 246 bytes .../internal/cctz/testdata/zoneinfo/Africa/Mbabane | Bin 262 -> 246 bytes .../cctz/testdata/zoneinfo/Africa/Mogadishu | Bin 271 -> 251 bytes .../cctz/testdata/zoneinfo/Africa/Monrovia | Bin 224 -> 208 bytes .../internal/cctz/testdata/zoneinfo/Africa/Nairobi | Bin 271 -> 251 bytes .../cctz/testdata/zoneinfo/Africa/Ndjamena | Bin 211 -> 199 bytes .../internal/cctz/testdata/zoneinfo/Africa/Niamey | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Nouakchott | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/Africa/Ouagadougou | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/Africa/Porto-Novo | Bin 157 -> 149 bytes .../cctz/testdata/zoneinfo/Africa/Timbuktu | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/Africa/Tripoli | Bin 641 -> 625 bytes .../internal/cctz/testdata/zoneinfo/Africa/Tunis | Bin 701 -> 689 bytes .../cctz/testdata/zoneinfo/Africa/Windhoek | Bin 979 -> 955 bytes .../cctz/testdata/zoneinfo/America/Anguilla | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Antigua | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Araguaina | Bin 896 -> 884 bytes .../zoneinfo/America/Argentina/Buenos_Aires | Bin 1100 -> 1076 bytes .../testdata/zoneinfo/America/Argentina/Catamarca | Bin 1100 -> 1076 bytes .../zoneinfo/America/Argentina/ComodRivadavia | Bin 1100 -> 1076 bytes .../testdata/zoneinfo/America/Argentina/Cordoba | Bin 1100 -> 1076 bytes .../cctz/testdata/zoneinfo/America/Argentina/Jujuy | Bin 1072 -> 1048 bytes .../testdata/zoneinfo/America/Argentina/La_Rioja | Bin 1114 -> 1090 bytes .../testdata/zoneinfo/America/Argentina/Mendoza | Bin 1100 -> 1076 bytes .../zoneinfo/America/Argentina/Rio_Gallegos | Bin 1100 -> 1076 bytes .../cctz/testdata/zoneinfo/America/Argentina/Salta | Bin 1072 -> 1048 bytes .../testdata/zoneinfo/America/Argentina/San_Juan | Bin 1114 -> 1090 bytes .../testdata/zoneinfo/America/Argentina/San_Luis | Bin 1130 -> 1102 bytes .../testdata/zoneinfo/America/Argentina/Tucuman | Bin 1128 -> 1104 bytes .../testdata/zoneinfo/America/Argentina/Ushuaia | Bin 1100 -> 1076 bytes .../internal/cctz/testdata/zoneinfo/America/Aruba | Bin 198 -> 186 bytes .../cctz/testdata/zoneinfo/America/Asuncion | Bin 2068 -> 2044 bytes .../internal/cctz/testdata/zoneinfo/America/Bahia | Bin 1036 -> 1024 bytes .../cctz/testdata/zoneinfo/America/Bahia_Banderas | Bin 1574 -> 1546 bytes .../cctz/testdata/zoneinfo/America/Barbados | Bin 330 -> 314 bytes .../internal/cctz/testdata/zoneinfo/America/Belem | Bin 588 -> 576 bytes .../internal/cctz/testdata/zoneinfo/America/Belize | Bin 964 -> 948 bytes .../cctz/testdata/zoneinfo/America/Boa_Vista | Bin 644 -> 632 bytes .../internal/cctz/testdata/zoneinfo/America/Bogota | Bin 262 -> 246 bytes .../cctz/testdata/zoneinfo/America/Buenos_Aires | Bin 1100 -> 1076 bytes .../cctz/testdata/zoneinfo/America/Campo_Grande | Bin 2002 -> 1444 bytes .../internal/cctz/testdata/zoneinfo/America/Cancun | Bin 802 -> 782 bytes .../cctz/testdata/zoneinfo/America/Caracas | Bin 280 -> 264 bytes .../cctz/testdata/zoneinfo/America/Catamarca | Bin 1100 -> 1076 bytes .../cctz/testdata/zoneinfo/America/Cayenne | Bin 210 -> 198 bytes .../internal/cctz/testdata/zoneinfo/America/Cayman | Bin 194 -> 182 bytes .../cctz/testdata/zoneinfo/America/Chihuahua | Bin 1508 -> 1484 bytes .../cctz/testdata/zoneinfo/America/Cordoba | Bin 1100 -> 1076 bytes .../cctz/testdata/zoneinfo/America/Costa_Rica | Bin 332 -> 316 bytes .../cctz/testdata/zoneinfo/America/Creston | Bin 224 -> 208 bytes .../internal/cctz/testdata/zoneinfo/America/Cuiaba | Bin 1974 -> 1416 bytes .../cctz/testdata/zoneinfo/America/Curacao | Bin 198 -> 186 bytes .../cctz/testdata/zoneinfo/America/Dominica | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Eirunepe | Bin 676 -> 656 bytes .../cctz/testdata/zoneinfo/America/El_Salvador | Bin 236 -> 224 bytes .../cctz/testdata/zoneinfo/America/Fortaleza | Bin 728 -> 716 bytes .../cctz/testdata/zoneinfo/America/Grand_Turk | Bin 1872 -> 1848 bytes .../cctz/testdata/zoneinfo/America/Grenada | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Guadeloupe | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Guatemala | Bin 292 -> 280 bytes .../cctz/testdata/zoneinfo/America/Guayaquil | Bin 262 -> 246 bytes .../internal/cctz/testdata/zoneinfo/America/Guyana | Bin 252 -> 236 bytes .../internal/cctz/testdata/zoneinfo/America/Havana | Bin 2428 -> 2416 bytes .../cctz/testdata/zoneinfo/America/Hermosillo | Bin 440 -> 416 bytes .../internal/cctz/testdata/zoneinfo/America/Inuvik | Bin 1914 -> 1894 bytes .../cctz/testdata/zoneinfo/America/Jamaica | Bin 498 -> 482 bytes .../internal/cctz/testdata/zoneinfo/America/Jujuy | Bin 1072 -> 1048 bytes .../cctz/testdata/zoneinfo/America/Kralendijk | Bin 198 -> 186 bytes .../internal/cctz/testdata/zoneinfo/America/La_Paz | Bin 248 -> 232 bytes .../internal/cctz/testdata/zoneinfo/America/Lima | Bin 422 -> 406 bytes .../cctz/testdata/zoneinfo/America/Lower_Princes | Bin 198 -> 186 bytes .../internal/cctz/testdata/zoneinfo/America/Maceio | Bin 756 -> 744 bytes .../cctz/testdata/zoneinfo/America/Managua | Bin 454 -> 430 bytes .../internal/cctz/testdata/zoneinfo/America/Manaus | Bin 616 -> 604 bytes .../cctz/testdata/zoneinfo/America/Marigot | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Martinique | Bin 248 -> 232 bytes .../cctz/testdata/zoneinfo/America/Matamoros | Bin 1402 -> 1390 bytes .../cctz/testdata/zoneinfo/America/Mazatlan | Bin 1550 -> 1526 bytes .../cctz/testdata/zoneinfo/America/Mendoza | Bin 1100 -> 1076 bytes .../internal/cctz/testdata/zoneinfo/America/Merida | Bin 1442 -> 1422 bytes .../cctz/testdata/zoneinfo/America/Mexico_City | Bin 1604 -> 1584 bytes .../cctz/testdata/zoneinfo/America/Miquelon | Bin 1682 -> 1666 bytes .../cctz/testdata/zoneinfo/America/Monterrey | Bin 1402 -> 1390 bytes .../cctz/testdata/zoneinfo/America/Montevideo | Bin 1550 -> 1510 bytes .../cctz/testdata/zoneinfo/America/Montserrat | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/America/Nassau | Bin 2270 -> 2258 bytes .../cctz/testdata/zoneinfo/America/Noronha | Bin 728 -> 716 bytes .../cctz/testdata/zoneinfo/America/Ojinaga | Bin 1508 -> 1484 bytes .../internal/cctz/testdata/zoneinfo/America/Panama | Bin 194 -> 182 bytes .../cctz/testdata/zoneinfo/America/Paramaribo | Bin 282 -> 262 bytes .../cctz/testdata/zoneinfo/America/Phoenix | Bin 344 -> 328 bytes .../cctz/testdata/zoneinfo/America/Port-au-Prince | Bin 1446 -> 1434 bytes .../cctz/testdata/zoneinfo/America/Port_of_Spain | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Porto_Acre | Bin 648 -> 628 bytes .../cctz/testdata/zoneinfo/America/Porto_Velho | Bin 588 -> 576 bytes .../cctz/testdata/zoneinfo/America/Rankin_Inlet | Bin 1916 -> 1892 bytes .../internal/cctz/testdata/zoneinfo/America/Recife | Bin 728 -> 716 bytes .../cctz/testdata/zoneinfo/America/Resolute | Bin 1916 -> 1892 bytes .../cctz/testdata/zoneinfo/America/Rio_Branco | Bin 648 -> 628 bytes .../cctz/testdata/zoneinfo/America/Rosario | Bin 1100 -> 1076 bytes .../cctz/testdata/zoneinfo/America/Santarem | Bin 618 -> 602 bytes .../cctz/testdata/zoneinfo/America/Santo_Domingo | Bin 482 -> 458 bytes .../cctz/testdata/zoneinfo/America/Sao_Paulo | Bin 2002 -> 1444 bytes .../cctz/testdata/zoneinfo/America/St_Barthelemy | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/St_Kitts | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/St_Lucia | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/St_Thomas | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/St_Vincent | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Tegucigalpa | Bin 264 -> 252 bytes .../internal/cctz/testdata/zoneinfo/America/Thule | Bin 1514 -> 1502 bytes .../cctz/testdata/zoneinfo/America/Tortola | Bin 156 -> 148 bytes .../internal/cctz/testdata/zoneinfo/America/Virgin | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/America/Winnipeg | Bin 2882 -> 2868 bytes .../testdata/zoneinfo/Antarctica/DumontDUrville | Bin 202 -> 194 bytes .../cctz/testdata/zoneinfo/Antarctica/Macquarie | Bin 1534 -> 1520 bytes .../cctz/testdata/zoneinfo/Antarctica/Mawson | Bin 211 -> 199 bytes .../cctz/testdata/zoneinfo/Antarctica/McMurdo | Bin 2451 -> 2437 bytes .../cctz/testdata/zoneinfo/Antarctica/Rothera | Bin 172 -> 164 bytes .../cctz/testdata/zoneinfo/Antarctica/South_Pole | Bin 2451 -> 2437 bytes .../cctz/testdata/zoneinfo/Antarctica/Syowa | Bin 173 -> 165 bytes .../cctz/testdata/zoneinfo/Antarctica/Vostok | Bin 173 -> 165 bytes .../cctz/testdata/zoneinfo/Arctic/Longyearbyen | Bin 2242 -> 2228 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Aden | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Asia/Almaty | Bin 1017 -> 997 bytes .../internal/cctz/testdata/zoneinfo/Asia/Amman | Bin 1863 -> 1853 bytes .../internal/cctz/testdata/zoneinfo/Asia/Anadyr | Bin 1208 -> 1188 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aqtau | Bin 1003 -> 983 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aqtobe | Bin 1033 -> 1011 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ashgabat | Bin 637 -> 619 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ashkhabad | Bin 637 -> 619 bytes .../internal/cctz/testdata/zoneinfo/Asia/Atyrau | Bin 1011 -> 991 bytes .../internal/cctz/testdata/zoneinfo/Asia/Baghdad | Bin 995 -> 983 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bahrain | Bin 211 -> 199 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Baku | Bin 1255 -> 1227 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bangkok | Bin 211 -> 199 bytes .../internal/cctz/testdata/zoneinfo/Asia/Barnaul | Bin 1241 -> 1221 bytes .../internal/cctz/testdata/zoneinfo/Asia/Beirut | Bin 2166 -> 2154 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bishkek | Bin 999 -> 983 bytes .../internal/cctz/testdata/zoneinfo/Asia/Brunei | Bin 215 -> 203 bytes .../internal/cctz/testdata/zoneinfo/Asia/Calcutta | Bin 303 -> 285 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chita | Bin 1243 -> 1221 bytes .../cctz/testdata/zoneinfo/Asia/Choibalsan | Bin 977 -> 949 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chongqing | Bin 545 -> 533 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chungking | Bin 545 -> 533 bytes .../internal/cctz/testdata/zoneinfo/Asia/Colombo | Bin 404 -> 372 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dacca | Bin 361 -> 337 bytes .../internal/cctz/testdata/zoneinfo/Asia/Damascus | Bin 2306 -> 2294 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dhaka | Bin 361 -> 337 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Dili | Bin 239 -> 227 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dubai | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dushanbe | Bin 607 -> 591 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Gaza | Bin 2343 -> 2316 bytes .../internal/cctz/testdata/zoneinfo/Asia/Harbin | Bin 545 -> 533 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hebron | Bin 2371 -> 2344 bytes .../cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh | Bin 375 -> 351 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hong_Kong | Bin 1191 -> 1193 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Hovd | Bin 907 -> 891 bytes .../internal/cctz/testdata/zoneinfo/Asia/Irkutsk | Bin 1267 -> 1243 bytes .../internal/cctz/testdata/zoneinfo/Asia/Istanbul | Bin 2157 -> 2143 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jakarta | Bin 383 -> 355 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jayapura | Bin 237 -> 221 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jerusalem | Bin 2312 -> 2288 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kabul | Bin 220 -> 208 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kamchatka | Bin 1184 -> 1166 bytes .../internal/cctz/testdata/zoneinfo/Asia/Karachi | Bin 403 -> 379 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kashgar | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kathmandu | Bin 224 -> 212 bytes .../internal/cctz/testdata/zoneinfo/Asia/Katmandu | Bin 224 -> 212 bytes .../internal/cctz/testdata/zoneinfo/Asia/Khandyga | Bin 1297 -> 1271 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kolkata | Bin 303 -> 285 bytes .../cctz/testdata/zoneinfo/Asia/Krasnoyarsk | Bin 1229 -> 1207 bytes .../cctz/testdata/zoneinfo/Asia/Kuala_Lumpur | Bin 415 -> 383 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kuching | Bin 507 -> 483 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kuwait | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Asia/Macao | Bin 1241 -> 1227 bytes .../internal/cctz/testdata/zoneinfo/Asia/Macau | Bin 1241 -> 1227 bytes .../internal/cctz/testdata/zoneinfo/Asia/Magadan | Bin 1244 -> 1222 bytes .../internal/cctz/testdata/zoneinfo/Asia/Makassar | Bin 274 -> 254 bytes .../internal/cctz/testdata/zoneinfo/Asia/Manila | Bin 350 -> 328 bytes .../internal/cctz/testdata/zoneinfo/Asia/Muscat | Bin 173 -> 165 bytes .../cctz/testdata/zoneinfo/Asia/Novokuznetsk | Bin 1183 -> 1165 bytes .../cctz/testdata/zoneinfo/Asia/Novosibirsk | Bin 1241 -> 1221 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Omsk | Bin 1229 -> 1207 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Oral | Bin 1025 -> 1005 bytes .../cctz/testdata/zoneinfo/Asia/Phnom_Penh | Bin 211 -> 199 bytes .../internal/cctz/testdata/zoneinfo/Asia/Pontianak | Bin 381 -> 353 bytes .../internal/cctz/testdata/zoneinfo/Asia/Pyongyang | Bin 253 -> 237 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qatar | Bin 211 -> 199 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qostanay | Bin 1033 -> 1011 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qyzylorda | Bin 1047 -> 1025 bytes .../internal/cctz/testdata/zoneinfo/Asia/Rangoon | Bin 288 -> 268 bytes .../internal/cctz/testdata/zoneinfo/Asia/Riyadh | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Asia/Saigon | Bin 375 -> 351 bytes .../internal/cctz/testdata/zoneinfo/Asia/Sakhalin | Bin 1220 -> 1202 bytes .../internal/cctz/testdata/zoneinfo/Asia/Samarkand | Bin 605 -> 577 bytes .../internal/cctz/testdata/zoneinfo/Asia/Seoul | Bin 517 -> 493 bytes .../internal/cctz/testdata/zoneinfo/Asia/Shanghai | Bin 545 -> 533 bytes .../internal/cctz/testdata/zoneinfo/Asia/Singapore | Bin 415 -> 383 bytes .../cctz/testdata/zoneinfo/Asia/Srednekolymsk | Bin 1230 -> 1208 bytes .../internal/cctz/testdata/zoneinfo/Asia/Taipei | Bin 781 -> 761 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tashkent | Bin 621 -> 591 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tbilisi | Bin 1071 -> 1035 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tehran | Bin 2610 -> 2582 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv | Bin 2312 -> 2288 bytes .../internal/cctz/testdata/zoneinfo/Asia/Thimbu | Bin 215 -> 203 bytes .../internal/cctz/testdata/zoneinfo/Asia/Thimphu | Bin 215 -> 203 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tomsk | Bin 1241 -> 1221 bytes .../cctz/testdata/zoneinfo/Asia/Ujung_Pandang | Bin 274 -> 254 bytes .../cctz/testdata/zoneinfo/Asia/Ulaanbaatar | Bin 907 -> 891 bytes .../cctz/testdata/zoneinfo/Asia/Ulan_Bator | Bin 907 -> 891 bytes .../internal/cctz/testdata/zoneinfo/Asia/Urumqi | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ust-Nera | Bin 1276 -> 1252 bytes .../internal/cctz/testdata/zoneinfo/Asia/Vientiane | Bin 211 -> 199 bytes .../cctz/testdata/zoneinfo/Asia/Vladivostok | Bin 1230 -> 1208 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yakutsk | Bin 1229 -> 1207 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yangon | Bin 288 -> 268 bytes .../cctz/testdata/zoneinfo/Asia/Yekaterinburg | Bin 1267 -> 1243 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yerevan | Bin 1199 -> 1151 bytes .../cctz/testdata/zoneinfo/Atlantic/Bermuda | Bin 1990 -> 1978 bytes .../cctz/testdata/zoneinfo/Atlantic/Jan_Mayen | Bin 2242 -> 2228 bytes .../cctz/testdata/zoneinfo/Atlantic/Reykjavik | Bin 1174 -> 1162 bytes .../cctz/testdata/zoneinfo/Atlantic/South_Georgia | Bin 172 -> 164 bytes .../cctz/testdata/zoneinfo/Atlantic/St_Helena | Bin 156 -> 148 bytes .../cctz/testdata/zoneinfo/Atlantic/Stanley | Bin 1242 -> 1214 bytes .../internal/cctz/testdata/zoneinfo/Australia/ACT | Bin 2214 -> 2204 bytes .../cctz/testdata/zoneinfo/Australia/Adelaide | Bin 2233 -> 2222 bytes .../cctz/testdata/zoneinfo/Australia/Brisbane | Bin 443 -> 433 bytes .../cctz/testdata/zoneinfo/Australia/Broken_Hill | Bin 2269 -> 2243 bytes .../cctz/testdata/zoneinfo/Australia/Canberra | Bin 2214 -> 2204 bytes .../cctz/testdata/zoneinfo/Australia/Currie | Bin 2214 -> 2204 bytes .../cctz/testdata/zoneinfo/Australia/Darwin | Bin 318 -> 304 bytes .../cctz/testdata/zoneinfo/Australia/Eucla | Bin 494 -> 484 bytes .../cctz/testdata/zoneinfo/Australia/Hobart | Bin 2326 -> 2316 bytes .../internal/cctz/testdata/zoneinfo/Australia/LHI | Bin 1880 -> 1860 bytes .../cctz/testdata/zoneinfo/Australia/Lindeman | Bin 513 -> 489 bytes .../cctz/testdata/zoneinfo/Australia/Lord_Howe | Bin 1880 -> 1860 bytes .../cctz/testdata/zoneinfo/Australia/Melbourne | Bin 2214 -> 2204 bytes .../internal/cctz/testdata/zoneinfo/Australia/NSW | Bin 2214 -> 2204 bytes .../cctz/testdata/zoneinfo/Australia/North | Bin 318 -> 304 bytes .../cctz/testdata/zoneinfo/Australia/Perth | Bin 470 -> 460 bytes .../cctz/testdata/zoneinfo/Australia/Queensland | Bin 443 -> 433 bytes .../cctz/testdata/zoneinfo/Australia/South | Bin 2233 -> 2222 bytes .../cctz/testdata/zoneinfo/Australia/Sydney | Bin 2214 -> 2204 bytes .../cctz/testdata/zoneinfo/Australia/Tasmania | Bin 2326 -> 2316 bytes .../cctz/testdata/zoneinfo/Australia/Victoria | Bin 2214 -> 2204 bytes .../internal/cctz/testdata/zoneinfo/Australia/West | Bin 470 -> 460 bytes .../cctz/testdata/zoneinfo/Australia/Yancowinna | Bin 2269 -> 2243 bytes .../internal/cctz/testdata/zoneinfo/Brazil/Acre | Bin 648 -> 628 bytes .../cctz/testdata/zoneinfo/Brazil/DeNoronha | Bin 728 -> 716 bytes .../internal/cctz/testdata/zoneinfo/Brazil/East | Bin 2002 -> 1444 bytes .../internal/cctz/testdata/zoneinfo/Brazil/West | Bin 616 -> 604 bytes absl/time/internal/cctz/testdata/zoneinfo/CET | Bin 2102 -> 2094 bytes absl/time/internal/cctz/testdata/zoneinfo/CST6CDT | Bin 2294 -> 2310 bytes .../internal/cctz/testdata/zoneinfo/Canada/Central | Bin 2882 -> 2868 bytes absl/time/internal/cctz/testdata/zoneinfo/Cuba | Bin 2428 -> 2416 bytes absl/time/internal/cctz/testdata/zoneinfo/EET | Bin 1876 -> 1908 bytes absl/time/internal/cctz/testdata/zoneinfo/EST | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/EST5EDT | Bin 2294 -> 2310 bytes absl/time/internal/cctz/testdata/zoneinfo/Egypt | Bin 1963 -> 1955 bytes absl/time/internal/cctz/testdata/zoneinfo/Eire | Bin 3522 -> 3492 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT | Bin 118 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 | Bin 118 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 | Bin 120 -> 116 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+10 | Bin 121 -> 117 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+11 | Bin 121 -> 117 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+12 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 | Bin 120 -> 116 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 | Bin 118 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 | Bin 121 -> 117 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-10 | Bin 122 -> 118 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-11 | Bin 122 -> 118 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-12 | Bin 122 -> 118 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-13 | Bin 122 -> 118 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-14 | Bin 122 -> 118 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 | Bin 121 -> 117 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 | Bin 121 -> 117 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 | Bin 118 -> 114 bytes .../internal/cctz/testdata/zoneinfo/Etc/Greenwich | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC | Bin 118 -> 114 bytes .../internal/cctz/testdata/zoneinfo/Etc/Universal | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu | Bin 118 -> 114 bytes .../cctz/testdata/zoneinfo/Europe/Amsterdam | Bin 2940 -> 2910 bytes .../cctz/testdata/zoneinfo/Europe/Astrakhan | Bin 1183 -> 1165 bytes .../internal/cctz/testdata/zoneinfo/Europe/Belfast | Bin 3678 -> 3648 bytes .../cctz/testdata/zoneinfo/Europe/Belgrade | Bin 1948 -> 1920 bytes .../internal/cctz/testdata/zoneinfo/Europe/Berlin | Bin 2326 -> 2298 bytes .../cctz/testdata/zoneinfo/Europe/Bratislava | Bin 2329 -> 2301 bytes .../cctz/testdata/zoneinfo/Europe/Brussels | Bin 2961 -> 2933 bytes .../cctz/testdata/zoneinfo/Europe/Bucharest | Bin 2212 -> 2184 bytes .../cctz/testdata/zoneinfo/Europe/Budapest | Bin 2396 -> 2368 bytes .../cctz/testdata/zoneinfo/Europe/Chisinau | Bin 2436 -> 2390 bytes .../cctz/testdata/zoneinfo/Europe/Copenhagen | Bin 2151 -> 2137 bytes .../internal/cctz/testdata/zoneinfo/Europe/Dublin | Bin 3522 -> 3492 bytes .../cctz/testdata/zoneinfo/Europe/Guernsey | Bin 3678 -> 3648 bytes .../cctz/testdata/zoneinfo/Europe/Isle_of_Man | Bin 3678 -> 3648 bytes .../cctz/testdata/zoneinfo/Europe/Istanbul | Bin 2157 -> 2143 bytes .../internal/cctz/testdata/zoneinfo/Europe/Jersey | Bin 3678 -> 3648 bytes .../cctz/testdata/zoneinfo/Europe/Kaliningrad | Bin 1509 -> 1479 bytes .../cctz/testdata/zoneinfo/Europe/Ljubljana | Bin 1948 -> 1920 bytes .../internal/cctz/testdata/zoneinfo/Europe/London | Bin 3678 -> 3648 bytes .../cctz/testdata/zoneinfo/Europe/Luxembourg | Bin 2960 -> 2946 bytes .../internal/cctz/testdata/zoneinfo/Europe/Madrid | Bin 2628 -> 2614 bytes .../internal/cctz/testdata/zoneinfo/Europe/Minsk | Bin 1361 -> 1321 bytes .../internal/cctz/testdata/zoneinfo/Europe/Oslo | Bin 2242 -> 2228 bytes .../cctz/testdata/zoneinfo/Europe/Podgorica | Bin 1948 -> 1920 bytes .../internal/cctz/testdata/zoneinfo/Europe/Prague | Bin 2329 -> 2301 bytes .../internal/cctz/testdata/zoneinfo/Europe/Riga | Bin 2226 -> 2198 bytes .../internal/cctz/testdata/zoneinfo/Europe/Rome | Bin 2683 -> 2641 bytes .../cctz/testdata/zoneinfo/Europe/San_Marino | Bin 2683 -> 2641 bytes .../cctz/testdata/zoneinfo/Europe/Sarajevo | Bin 1948 -> 1920 bytes .../cctz/testdata/zoneinfo/Europe/Simferopol | Bin 1481 -> 1453 bytes .../internal/cctz/testdata/zoneinfo/Europe/Skopje | Bin 1948 -> 1920 bytes .../internal/cctz/testdata/zoneinfo/Europe/Sofia | Bin 2121 -> 2077 bytes .../internal/cctz/testdata/zoneinfo/Europe/Tallinn | Bin 2178 -> 2148 bytes .../cctz/testdata/zoneinfo/Europe/Tiraspol | Bin 2436 -> 2390 bytes .../cctz/testdata/zoneinfo/Europe/Uzhgorod | Bin 2094 -> 2050 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vatican | Bin 2683 -> 2641 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vienna | Bin 2228 -> 2200 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vilnius | Bin 2190 -> 2162 bytes .../cctz/testdata/zoneinfo/Europe/Volgograd | Bin 1183 -> 1165 bytes .../internal/cctz/testdata/zoneinfo/Europe/Warsaw | Bin 2696 -> 2654 bytes .../internal/cctz/testdata/zoneinfo/Europe/Zagreb | Bin 1948 -> 1920 bytes absl/time/internal/cctz/testdata/zoneinfo/Factory | Bin 120 -> 116 bytes absl/time/internal/cctz/testdata/zoneinfo/GB | Bin 3678 -> 3648 bytes absl/time/internal/cctz/testdata/zoneinfo/GB-Eire | Bin 3678 -> 3648 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT+0 | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT-0 | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/GMT0 | Bin 118 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Greenwich | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/HST | Bin 119 -> 115 bytes absl/time/internal/cctz/testdata/zoneinfo/Hongkong | Bin 1191 -> 1193 bytes absl/time/internal/cctz/testdata/zoneinfo/Iceland | Bin 1174 -> 1162 bytes .../cctz/testdata/zoneinfo/Indian/Antananarivo | Bin 271 -> 251 bytes .../internal/cctz/testdata/zoneinfo/Indian/Chagos | Bin 211 -> 199 bytes .../cctz/testdata/zoneinfo/Indian/Christmas | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Indian/Cocos | Bin 182 -> 174 bytes .../internal/cctz/testdata/zoneinfo/Indian/Comoro | Bin 271 -> 251 bytes .../cctz/testdata/zoneinfo/Indian/Kerguelen | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Indian/Mahe | Bin 173 -> 165 bytes .../cctz/testdata/zoneinfo/Indian/Maldives | Bin 211 -> 199 bytes .../cctz/testdata/zoneinfo/Indian/Mauritius | Bin 253 -> 241 bytes .../internal/cctz/testdata/zoneinfo/Indian/Mayotte | Bin 271 -> 251 bytes .../internal/cctz/testdata/zoneinfo/Indian/Reunion | Bin 173 -> 165 bytes absl/time/internal/cctz/testdata/zoneinfo/Iran | Bin 2610 -> 2582 bytes absl/time/internal/cctz/testdata/zoneinfo/Israel | Bin 2312 -> 2288 bytes absl/time/internal/cctz/testdata/zoneinfo/Jamaica | Bin 498 -> 482 bytes .../time/internal/cctz/testdata/zoneinfo/Kwajalein | Bin 340 -> 316 bytes absl/time/internal/cctz/testdata/zoneinfo/Libya | Bin 641 -> 625 bytes absl/time/internal/cctz/testdata/zoneinfo/MET | Bin 2102 -> 2094 bytes absl/time/internal/cctz/testdata/zoneinfo/MST | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/MST7MDT | Bin 2294 -> 2310 bytes .../internal/cctz/testdata/zoneinfo/Mexico/BajaSur | Bin 1550 -> 1526 bytes .../internal/cctz/testdata/zoneinfo/Mexico/General | Bin 1604 -> 1584 bytes absl/time/internal/cctz/testdata/zoneinfo/NZ | Bin 2451 -> 2437 bytes absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT | Bin 2078 -> 2068 bytes absl/time/internal/cctz/testdata/zoneinfo/PRC | Bin 545 -> 533 bytes absl/time/internal/cctz/testdata/zoneinfo/PST8PDT | Bin 2294 -> 2310 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Apia | Bin 1125 -> 1097 bytes .../cctz/testdata/zoneinfo/Pacific/Auckland | Bin 2451 -> 2437 bytes .../cctz/testdata/zoneinfo/Pacific/Bougainville | Bin 286 -> 268 bytes .../cctz/testdata/zoneinfo/Pacific/Chatham | Bin 2078 -> 2068 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Chuuk | Bin 287 -> 269 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Efate | Bin 478 -> 466 bytes .../cctz/testdata/zoneinfo/Pacific/Enderbury | Bin 250 -> 234 bytes .../cctz/testdata/zoneinfo/Pacific/Fakaofo | Bin 212 -> 200 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Fiji | Bin 1090 -> 1078 bytes .../cctz/testdata/zoneinfo/Pacific/Funafuti | Bin 174 -> 166 bytes .../cctz/testdata/zoneinfo/Pacific/Galapagos | Bin 254 -> 238 bytes .../cctz/testdata/zoneinfo/Pacific/Gambier | Bin 172 -> 164 bytes .../cctz/testdata/zoneinfo/Pacific/Guadalcanal | Bin 174 -> 166 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Guam | Bin 516 -> 494 bytes .../cctz/testdata/zoneinfo/Pacific/Kiritimati | Bin 254 -> 238 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Kosrae | Bin 377 -> 351 bytes .../cctz/testdata/zoneinfo/Pacific/Kwajalein | Bin 340 -> 316 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Majuro | Bin 330 -> 310 bytes .../cctz/testdata/zoneinfo/Pacific/Marquesas | Bin 181 -> 173 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Midway | Bin 187 -> 175 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Nauru | Bin 268 -> 252 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Niue | Bin 257 -> 241 bytes .../cctz/testdata/zoneinfo/Pacific/Norfolk | Bin 314 -> 294 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Noumea | Bin 314 -> 304 bytes .../cctz/testdata/zoneinfo/Pacific/Pago_Pago | Bin 187 -> 175 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Palau | Bin 190 -> 180 bytes .../cctz/testdata/zoneinfo/Pacific/Pitcairn | Bin 214 -> 202 bytes .../cctz/testdata/zoneinfo/Pacific/Pohnpei | Bin 325 -> 303 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Ponape | Bin 325 -> 303 bytes .../cctz/testdata/zoneinfo/Pacific/Port_Moresby | Bin 196 -> 186 bytes .../cctz/testdata/zoneinfo/Pacific/Rarotonga | Bin 593 -> 577 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Saipan | Bin 516 -> 494 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Samoa | Bin 187 -> 175 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Tahiti | Bin 173 -> 165 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Tarawa | Bin 174 -> 166 bytes .../cctz/testdata/zoneinfo/Pacific/Tongatapu | Bin 384 -> 372 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Truk | Bin 287 -> 269 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Wake | Bin 174 -> 166 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Wallis | Bin 174 -> 166 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Yap | Bin 287 -> 269 bytes absl/time/internal/cctz/testdata/zoneinfo/Poland | Bin 2696 -> 2654 bytes absl/time/internal/cctz/testdata/zoneinfo/ROC | Bin 781 -> 761 bytes absl/time/internal/cctz/testdata/zoneinfo/ROK | Bin 517 -> 493 bytes .../time/internal/cctz/testdata/zoneinfo/Singapore | Bin 415 -> 383 bytes absl/time/internal/cctz/testdata/zoneinfo/Turkey | Bin 2157 -> 2143 bytes absl/time/internal/cctz/testdata/zoneinfo/UCT | Bin 118 -> 114 bytes .../internal/cctz/testdata/zoneinfo/US/Arizona | Bin 344 -> 328 bytes absl/time/internal/cctz/testdata/zoneinfo/US/Samoa | Bin 187 -> 175 bytes absl/time/internal/cctz/testdata/zoneinfo/UTC | Bin 118 -> 114 bytes .../time/internal/cctz/testdata/zoneinfo/Universal | Bin 118 -> 114 bytes absl/time/internal/cctz/testdata/zoneinfo/WET | Bin 1873 -> 1905 bytes absl/time/internal/cctz/testdata/zoneinfo/Zulu | Bin 118 -> 114 bytes .../internal/cctz/testdata/zoneinfo/zone1970.tab | 3 +- ci/cmake_install_test.sh | 2 +- ci/linux_gcc-latest_libstdcxx_bazel.sh | 2 +- ci/linux_gcc-latest_libstdcxx_cmake.sh | 61 +++++++++++++++++++++ 475 files changed, 135 insertions(+), 83 deletions(-) create mode 100755 ci/linux_gcc-latest_libstdcxx_cmake.sh (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/absl/container/fixed_array_benchmark.cc b/absl/container/fixed_array_benchmark.cc index ff56f466..3c7a5a72 100644 --- a/absl/container/fixed_array_benchmark.cc +++ b/absl/container/fixed_array_benchmark.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Abseil Authors. +// Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,12 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "absl/container/fixed_array.h" - #include + #include #include "benchmark/benchmark.h" +#include "absl/container/fixed_array.h" namespace { @@ -25,8 +25,9 @@ namespace { // set an int to a constant.. class SimpleClass { public: - SimpleClass() : i(3) { } + SimpleClass() : i(3) {} ~SimpleClass() { i = 0; } + private: int i; }; diff --git a/absl/container/fixed_array_exception_safety_test.cc b/absl/container/fixed_array_exception_safety_test.cc index 826eca61..9984a5e2 100644 --- a/absl/container/fixed_array_exception_safety_test.cc +++ b/absl/container/fixed_array_exception_safety_test.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Abseil Authors. +// Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,10 +14,9 @@ #include -#include "absl/container/fixed_array.h" - #include "gtest/gtest.h" #include "absl/base/internal/exception_safety_testing.h" +#include "absl/container/fixed_array.h" namespace absl { diff --git a/absl/container/fixed_array_test.cc b/absl/container/fixed_array_test.cc index a4f2498b..2b1cf47e 100644 --- a/absl/container/fixed_array_test.cc +++ b/absl/container/fixed_array_test.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Abseil Authors. +// Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ #include "absl/container/fixed_array.h" #include + #include #include #include @@ -42,11 +43,7 @@ static bool IsOnStack(const ArrayType& a) { class ConstructionTester { public: - ConstructionTester() - : self_ptr_(this), - value_(0) { - constructions++; - } + ConstructionTester() : self_ptr_(this), value_(0) { constructions++; } ~ConstructionTester() { assert(self_ptr_ == this); self_ptr_ = nullptr; @@ -58,9 +55,7 @@ class ConstructionTester { static int constructions; static int destructions; - void CheckConstructed() { - assert(self_ptr_ == this); - } + void CheckConstructed() { assert(self_ptr_ == this); } void set(int value) { value_ = value; } int get() { return value_; } @@ -160,13 +155,13 @@ TEST(FixedArrayTest, SmallObjects) { // same amount of stack space absl::FixedArray array1(0); absl::FixedArray array2(0); - EXPECT_LE(sizeof(array1), sizeof(array2)+100); - EXPECT_LE(sizeof(array2), sizeof(array1)+100); + EXPECT_LE(sizeof(array1), sizeof(array2) + 100); + EXPECT_LE(sizeof(array2), sizeof(array1) + 100); } { // Ensure that vectors are properly constructed inside a fixed array. - absl::FixedArray > array(2); + absl::FixedArray> array(2); EXPECT_EQ(0, array[0].size()); EXPECT_EQ(0, array[1].size()); } @@ -270,8 +265,8 @@ static void TestArray(int n) { array.data()[i].set(i + 1); } for (int i = 0; i < n; i++) { - EXPECT_THAT(array[i].get(), i+1); - EXPECT_THAT(array.data()[i].get(), i+1); + EXPECT_THAT(array[i].get(), i + 1); + EXPECT_THAT(array.data()[i].get(), i + 1); } } // Close scope containing 'array'. @@ -296,7 +291,7 @@ static void TestArrayOfArrays(int n) { ASSERT_EQ(array.size(), n); ASSERT_EQ(array.memsize(), - sizeof(ConstructionTester) * elements_per_inner_array * n); + sizeof(ConstructionTester) * elements_per_inner_array * n); ASSERT_EQ(array.begin() + n, array.end()); // Check that all elements were constructed @@ -316,7 +311,7 @@ static void TestArrayOfArrays(int n) { } for (int i = 0; i < n; i++) { for (int j = 0; j < elements_per_inner_array; j++) { - ASSERT_EQ((array[i])[j].get(), i * elements_per_inner_array + j); + ASSERT_EQ((array[i])[j].get(), i * elements_per_inner_array + j); ASSERT_EQ((array.data()[i])[j].get(), i * elements_per_inner_array + j); } } @@ -329,8 +324,7 @@ static void TestArrayOfArrays(int n) { } for (int i = 0; i < n; i++) { for (int j = 0; j < elements_per_inner_array; j++) { - ASSERT_EQ((array[i])[j].get(), - (i + 1) * elements_per_inner_array + j); + ASSERT_EQ((array[i])[j].get(), (i + 1) * elements_per_inner_array + j); ASSERT_EQ((array.data()[i])[j].get(), (i + 1) * elements_per_inner_array + j); } @@ -343,7 +337,7 @@ static void TestArrayOfArrays(int n) { } TEST(IteratorConstructorTest, NonInline) { - int const kInput[] = { 2, 3, 5, 7, 11, 13, 17 }; + int const kInput[] = {2, 3, 5, 7, 11, 13, 17}; absl::FixedArray const fixed( kInput, kInput + ABSL_ARRAYSIZE(kInput)); ASSERT_EQ(ABSL_ARRAYSIZE(kInput), fixed.size()); @@ -353,7 +347,7 @@ TEST(IteratorConstructorTest, NonInline) { } TEST(IteratorConstructorTest, Inline) { - int const kInput[] = { 2, 3, 5, 7, 11, 13, 17 }; + int const kInput[] = {2, 3, 5, 7, 11, 13, 17}; absl::FixedArray const fixed( kInput, kInput + ABSL_ARRAYSIZE(kInput)); ASSERT_EQ(ABSL_ARRAYSIZE(kInput), fixed.size()); @@ -363,8 +357,8 @@ TEST(IteratorConstructorTest, Inline) { } TEST(IteratorConstructorTest, NonPod) { - char const* kInput[] = - { "red", "orange", "yellow", "green", "blue", "indigo", "violet" }; + char const* kInput[] = {"red", "orange", "yellow", "green", + "blue", "indigo", "violet"}; absl::FixedArray const fixed(kInput, kInput + ABSL_ARRAYSIZE(kInput)); ASSERT_EQ(ABSL_ARRAYSIZE(kInput), fixed.size()); @@ -381,7 +375,7 @@ TEST(IteratorConstructorTest, FromEmptyVector) { } TEST(IteratorConstructorTest, FromNonEmptyVector) { - int const kInput[] = { 2, 3, 5, 7, 11, 13, 17 }; + int const kInput[] = {2, 3, 5, 7, 11, 13, 17}; std::vector const items(kInput, kInput + ABSL_ARRAYSIZE(kInput)); absl::FixedArray const fixed(items.begin(), items.end()); ASSERT_EQ(items.size(), fixed.size()); @@ -391,7 +385,7 @@ TEST(IteratorConstructorTest, FromNonEmptyVector) { } TEST(IteratorConstructorTest, FromBidirectionalIteratorRange) { - int const kInput[] = { 2, 3, 5, 7, 11, 13, 17 }; + int const kInput[] = {2, 3, 5, 7, 11, 13, 17}; std::list const items(kInput, kInput + ABSL_ARRAYSIZE(kInput)); absl::FixedArray const fixed(items.begin(), items.end()); EXPECT_THAT(fixed, testing::ElementsAreArray(kInput)); @@ -508,9 +502,8 @@ struct PickyDelete { TEST(FixedArrayTest, UsesGlobalAlloc) { absl::FixedArray a(5); } - TEST(FixedArrayTest, Data) { - static const int kInput[] = { 2, 3, 5, 7, 11, 13, 17 }; + static const int kInput[] = {2, 3, 5, 7, 11, 13, 17}; absl::FixedArray fa(std::begin(kInput), std::end(kInput)); EXPECT_EQ(fa.data(), &*fa.begin()); EXPECT_EQ(fa.data(), &fa[0]); @@ -824,7 +817,7 @@ TEST(AllocatorSupportTest, SizeValAllocConstructor) { #ifdef ADDRESS_SANITIZER TEST(FixedArrayTest, AddressSanitizerAnnotations1) { absl::FixedArray a(10); - int *raw = a.data(); + int* raw = a.data(); raw[0] = 0; raw[9] = 0; EXPECT_DEATH(raw[-2] = 0, "container-overflow"); @@ -835,7 +828,7 @@ TEST(FixedArrayTest, AddressSanitizerAnnotations1) { TEST(FixedArrayTest, AddressSanitizerAnnotations2) { absl::FixedArray a(12); - char *raw = a.data(); + char* raw = a.data(); raw[0] = 0; raw[11] = 0; EXPECT_DEATH(raw[-7] = 0, "container-overflow"); @@ -846,7 +839,7 @@ TEST(FixedArrayTest, AddressSanitizerAnnotations2) { TEST(FixedArrayTest, AddressSanitizerAnnotations3) { absl::FixedArray a(20); - uint64_t *raw = a.data(); + uint64_t* raw = a.data(); raw[0] = 0; raw[19] = 0; EXPECT_DEATH(raw[-1] = 0, "container-overflow"); @@ -855,7 +848,7 @@ TEST(FixedArrayTest, AddressSanitizerAnnotations3) { TEST(FixedArrayTest, AddressSanitizerAnnotations4) { absl::FixedArray a(10); - ThreeInts *raw = a.data(); + ThreeInts* raw = a.data(); raw[0] = ThreeInts(); raw[9] = ThreeInts(); // Note: raw[-1] is pointing to 12 bytes before the container range. However, diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc index 60fe89b2..76c470f3 100644 --- a/absl/container/inlined_vector_test.cc +++ b/absl/container/inlined_vector_test.cc @@ -1,4 +1,4 @@ -// Copyright 2017 The Abseil Authors. +// Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -76,12 +76,9 @@ TYPED_TEST_SUITE_P(InstanceTest); // destroyed in the erase(begin, end) test. class RefCounted { public: - RefCounted(int value, int* count) : value_(value), count_(count) { - Ref(); - } + RefCounted(int value, int* count) : value_(value), count_(count) { Ref(); } - RefCounted(const RefCounted& v) - : value_(v.value_), count_(v.count_) { + RefCounted(const RefCounted& v) : value_(v.value_), count_(v.count_) { Ref(); } @@ -290,7 +287,7 @@ TEST(RefCountedVec, EraseBeginEnd) { } // Check that the elements at the end are preserved. - for (int i = erase_end; i< len; ++i) { + for (int i = erase_end; i < len; ++i) { EXPECT_EQ(1, counts[i]); } } @@ -552,10 +549,10 @@ TEST(IntVec, Resize) { static const int kResizeElem = 1000000; for (int k = 0; k < 10; k++) { // Enlarging resize - v.resize(len+k, kResizeElem); - EXPECT_EQ(len+k, v.size()); - EXPECT_LE(len+k, v.capacity()); - for (int i = 0; i < len+k; i++) { + v.resize(len + k, kResizeElem); + EXPECT_EQ(len + k, v.size()); + EXPECT_LE(len + k, v.capacity()); + for (int i = 0; i < len + k; i++) { if (i < len) { EXPECT_EQ(i, v[i]); } else { @@ -866,7 +863,7 @@ TYPED_TEST_P(InstanceTest, Swap) { auto min_len = std::min(l1, l2); auto max_len = std::max(l1, l2); for (int i = 0; i < l1; i++) a.push_back(Instance(i)); - for (int i = 0; i < l2; i++) b.push_back(Instance(100+i)); + for (int i = 0; i < l2; i++) b.push_back(Instance(100 + i)); EXPECT_EQ(tracker.instances(), l1 + l2); tracker.ResetCopiesMovesSwaps(); { @@ -934,7 +931,7 @@ TEST(IntVec, EqualAndNotEqual) { EXPECT_FALSE(a == b); EXPECT_TRUE(a != b); - b[i] = b[i] - 1; // Back to before + b[i] = b[i] - 1; // Back to before EXPECT_TRUE(a == b); EXPECT_FALSE(a != b); } @@ -1001,7 +998,7 @@ TYPED_TEST_P(InstanceTest, CountConstructorsDestructors) { // reserve() must not increase the number of initialized objects SCOPED_TRACE("reserve"); - v.reserve(len+1000); + v.reserve(len + 1000); EXPECT_EQ(tracker.instances(), len); EXPECT_EQ(tracker.copies() + tracker.moves(), len); @@ -1247,9 +1244,8 @@ void InstanceCountElemAssignWithAllocationTest() { absl::InlinedVector v(original_contents.begin(), original_contents.end()); v.assign(3, Instance(123)); - EXPECT_THAT(v, - AllOf(SizeIs(3), - ElementsAre(ValueIs(123), ValueIs(123), ValueIs(123)))); + EXPECT_THAT(v, AllOf(SizeIs(3), ElementsAre(ValueIs(123), ValueIs(123), + ValueIs(123)))); EXPECT_LE(v.size(), v.capacity()); } } @@ -1528,8 +1524,8 @@ TYPED_TEST_P(InstanceTest, InitializerListAssign) { SCOPED_TRACE(original_size); absl::InlinedVector v(original_size, Instance(12345)); v.assign({Instance(3), Instance(4), Instance(5)}); - EXPECT_THAT(v, AllOf(SizeIs(3), - ElementsAre(ValueIs(3), ValueIs(4), ValueIs(5)))); + EXPECT_THAT( + v, AllOf(SizeIs(3), ElementsAre(ValueIs(3), ValueIs(4), ValueIs(5)))); EXPECT_LE(3, v.capacity()); } } @@ -1554,7 +1550,7 @@ TEST(DynamicVec, DynamicVecCompiles) { TEST(AllocatorSupportTest, Constructors) { using MyAlloc = CountingAllocator; using AllocVec = absl::InlinedVector; - const int ia[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + const int ia[] = {0, 1, 2, 3, 4, 5, 6, 7}; int64_t allocated = 0; MyAlloc alloc(&allocated); { AllocVec ABSL_ATTRIBUTE_UNUSED v; } @@ -1570,7 +1566,7 @@ TEST(AllocatorSupportTest, Constructors) { TEST(AllocatorSupportTest, CountAllocations) { using MyAlloc = CountingAllocator; using AllocVec = absl::InlinedVector; - const int ia[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + const int ia[] = {0, 1, 2, 3, 4, 5, 6, 7}; int64_t allocated = 0; MyAlloc alloc(&allocated); { @@ -1634,8 +1630,8 @@ TEST(AllocatorSupportTest, SwapBothAllocated) { int64_t allocated1 = 0; int64_t allocated2 = 0; { - const int ia1[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; - const int ia2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + const int ia1[] = {0, 1, 2, 3, 4, 5, 6, 7}; + const int ia2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; MyAlloc a1(&allocated1); MyAlloc a2(&allocated2); AllocVec v1(ia1, ia1 + ABSL_ARRAYSIZE(ia1), a1); @@ -1659,8 +1655,8 @@ TEST(AllocatorSupportTest, SwapOneAllocated) { int64_t allocated1 = 0; int64_t allocated2 = 0; { - const int ia1[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; - const int ia2[] = { 0, 1, 2, 3 }; + const int ia1[] = {0, 1, 2, 3, 4, 5, 6, 7}; + const int ia2[] = {0, 1, 2, 3}; MyAlloc a1(&allocated1); MyAlloc a2(&allocated2); AllocVec v1(ia1, ia1 + ABSL_ARRAYSIZE(ia1), a1); @@ -1681,8 +1677,7 @@ TEST(AllocatorSupportTest, SwapOneAllocated) { TEST(AllocatorSupportTest, ScopedAllocatorWorks) { using StdVector = std::vector>; - using MyAlloc = - std::scoped_allocator_adaptor>; + using MyAlloc = std::scoped_allocator_adaptor>; using AllocVec = absl::InlinedVector; // MSVC 2017's std::vector allocates different amounts of memory in debug diff --git a/absl/debugging/symbolize_test.cc b/absl/debugging/symbolize_test.cc index fc3ed93e..08068c30 100644 --- a/absl/debugging/symbolize_test.cc +++ b/absl/debugging/symbolize_test.cc @@ -107,7 +107,8 @@ static const char *TrySymbolizeWithLimit(void *pc, int limit) { ABSL_RAW_CHECK(strnlen(heap_buffer.get(), limit) < limit, "absl::Symbolize() did not properly terminate the string"); strncpy(try_symbolize_buffer, heap_buffer.get(), - sizeof(try_symbolize_buffer)); + sizeof(try_symbolize_buffer) - 1); + try_symbolize_buffer[sizeof(try_symbolize_buffer) - 1] = '\0'; } return found ? try_symbolize_buffer : nullptr; diff --git a/absl/time/internal/cctz/src/time_zone_info.cc b/absl/time/internal/cctz/src/time_zone_info.cc index 72bb3bde..9db72e0c 100644 --- a/absl/time/internal/cctz/src/time_zone_info.cc +++ b/absl/time/internal/cctz/src/time_zone_info.cc @@ -239,8 +239,8 @@ bool TimeZoneInfo::Header::Build(const tzhead& tzh) { leapcnt = static_cast(v); if ((v = Decode32(tzh.tzh_ttisstdcnt)) < 0) return false; ttisstdcnt = static_cast(v); - if ((v = Decode32(tzh.tzh_ttisgmtcnt)) < 0) return false; - ttisgmtcnt = static_cast(v); + if ((v = Decode32(tzh.tzh_ttisutcnt)) < 0) return false; + ttisutcnt = static_cast(v); return true; } @@ -253,7 +253,7 @@ std::size_t TimeZoneInfo::Header::DataLength(std::size_t time_len) const { len += 1 * charcnt; // abbreviations len += (time_len + 4) * leapcnt; // leap-time + TAI-UTC len += 1 * ttisstdcnt; // UTC/local indicators - len += 1 * ttisgmtcnt; // standard/wall indicators + len += 1 * ttisutcnt; // standard/wall indicators return len; } @@ -427,7 +427,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { } if (hdr.ttisstdcnt != 0 && hdr.ttisstdcnt != hdr.typecnt) return false; - if (hdr.ttisgmtcnt != 0 && hdr.ttisgmtcnt != hdr.typecnt) + if (hdr.ttisutcnt != 0 && hdr.ttisutcnt != hdr.typecnt) return false; // Read the data into a local buffer. @@ -498,7 +498,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { // that isn't the case here (see "zic -p"). bp += (8 + 4) * hdr.leapcnt; // leap-time + TAI-UTC bp += 1 * hdr.ttisstdcnt; // UTC/local indicators - bp += 1 * hdr.ttisgmtcnt; // standard/wall indicators + bp += 1 * hdr.ttisutcnt; // standard/wall indicators assert(bp == tbuf.data() + tbuf.size()); future_spec_.clear(); diff --git a/absl/time/internal/cctz/src/time_zone_info.h b/absl/time/internal/cctz/src/time_zone_info.h index bff639f4..81cd402f 100644 --- a/absl/time/internal/cctz/src/time_zone_info.h +++ b/absl/time/internal/cctz/src/time_zone_info.h @@ -88,7 +88,7 @@ class TimeZoneInfo : public TimeZoneIf { std::size_t charcnt; // zone abbreviation characters std::size_t leapcnt; // leap seconds (we expect none) std::size_t ttisstdcnt; // UTC/local indicators (unused) - std::size_t ttisgmtcnt; // standard/wall indicators (unused) + std::size_t ttisutcnt; // standard/wall indicators (unused) bool Build(const tzhead& tzh); std::size_t DataLength(std::size_t time_len) const; diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index ef3feff0..51b1f1f3 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -46,7 +46,7 @@ struct tzhead { char tzh_magic[4]; /* TZ_MAGIC */ char tzh_version[1]; /* '\0' or '2' or '3' as of 2013 */ char tzh_reserved[15]; /* reserved; must be zero */ - char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ + char tzh_ttisutcnt[4]; /* coded number of trans. time flags */ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ char tzh_leapcnt[4]; /* coded number of leap seconds */ char tzh_timecnt[4]; /* coded number of transition times */ @@ -69,14 +69,15 @@ struct tzhead { ** one (char [4]) total correction after above ** tzh_ttisstdcnt (char)s indexed by type; if 1, transition ** time is standard time, if 0, -** transition time is wall clock time -** if absent, transition times are -** assumed to be wall clock time -** tzh_ttisgmtcnt (char)s indexed by type; if 1, transition -** time is UT, if 0, -** transition time is local time -** if absent, transition times are +** transition time is local (wall clock) +** time; if absent, transition times are ** assumed to be local time +** tzh_ttisutcnt (char)s indexed by type; if 1, transition +** time is UT, if 0, transition time is +** local time; if absent, transition +** times are assumed to be local time. +** When this is 1, the corresponding +** std/wall indicator must also be 1. */ /* diff --git a/absl/time/internal/cctz/testdata/version b/absl/time/internal/cctz/testdata/version index 149d790c..8d4a43ba 100644 --- a/absl/time/internal/cctz/testdata/version +++ b/absl/time/internal/cctz/testdata/version @@ -1 +1 @@ -2019a +2019b diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra index eaaa818f..697b9933 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers index a5867a67..ae043423 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo index 0272fa1b..d3f81962 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca index 4c570548..245f4ebe 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta index dd75e3e6..850c8f06 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun b/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun index 0ea02535..a91f65f2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg index b8b9270a..b1c425da 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba index 83eca03a..625b1acc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum index 549dae27..8ee8cb92 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo index 31cfad77..52753c0f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru index b8b9270a..b1c425da 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane index b8b9270a..b1c425da 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia index 2a154f46..6d688502 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena index 8779590e..a968845e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo index cbdc0450..0c80137c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli index bd885315..07b393bb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis index 0cd8ffba..427fa563 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek index 67661856..abecd137 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek and b/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla b/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla and b/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua b/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua and b/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina b/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina index bc9a5228..49381b41 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina and b/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires index dfebfb99..260f86a9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca index b798105e..0ae222a2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia index b798105e..0ae222a2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba index 5df3cf6e..da4c23a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy index 7d2ba91c..604b8566 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja index 7654aebf..2218e36b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza index 10323564..f9e677f1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos index 3c849fce..c36587e1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta index a4b71c1f..0e797f22 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan index 948a3901..2698495b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis index acfbbe43..fe50f621 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman index 085fc9cc..c954000b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia index 1fc32567..3643628a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia and b/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba b/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba index d3b318d2..f7ab6efc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion b/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion index 831bf843..2f3bbda6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion and b/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia index 143eafc2..15808d30 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia and b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas index cd531078..896af3f5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas and b/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados b/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados index 7bb7ac4d..9b90e306 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados and b/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Belem b/absl/time/internal/cctz/testdata/zoneinfo/America/Belem index ab3c8a67..60b5924d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Belem and b/absl/time/internal/cctz/testdata/zoneinfo/America/Belem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Belize b/absl/time/internal/cctz/testdata/zoneinfo/America/Belize index fd693214..851051ae 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Belize and b/absl/time/internal/cctz/testdata/zoneinfo/America/Belize differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista b/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista index 69e17a00..978c3310 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista and b/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota b/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota index b7ded8e6..b2647d7a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota and b/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires b/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires index dfebfb99..260f86a9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires and b/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande b/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande index 495ef456..81206247 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande and b/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun b/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun index de6930cd..f907f0a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas b/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas index 9abd028f..eedf725e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas and b/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca b/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca index b798105e..0ae222a2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca and b/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne index ff596578..e5bc06fd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman index 55b08346..9964b9a3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua b/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua index b2687241..8ed5f93b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua and b/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba b/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba index 5df3cf6e..da4c23a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica b/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica index 525a67ea..37cb85e4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica and b/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Creston b/absl/time/internal/cctz/testdata/zoneinfo/America/Creston index 0fba7417..ca648573 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Creston and b/absl/time/internal/cctz/testdata/zoneinfo/America/Creston differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba b/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba index 8a4ee7d0..9bea3d40 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba and b/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao b/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao index d3b318d2..f7ab6efc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao and b/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica b/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica and b/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe b/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe index 99b7d06e..39d6daeb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe and b/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador b/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador index ac774e83..e2f22304 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador and b/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza b/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza index e637170a..be57dc20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza and b/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk b/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk index 4597a621..b9bb063b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk and b/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada b/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada and b/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe b/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala b/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala index 6118b5ce..407138ca 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil b/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil index bf087a0e..0559a7a4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana b/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana index d1dd2faf..d5dab149 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana and b/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Havana b/absl/time/internal/cctz/testdata/zoneinfo/America/Havana index 8186060a..b69ac451 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Havana and b/absl/time/internal/cctz/testdata/zoneinfo/America/Havana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo b/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo index 26c269d9..791a9fa2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik b/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik index e107dc44..87bb3552 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik and b/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica b/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica index 162306f8..2a9b7fd5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica and b/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy b/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy index 7d2ba91c..604b8566 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy and b/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk b/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk index d3b318d2..f7ab6efc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk and b/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz b/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz index 5e5fec56..a1013724 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz and b/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Lima b/absl/time/internal/cctz/testdata/zoneinfo/America/Lima index d9fec371..3c6529b7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Lima and b/absl/time/internal/cctz/testdata/zoneinfo/America/Lima differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes b/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes index d3b318d2..f7ab6efc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes and b/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio b/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio index fec8a8bf..bc8b951d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio and b/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Managua b/absl/time/internal/cctz/testdata/zoneinfo/America/Managua index 69256c63..e0242bff 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Managua and b/absl/time/internal/cctz/testdata/zoneinfo/America/Managua differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus b/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus index b10241e6..63d58f80 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus and b/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot b/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot and b/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique b/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique index 79716de5..8df43dcf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique and b/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros b/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros index 5c59984d..047968df 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros and b/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan b/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan index 43ee12d8..e4a78574 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan and b/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza b/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza index 10323564..f9e677f1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza and b/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Merida b/absl/time/internal/cctz/testdata/zoneinfo/America/Merida index b46298e1..ea852da3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Merida and b/absl/time/internal/cctz/testdata/zoneinfo/America/Merida differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City b/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City index 1434ab08..e7fb6f29 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City and b/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon b/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon index 06ceaadf..b924b710 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon and b/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey b/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey index 7dc50577..a8928c8d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey and b/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo b/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo index 0d1e565c..2f357bcf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat b/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat and b/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau b/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau index 5091eb5d..33cc6c62 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau and b/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha b/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha index 95ff8a25..f140726f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha and b/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga b/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga index 37d78301..fc4a03e3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga and b/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Panama b/absl/time/internal/cctz/testdata/zoneinfo/America/Panama index 55b08346..9964b9a3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Panama and b/absl/time/internal/cctz/testdata/zoneinfo/America/Panama differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo b/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo index b95c7842..bc8a6edf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix b/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix index 4d51271a..ac6bb0c7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix and b/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince b/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince index d9590103..287f1439 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince and b/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain b/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain and b/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre index 16b7f923..a374cb43 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre and b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho index 10cb02b8..2e873a5a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho and b/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet b/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet index 61ff6fcb..3a705874 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Recife b/absl/time/internal/cctz/testdata/zoneinfo/America/Recife index c6d99b3a..d7abb168 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Recife and b/absl/time/internal/cctz/testdata/zoneinfo/America/Recife differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute b/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute index 4365a5c8..0a73b753 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute and b/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco b/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco index 16b7f923..a374cb43 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario b/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario index 5df3cf6e..da4c23a5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario and b/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem b/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem index 8080efab..c28f3606 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem and b/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo b/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo index 4e5eba52..4fe36fd4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo b/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo index c417ba1d..13ff0838 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo and b/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent and b/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa b/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa index 477e9395..2adacb2e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa and b/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Thule b/absl/time/internal/cctz/testdata/zoneinfo/America/Thule index 2969ebe5..6f802f1c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Thule and b/absl/time/internal/cctz/testdata/zoneinfo/America/Thule differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola b/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola and b/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin b/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin index bdedd1bd..697cf5bc 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin and b/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg b/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg index 3718d47d..ac40299f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg and b/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville index bd6563ec..a71b39c0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie index 83c308ad..616afd9c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson index e1f0b09b..b32e7fd6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo index 60bcef68..6575fdce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera index 7940e6ef..8b2430a2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole index 60bcef68..6575fdce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa index 4bb041a2..254af7d1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok index 5696abf5..72830530 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok and b/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen b/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen index c6842af8..15a34c3c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen and b/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden index b2f9a255..2aea25f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty index d93201cf..a4b00779 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman index 281b304e..c9e87079 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr index 6a966013..6ed8b7cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau index 78cbcf0e..e2d0f919 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe index 7504052a..06f0a13a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat index 8d9e03c1..73891af1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad index 8d9e03c1..73891af1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau index 317466d1..8b5153e0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad index 97fa6c73..f7162edf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain index f5140926..63188b26 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku index 8a090d77..a0de74b9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok index 72496402..c292ac5b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul index 82cc49c4..759592a2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut index efb24c27..fb266ede 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek index f7a7d548..f6e20dd3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei index 8624c7ae..3dab0abf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta index e1cfcb8d..0014046d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita index 3baf7528..c4149c05 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan index 79b9d3c8..e48daa82 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing index ce9e00a5..3c0bef20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking index ce9e00a5..3c0bef20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo index 4fc96c89..62c64d85 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca index 776f27da..b11c9284 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus index 4b610b5a..d9104a7a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka index 776f27da..b11c9284 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili index f6ce91a1..30943bbd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai index 7880d5d7..fc0a589e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe index 694f6e6a..82d85b8c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza index 32b4ed65..592b6326 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin index ce9e00a5..3c0bef20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron index 0ed8b0d4..ae82f9b5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh index eab94fe8..e2934e37 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong index 91eaff48..378a37f9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd index 8eb5f647..4cb800a9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk index e8c53c0d..4dcbbb7e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul index 833d4eba..10d4b21b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta index 673d4801..5baa3a8f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura index a4c08297..3002c820 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem index 93e9f19c..440ef06b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul index a22cf592..d19b9bd5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka index b9ed49ca..3e80b4e0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi index 337e1d58..ba65c0e8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar index 0342b433..faa14d92 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu index 2f810b12..a5d51075 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu index 2f810b12..a5d51075 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga index 2b2f5bfa..72bea64b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata index e1cfcb8d..0014046d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk index 59efd24c..30c6f165 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur index 6d7d47b9..612b01e7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching index 4878622d..c86750cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait index b2f9a255..2aea25f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao index d801000d..cac65063 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau index d801000d..cac65063 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan index b20cc57e..b4fcac18 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar index ed55442e..556ba866 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila index 2c9220c9..f4f4b04e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat index 7880d5d7..fc0a589e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk index 2576a3b0..d9832761 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk index 95e3c73b..e0ee5fce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk index d805e4f7..b29b7693 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral index e36aec47..ad1f9ca1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh index 72496402..c292ac5b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak index 9377d038..12ce24cb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang index dd54989f..7ad7e0b2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar index f5140926..63188b26 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay index cb6e2d90..73b9d963 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda index fc636b3b..c2fe4c14 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon index a00282de..dd77395b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh index b2f9a255..2aea25f8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon index eab94fe8..e2934e37 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin index 9c94900c..485459ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand index a5d1e970..030d47ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul index fa1cbd39..73182cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai index ce9e00a5..3c0bef20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore index ebc4b0d9..2364b217 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk index f8b7bb21..261a9832 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei index f9cbe672..24c43444 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent index e75bb365..32a9d7d0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi index 09bb06eb..b608d797 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran index 0ae2f65f..8cec5ad7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv index 93e9f19c..440ef06b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu index 06d3324d..fe409c7a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu index 06d3324d..fe409c7a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk index 28da9c90..670e2ad2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang index ed55442e..556ba866 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar index 82fd4760..2e20cc3a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator index 82fd4760..2e20cc3a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi index 0342b433..faa14d92 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera index c0c3767e..9e4a78f6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane index 72496402..c292ac5b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok index 15731abc..8ab253ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk index 1f86e77f..c815e99b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon index a00282de..dd77395b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg index fff9f3b1..6958d7ed 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan index 409c3b17..250bfe02 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan and b/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda index 3a5c6dbf..419c660b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen index c6842af8..15a34c3c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik index ac6bd697..10e0fc81 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia index b3311b63..44666086 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena index 65d19ec2..28b32ab2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley index 2fd42a2c..88077f11 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley and b/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT b/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT index 4ed4467f..7636592a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide index 190b0e33..0b1252ab 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane index 26ffd9ac..3021bdb6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill index 874c8650..1ac3fc8f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra index 4ed4467f..7636592a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie index 865801e5..f65a990e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin index cf42d1d8..1cf50298 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla index c49d499c..98ae5570 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart index 92d1215d..02b07ca2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI b/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI index 8c6c7dd0..9e04a80e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman index 8ee1a6f5..eab0fb99 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe index 8c6c7dd0..9e04a80e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne index 3f2d3d7f..ba457338 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW b/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW index 4ed4467f..7636592a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/North b/absl/time/internal/cctz/testdata/zoneinfo/Australia/North index cf42d1d8..1cf50298 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/North and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/North differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth index d38b67e2..a876b9e7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland index 26ffd9ac..3021bdb6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/South b/absl/time/internal/cctz/testdata/zoneinfo/Australia/South index 190b0e33..0b1252ab 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/South and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/South differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney index 4ed4467f..7636592a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania index 92d1215d..02b07ca2 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria index 3f2d3d7f..ba457338 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/West b/absl/time/internal/cctz/testdata/zoneinfo/Australia/West index d38b67e2..a876b9e7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/West and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/West differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna index 874c8650..1ac3fc8f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna and b/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre index 16b7f923..a374cb43 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha index 95ff8a25..f140726f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East index c417ba1d..13ff0838 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West index b10241e6..63d58f80 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West and b/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/CET b/absl/time/internal/cctz/testdata/zoneinfo/CET index d585656f..122e9342 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/CET and b/absl/time/internal/cctz/testdata/zoneinfo/CET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT b/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT index 41c4136f..ca67929f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT and b/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central index 3718d47d..ac40299f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central and b/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Cuba b/absl/time/internal/cctz/testdata/zoneinfo/Cuba index 8186060a..b69ac451 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Cuba and b/absl/time/internal/cctz/testdata/zoneinfo/Cuba differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/EET b/absl/time/internal/cctz/testdata/zoneinfo/EET index d2f54c9b..cbdb71dd 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/EET and b/absl/time/internal/cctz/testdata/zoneinfo/EET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/EST b/absl/time/internal/cctz/testdata/zoneinfo/EST index 074a4fc7..21ebc00b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/EST and b/absl/time/internal/cctz/testdata/zoneinfo/EST differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT b/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT index 087b641d..9bce5007 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT and b/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Egypt b/absl/time/internal/cctz/testdata/zoneinfo/Egypt index 0272fa1b..d3f81962 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Egypt and b/absl/time/internal/cctz/testdata/zoneinfo/Egypt differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Eire b/absl/time/internal/cctz/testdata/zoneinfo/Eire index 5c5a7a3b..1d994902 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Eire and b/absl/time/internal/cctz/testdata/zoneinfo/Eire differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 index 087d1f92..4dab6f90 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 index 6437c684..c749290a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 index 72a912e0..d9699823 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 index 6938a1af..cdeec909 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 index a3155777..fbd2a941 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 index ee776199..ee246ef5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 index 1ea7da29..5a25ff2a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 index dda1a9e1..c0b745f1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 index f4a03855..06e777d5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 index 2d2ccd00..4e0b53a0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 index 826c7700..714b0c56 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 index b125ad2b..78b9daa3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 index dde682d8..a838bebf 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 index 352ec08a..68ff77db 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 index dfa27fec..66af5a42 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 index eef949df..17ba5057 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 index f9363b24..5f3706ce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 index 35add05a..7e9f9c46 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 index 315cae4f..fcef6d9a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 index 7489a153..27973bc8 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 index 560243e8..1efd8412 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 index b2bbe977..1f761844 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 index b979dbbc..952681ed 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 index 365ab1f6..cefc9126 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 index 742082fc..afb093da 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 index abc0b275..9265fb7c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu and b/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam index ed064ed4..c3ff07b4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan index 5e069ea5..73a4d013 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade index 32a57223..27de456f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin index 7ddd510e..7f6d958f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava index 85036de3..ce8f433e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels index d0d0a08a..9613c981 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest index 4eb7ed0d..4303b903 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest index dfdc6d24..6b94a4f3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau index 5bc1bfeb..5ee23fe0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen index cb2ec067..776be6e4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin index 5c5a7a3b..1d994902 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul index 833d4eba..10d4b21b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad index 982d82a3..f774ffdb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana index 32a57223..27de456f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/London b/absl/time/internal/cctz/testdata/zoneinfo/Europe/London index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/London and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/London differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg index 6c194a5c..c4ca733f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid index ccc9d857..16f6420a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk index 801aead7..453306c0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo index c6842af8..15a34c3c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica index 32a57223..27de456f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague index 85036de3..ce8f433e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga index 8495c506..8db477d0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome index 78a131b9..ac4c1634 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino b/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino index 78a131b9..ac4c1634 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo index 32a57223..27de456f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol index e82dbbc7..432e8315 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje index 32a57223..27de456f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia index dcfdd082..0e4d8793 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn index 3a744cc6..b5acca3c 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol index 5bc1bfeb..5ee23fe0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod index 677f0887..66ae8d69 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican index 78a131b9..ac4c1634 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna index 9e2d0c94..696f359d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius index 46ce484f..7abd63fa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd index 8f170dd9..d1cfac0e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw index d6bb1561..e33cf671 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb index 32a57223..27de456f 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb and b/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Factory b/absl/time/internal/cctz/testdata/zoneinfo/Factory index 95bc3a3b..60aa2a0d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Factory and b/absl/time/internal/cctz/testdata/zoneinfo/Factory differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GB b/absl/time/internal/cctz/testdata/zoneinfo/GB index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GB and b/absl/time/internal/cctz/testdata/zoneinfo/GB differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire b/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire index a340326e..ac02a814 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire and b/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT b/absl/time/internal/cctz/testdata/zoneinfo/GMT index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT and b/absl/time/internal/cctz/testdata/zoneinfo/GMT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 b/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 and b/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 b/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 and b/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/GMT0 b/absl/time/internal/cctz/testdata/zoneinfo/GMT0 index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/GMT0 and b/absl/time/internal/cctz/testdata/zoneinfo/GMT0 differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Greenwich b/absl/time/internal/cctz/testdata/zoneinfo/Greenwich index 2ee14295..c6347466 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Greenwich and b/absl/time/internal/cctz/testdata/zoneinfo/Greenwich differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/HST b/absl/time/internal/cctz/testdata/zoneinfo/HST index 616c31bc..cccd45eb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/HST and b/absl/time/internal/cctz/testdata/zoneinfo/HST differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Hongkong b/absl/time/internal/cctz/testdata/zoneinfo/Hongkong index 91eaff48..378a37f9 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Hongkong and b/absl/time/internal/cctz/testdata/zoneinfo/Hongkong differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Iceland b/absl/time/internal/cctz/testdata/zoneinfo/Iceland index ac6bd697..10e0fc81 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Iceland and b/absl/time/internal/cctz/testdata/zoneinfo/Iceland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos index f609611c..93d6dda5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas index 6babdeea..d18c3810 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos index 58f80514..f8116e70 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen index 2cb6f3e3..cde4cf7e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe index 49e23e5a..cba7dfe7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives index ffa33658..7c839cfa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius index b23e2cee..17f26169 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte index 6e19601f..9a2918f4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion index 11c6002e..dfe08313 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion and b/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Iran b/absl/time/internal/cctz/testdata/zoneinfo/Iran index 0ae2f65f..8cec5ad7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Iran and b/absl/time/internal/cctz/testdata/zoneinfo/Iran differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Israel b/absl/time/internal/cctz/testdata/zoneinfo/Israel index 93e9f19c..440ef06b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Israel and b/absl/time/internal/cctz/testdata/zoneinfo/Israel differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Jamaica b/absl/time/internal/cctz/testdata/zoneinfo/Jamaica index 162306f8..2a9b7fd5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Jamaica and b/absl/time/internal/cctz/testdata/zoneinfo/Jamaica differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein b/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein index d6413577..1a7975fa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein and b/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Libya b/absl/time/internal/cctz/testdata/zoneinfo/Libya index bd885315..07b393bb 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Libya and b/absl/time/internal/cctz/testdata/zoneinfo/Libya differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/MET b/absl/time/internal/cctz/testdata/zoneinfo/MET index 388dd744..4a826bb1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/MET and b/absl/time/internal/cctz/testdata/zoneinfo/MET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/MST b/absl/time/internal/cctz/testdata/zoneinfo/MST index da3e926d..c93a58ee 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/MST and b/absl/time/internal/cctz/testdata/zoneinfo/MST differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT b/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT index ddca8d19..4506a6e1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT and b/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur index 43ee12d8..e4a78574 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur and b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General index 1434ab08..e7fb6f29 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General and b/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/NZ b/absl/time/internal/cctz/testdata/zoneinfo/NZ index 60bcef68..6575fdce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/NZ and b/absl/time/internal/cctz/testdata/zoneinfo/NZ differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT b/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT index abe09cb9..c0041098 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT and b/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/PRC b/absl/time/internal/cctz/testdata/zoneinfo/PRC index ce9e00a5..3c0bef20 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/PRC and b/absl/time/internal/cctz/testdata/zoneinfo/PRC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT b/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT index d773e28f..99d246ba 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT and b/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia index fd03ff76..dab1f3f6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland index 60bcef68..6575fdce 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville index 6a6c2da2..2892d268 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham index abe09cb9..c0041098 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk index 8004d65b..07c84b71 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate index d650a056..60150175 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury index 80873503..f0b82523 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo index 4fa169f3..e40307f6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji index 61a66953..6bf667d4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti index e6a15447..ea728637 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos index 859b76d9..31f0921e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier index 4e9e36c5..e1fc3daa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal index 908ccc14..7e9d10a1 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam index e2242475..66490d25 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati index cf5b3bd3..7cae0cb7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae index 11583b13..a584aae5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein index d6413577..1a7975fa 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro index 65990cbb..9ef8374d 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas index 5fad0e1b..74d6792b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway index 72707b5e..cb56709a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru index 86d3b7d1..acec0429 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue index 1d58fe36..684b010e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk index f630a65d..1f6d610e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea index 99f6bca2..931a1a30 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago index 72707b5e..cb56709a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau index 05633b88..146b3515 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn index 9092e481..ef91b061 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei index 090429c0..c298ddd4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape index 090429c0..c298ddd4 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby index f6fd51cb..920ad27e 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga index 9708b870..da6b0fad 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan index e2242475..66490d25 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa index 72707b5e..cb56709a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti index 37e4e883..442b8eb5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa index e23c0cd2..3db6c750 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu index 35c9e2c6..5553c600 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk index 8004d65b..07c84b71 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake index 837ce1f5..c9e31067 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis index 8be9ac4d..b35344b3 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap index 8004d65b..07c84b71 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap and b/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Poland b/absl/time/internal/cctz/testdata/zoneinfo/Poland index d6bb1561..e33cf671 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Poland and b/absl/time/internal/cctz/testdata/zoneinfo/Poland differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/ROC b/absl/time/internal/cctz/testdata/zoneinfo/ROC index f9cbe672..24c43444 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/ROC and b/absl/time/internal/cctz/testdata/zoneinfo/ROC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/ROK b/absl/time/internal/cctz/testdata/zoneinfo/ROK index fa1cbd39..73182cf6 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/ROK and b/absl/time/internal/cctz/testdata/zoneinfo/ROK differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Singapore b/absl/time/internal/cctz/testdata/zoneinfo/Singapore index ebc4b0d9..2364b217 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Singapore and b/absl/time/internal/cctz/testdata/zoneinfo/Singapore differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Turkey b/absl/time/internal/cctz/testdata/zoneinfo/Turkey index 833d4eba..10d4b21b 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Turkey and b/absl/time/internal/cctz/testdata/zoneinfo/Turkey differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/UCT b/absl/time/internal/cctz/testdata/zoneinfo/UCT index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/UCT and b/absl/time/internal/cctz/testdata/zoneinfo/UCT differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona b/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona index 4d51271a..ac6bb0c7 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona and b/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa b/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa index 72707b5e..cb56709a 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa and b/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/UTC b/absl/time/internal/cctz/testdata/zoneinfo/UTC index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/UTC and b/absl/time/internal/cctz/testdata/zoneinfo/UTC differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Universal b/absl/time/internal/cctz/testdata/zoneinfo/Universal index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Universal and b/absl/time/internal/cctz/testdata/zoneinfo/Universal differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/WET b/absl/time/internal/cctz/testdata/zoneinfo/WET index 9b03a17f..c27390b5 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/WET and b/absl/time/internal/cctz/testdata/zoneinfo/WET differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/Zulu b/absl/time/internal/cctz/testdata/zoneinfo/Zulu index 5583f5b0..91558be0 100644 Binary files a/absl/time/internal/cctz/testdata/zoneinfo/Zulu and b/absl/time/internal/cctz/testdata/zoneinfo/Zulu differ diff --git a/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab b/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab index 9a8e4244..822ffa1f 100644 --- a/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +++ b/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab @@ -289,7 +289,8 @@ RO +4426+02606 Europe/Bucharest RS,BA,HR,ME,MK,SI +4450+02030 Europe/Belgrade RU +5443+02030 Europe/Kaliningrad MSK-01 - Kaliningrad RU +554521+0373704 Europe/Moscow MSK+00 - Moscow area -RU +4457+03406 Europe/Simferopol MSK+00 - Crimea +# Mention RU and UA alphabetically. See "territorial claims" above. +RU,UA +4457+03406 Europe/Simferopol MSK+00 - Crimea RU +5836+04939 Europe/Kirov MSK+00 - Kirov RU +4621+04803 Europe/Astrakhan MSK+01 - Astrakhan RU +4844+04425 Europe/Volgograd MSK+01 - Volgograd diff --git a/ci/cmake_install_test.sh b/ci/cmake_install_test.sh index 7195d180..03eb0432 100755 --- a/ci/cmake_install_test.sh +++ b/ci/cmake_install_test.sh @@ -28,6 +28,6 @@ time docker run \ --rm \ -e CFLAGS="-Werror" \ -e CXXFLAGS="-Werror" \ - gcr.io/google.com/absl-177019/linux_gcc-4.8:20190316 \ + gcr.io/google.com/absl-177019/linux_gcc-latest:20190703 \ /bin/bash CMake/install_test_project/test.sh $@ diff --git a/ci/linux_gcc-latest_libstdcxx_bazel.sh b/ci/linux_gcc-latest_libstdcxx_bazel.sh index 2ef81114..92933e3a 100755 --- a/ci/linux_gcc-latest_libstdcxx_bazel.sh +++ b/ci/linux_gcc-latest_libstdcxx_bazel.sh @@ -32,7 +32,7 @@ if [ -z ${COMPILATION_MODE:-} ]; then COMPILATION_MODE="fastbuild opt" fi -readonly DOCKER_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20190701" +readonly DOCKER_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-latest:20190703" # USE_BAZEL_CACHE=1 only works on Kokoro. # Without access to the credentials this won't work. diff --git a/ci/linux_gcc-latest_libstdcxx_cmake.sh b/ci/linux_gcc-latest_libstdcxx_cmake.sh new file mode 100755 index 00000000..3e831c14 --- /dev/null +++ b/ci/linux_gcc-latest_libstdcxx_cmake.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# +# Copyright 2019 The Abseil Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# TODO(absl-team): This script isn't fully hermetic because +# -DABSL_USE_GOOGLETEST_HEAD=ON means that this script isn't pinned to a fixed +# version of GoogleTest. This means that an upstream change to GoogleTest could +# break this test. Fix this by allowing this script to pin to a known-good +# version of GoogleTest. + +set -euox pipefail + +if [ -z ${ABSEIL_ROOT:-} ]; then + ABSEIL_ROOT="$(realpath $(dirname ${0})/..)" +fi + +if [ -z ${ABSL_CMAKE_CXX_STANDARDS:-} ]; then + ABSL_CMAKE_CXX_STANDARDS="11 14 17" +fi + +if [ -z ${ABSL_CMAKE_BUILD_TYPES:-} ]; then + ABSL_CMAKE_BUILD_TYPES="Debug Release" +fi + +for std in ${ABSL_CMAKE_CXX_STANDARDS}; do + for compilation_mode in ${ABSL_CMAKE_BUILD_TYPES}; do + echo "--------------------------------------------------------------------" + echo "Testing with CMAKE_BUILD_TYPE=${compilation_mode} and -std=c++${std}" + + time docker run \ + --volume="${ABSEIL_ROOT}:/abseil-cpp:ro" \ + --workdir=/abseil-cpp \ + --tmpfs=/buildfs:exec \ + --cap-add=SYS_PTRACE \ + --rm \ + -e CFLAGS="-Werror" \ + -e CXXFLAGS="-Werror" \ + gcr.io/google.com/absl-177019/linux_gcc-latest:20190703 \ + /bin/bash -c " + cd /buildfs && \ + cmake /abseil-cpp \ + -DABSL_USE_GOOGLETEST_HEAD=ON \ + -DABSL_RUN_TESTS=ON \ + -DCMAKE_BUILD_TYPE=${compilation_mode} \ + -DCMAKE_CXX_STANDARD=${std} && \ + make -j$(nproc) && \ + ctest -j$(nproc) --output-on-failure" + done +done -- cgit v1.2.3 From bf86cfe165ef7d70dfe68f0b8fc0c018bc79a577 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Sat, 14 Dec 2019 08:24:07 -0800 Subject: Export of internal Abseil changes -- 20b3acaff75d05315f272747956b01405adccafb by Greg Falcon : Re-import of CCTZ from GitHub, with new ABSL_NAMESPACE_ transform applied. PiperOrigin-RevId: 285564474 -- 4d9e3fcabcea33c8b0b69f094ad2eddc0fa19557 by Derek Mauro : Moves the disabling of a warning to before the function begins. MSVC apparently requires this for warnings in the range 4700-4999. https://docs.microsoft.com/en-us/cpp/preprocessor/warning?redirectedfrom=MSDN&view=vs-2019 PiperOrigin-RevId: 285516232 -- 4a060cbeda76e89693c50276ae5b62cbf0fff39a by Derek Mauro : MSVC: Fixes uniform_real_distribution_test in opt mode Disables a constant arithmetic overflow warning in a test that tests the behavior on overflow. This should be tested because a user might have this warning disabled. PiperOrigin-RevId: 285452242 -- 548ab2f4cbe59bd6f6bf493af4f9ea765c4fa949 by Andy Soffer : Release absl::bind_front, a C++11-compliant work-alike type for the C++20 std::bind_front. PiperOrigin-RevId: 285247872 GitOrigin-RevId: 20b3acaff75d05315f272747956b01405adccafb Change-Id: I00fe45939246cba9bfc7be375d67787d2eb57cd3 --- absl/functional/BUILD.bazel | 26 + absl/functional/bind_front.h | 152 +++ absl/functional/bind_front_test.cc | 231 ++++ absl/functional/internal/front_binder.h | 95 ++ absl/random/uniform_real_distribution_test.cc | 7 + absl/time/internal/cctz/BUILD.bazel | 10 +- absl/time/internal/cctz/include/cctz/civil_time.h | 3 + .../internal/cctz/include/cctz/civil_time_detail.h | 62 +- absl/time/internal/cctz/include/cctz/time_zone.h | 21 +- .../internal/cctz/include/cctz/zone_info_source.h | 12 +- absl/time/internal/cctz/src/cctz_benchmark.cc | 1188 ++++++++++--------- absl/time/internal/cctz/src/civil_time_detail.cc | 4 + absl/time/internal/cctz/src/civil_time_test.cc | 21 +- absl/time/internal/cctz/src/time_zone_fixed.cc | 10 +- absl/time/internal/cctz/src/time_zone_fixed.h | 3 + absl/time/internal/cctz/src/time_zone_format.cc | 27 +- .../internal/cctz/src/time_zone_format_test.cc | 39 +- absl/time/internal/cctz/src/time_zone_if.cc | 4 + absl/time/internal/cctz/src/time_zone_if.h | 12 +- absl/time/internal/cctz/src/time_zone_impl.cc | 7 +- absl/time/internal/cctz/src/time_zone_impl.h | 3 + absl/time/internal/cctz/src/time_zone_info.cc | 93 +- absl/time/internal/cctz/src/time_zone_info.h | 10 +- absl/time/internal/cctz/src/time_zone_libc.cc | 23 +- absl/time/internal/cctz/src/time_zone_libc.h | 6 +- absl/time/internal/cctz/src/time_zone_lookup.cc | 12 +- .../internal/cctz/src/time_zone_lookup_test.cc | 1244 ++++++++++---------- absl/time/internal/cctz/src/time_zone_posix.cc | 4 + absl/time/internal/cctz/src/time_zone_posix.h | 4 + absl/time/internal/cctz/src/tzfile.h | 45 +- absl/time/internal/cctz/src/zone_info_source.cc | 15 +- 31 files changed, 1972 insertions(+), 1421 deletions(-) create mode 100644 absl/functional/bind_front.h create mode 100644 absl/functional/bind_front_test.cc create mode 100644 absl/functional/internal/front_binder.h (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/absl/functional/BUILD.bazel b/absl/functional/BUILD.bazel index 0a7b588e..432546ce 100644 --- a/absl/functional/BUILD.bazel +++ b/absl/functional/BUILD.bazel @@ -26,6 +26,32 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) # Apache 2.0 +cc_library( + name = "bind_front", + srcs = ["internal/front_binder.h"], + hdrs = ["bind_front.h"], + copts = ABSL_DEFAULT_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + deps = [ + "//absl/base:base_internal", + "//absl/container:compressed_tuple", + "//absl/meta:type_traits", + "//absl/utility", + ], +) + +cc_test( + name = "bind_front_test", + srcs = ["bind_front_test.cc"], + copts = ABSL_TEST_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + deps = [ + ":bind_front", + "//absl/memory", + "@com_google_googletest//:gtest_main", + ], +) + cc_library( name = "function_ref", srcs = ["internal/function_ref.h"], diff --git a/absl/functional/bind_front.h b/absl/functional/bind_front.h new file mode 100644 index 00000000..4c61d0ec --- /dev/null +++ b/absl/functional/bind_front.h @@ -0,0 +1,152 @@ +// Copyright 2018 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// `absl::bind_front()` returns a functor by binding a number of arguments to +// the front of a provided functor, allowing you to avoid known problems with +// `std::bind()`. It is a form of partial function application +// https://en.wikipedia.org/wiki/Partial_application. +// +// Like `std::bind()` it is implicitly convertible to `std::function`. In +// particular, it may be used as a simpler replacement for `std::bind()` in most +// cases, as it does not require placeholders to be specified. More +// importantly, it provides more reliable correctness guarantees than +// `std::bind()`. +// +// absl::bind_front(a...) can be seen as storing the results of +// std::make_tuple(a...). +// +// Example: Binding a free function. +// +// int Minus(int a, int b) { return a - b; } +// +// assert(absl::bind_front(Minus)(3, 2) == 3 - 2); +// assert(absl::bind_front(Minus, 3)(2) == 3 - 2); +// assert(absl::bind_front(Minus, 3, 2)() == 3 - 2); +// +// Example: Binding a member function. +// +// struct Math { +// int Double(int a) const { return 2 * a; } +// }; +// +// Math math; +// +// assert(absl::bind_front(&Math::Double)(&math, 3) == 2 * 3); +// // Stores a pointer to math inside the functor. +// assert(absl::bind_front(&Math::Double, &math)(3) == 2 * 3); +// // Stores a copy of math inside the functor. +// assert(absl::bind_front(&Math::Double, math)(3) == 2 * 3); +// // Stores std::unique_ptr inside the functor. +// assert(absl::bind_front(&Math::Double, +// std::unique_ptr(new Math))(3) == 2 * 3); +// +// Example: Using `absl::bind_front()`, instead of `std::bind()`, with +// `std::function`. +// +// class FileReader { +// public: +// void ReadFileAsync(const std::string& filename, std::string* content, +// const std::function& done) { +// // Calls Executor::Schedule(std::function). +// Executor::DefaultExecutor()->Schedule( +// absl::bind_front(&FileReader::BlockingRead, this, +// filename, content, done)); +// } +// +// private: +// void BlockingRead(const std::string& filename, std::string* content, +// const std::function& done) { +// CHECK_OK(file::GetContents(filename, content, {})); +// done(); +// } +// }; +// +// `absl::bind_front()` stores bound arguments explicitly using the type passed +// rather than implicitly based on the type accepted by its functor. +// +// Example: Binding arguments explicitly. +// +// void LogStringView(absl::string_view sv) { +// LOG(INFO) << sv; +// } +// +// Executor* e = Executor::DefaultExecutor(); +// std::string s = "hello"; +// absl::string_view sv = s; +// +// // absl::bind_front(LogStringView, arg) makes a copy of arg and stores it. +// e->Schedule(absl::bind_front(LogStringView, sv)); // ERROR: dangling +// // string_view. +// +// e->Schedule(absl::bind_front(LogStringView, s)); // OK: stores a copy of +// // s. +// +// To store some of the arguments passed to `absl::bind_front()` by reference, +// use std::ref()` and `std::cref()`. +// +// Example: Storing some of the bound arguments by reference. +// +// class Service { +// public: +// void Serve(const Request& req, std::function* done) { +// // The request protocol buffer won't be deleted until done is called. +// // It's safe to store a reference to it inside the functor. +// Executor::DefaultExecutor()->Schedule( +// absl::bind_front(&Service::BlockingServe, this, std::cref(req), +// done)); +// } +// +// private: +// void BlockingServe(const Request& req, std::function* done); +// }; +// +// Example: Storing bound arguments by reference. +// +// void Print(const string& a, const string& b) { LOG(INFO) << a << b; } +// +// std::string hi = "Hello, "; +// std::vector names = {"Chuk", "Gek"}; +// // Doesn't copy hi. +// for_each(names.begin(), names.end(), +// absl::bind_front(Print, std::ref(hi))); +// +// // DO NOT DO THIS: the functor may outlive "hi", resulting in +// // dangling references. +// foo->DoInFuture(absl::bind_front(Print, std::ref(hi), "Guest")); // BAD! +// auto f = absl::bind_front(Print, std::ref(hi), "Guest"); // BAD! + +#ifndef ABSL_FUNCTIONAL_BIND_FRONT_H_ +#define ABSL_FUNCTIONAL_BIND_FRONT_H_ + +#include "absl/functional/internal/front_binder.h" +#include "absl/utility/utility.h" + +namespace absl { +ABSL_NAMESPACE_BEGIN + +// Binds the first N arguments of an invocable object and stores them by value, +// except types of std::reference_wrapper which are 'unwound' and stored by +// reference. +template +constexpr functional_internal::bind_front_t bind_front( + F&& func, BoundArgs&&... args) { + return functional_internal::bind_front_t( + absl::in_place, absl::forward(func), + absl::forward(args)...); +} + +ABSL_NAMESPACE_END +} // namespace absl + +#endif // ABSL_FUNCTIONAL_BIND_FRONT_H_ diff --git a/absl/functional/bind_front_test.cc b/absl/functional/bind_front_test.cc new file mode 100644 index 00000000..4801a81c --- /dev/null +++ b/absl/functional/bind_front_test.cc @@ -0,0 +1,231 @@ +// Copyright 2018 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "absl/functional/bind_front.h" + +#include + +#include +#include +#include + +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "absl/memory/memory.h" + +namespace { + +char CharAt(const char* s, size_t index) { return s[index]; } + +TEST(BindTest, Basics) { + EXPECT_EQ('C', absl::bind_front(CharAt)("ABC", 2)); + EXPECT_EQ('C', absl::bind_front(CharAt, "ABC")(2)); + EXPECT_EQ('C', absl::bind_front(CharAt, "ABC", 2)()); +} + +TEST(BindTest, Lambda) { + auto lambda = [](int x, int y, int z) { return x + y + z; }; + EXPECT_EQ(6, absl::bind_front(lambda)(1, 2, 3)); + EXPECT_EQ(6, absl::bind_front(lambda, 1)(2, 3)); + EXPECT_EQ(6, absl::bind_front(lambda, 1, 2)(3)); + EXPECT_EQ(6, absl::bind_front(lambda, 1, 2, 3)()); +} + +struct Functor { + std::string operator()() & { return "&"; } + std::string operator()() const& { return "const&"; } + std::string operator()() && { return "&&"; } + std::string operator()() const&& { return "const&&"; } +}; + +TEST(BindTest, PerfectForwardingOfBoundArgs) { + auto f = absl::bind_front(Functor()); + const auto& cf = f; + EXPECT_EQ("&", f()); + EXPECT_EQ("const&", cf()); + EXPECT_EQ("&&", std::move(f)()); + EXPECT_EQ("const&&", std::move(cf)()); +} + +struct ArgDescribe { + std::string operator()(int&) const { return "&"; } // NOLINT + std::string operator()(const int&) const { return "const&"; } // NOLINT + std::string operator()(int&&) const { return "&&"; } + std::string operator()(const int&&) const { return "const&&"; } +}; + +TEST(BindTest, PerfectForwardingOfFreeArgs) { + ArgDescribe f; + int i; + EXPECT_EQ("&", absl::bind_front(f)(static_cast(i))); + EXPECT_EQ("const&", absl::bind_front(f)(static_cast(i))); + EXPECT_EQ("&&", absl::bind_front(f)(static_cast(i))); + EXPECT_EQ("const&&", absl::bind_front(f)(static_cast(i))); +} + +struct NonCopyableFunctor { + NonCopyableFunctor() = default; + NonCopyableFunctor(const NonCopyableFunctor&) = delete; + NonCopyableFunctor& operator=(const NonCopyableFunctor&) = delete; + const NonCopyableFunctor* operator()() const { return this; } +}; + +TEST(BindTest, RefToFunctor) { + // It won't copy/move the functor and use the original object. + NonCopyableFunctor ncf; + auto bound_ncf = absl::bind_front(std::ref(ncf)); + auto bound_ncf_copy = bound_ncf; + EXPECT_EQ(&ncf, bound_ncf_copy()); +} + +struct Struct { + std::string value; +}; + +TEST(BindTest, StoreByCopy) { + Struct s = {"hello"}; + auto f = absl::bind_front(&Struct::value, s); + auto g = f; + EXPECT_EQ("hello", f()); + EXPECT_EQ("hello", g()); + EXPECT_NE(&s.value, &f()); + EXPECT_NE(&s.value, &g()); + EXPECT_NE(&g(), &f()); +} + +struct NonCopyable { + explicit NonCopyable(const std::string& s) : value(s) {} + NonCopyable(const NonCopyable&) = delete; + NonCopyable& operator=(const NonCopyable&) = delete; + + std::string value; +}; + +const std::string& GetNonCopyableValue(const NonCopyable& n) { return n.value; } + +TEST(BindTest, StoreByRef) { + NonCopyable s("hello"); + auto f = absl::bind_front(&GetNonCopyableValue, std::ref(s)); + EXPECT_EQ("hello", f()); + EXPECT_EQ(&s.value, &f()); + auto g = std::move(f); // NOLINT + EXPECT_EQ("hello", g()); + EXPECT_EQ(&s.value, &g()); + s.value = "goodbye"; + EXPECT_EQ("goodbye", g()); +} + +TEST(BindTest, StoreByCRef) { + NonCopyable s("hello"); + auto f = absl::bind_front(&GetNonCopyableValue, std::cref(s)); + EXPECT_EQ("hello", f()); + EXPECT_EQ(&s.value, &f()); + auto g = std::move(f); // NOLINT + EXPECT_EQ("hello", g()); + EXPECT_EQ(&s.value, &g()); + s.value = "goodbye"; + EXPECT_EQ("goodbye", g()); +} + +const std::string& GetNonCopyableValueByWrapper( + std::reference_wrapper n) { + return n.get().value; +} + +TEST(BindTest, StoreByRefInvokeByWrapper) { + NonCopyable s("hello"); + auto f = absl::bind_front(GetNonCopyableValueByWrapper, std::ref(s)); + EXPECT_EQ("hello", f()); + EXPECT_EQ(&s.value, &f()); + auto g = std::move(f); + EXPECT_EQ("hello", g()); + EXPECT_EQ(&s.value, &g()); + s.value = "goodbye"; + EXPECT_EQ("goodbye", g()); +} + +TEST(BindTest, StoreByPointer) { + NonCopyable s("hello"); + auto f = absl::bind_front(&NonCopyable::value, &s); + EXPECT_EQ("hello", f()); + EXPECT_EQ(&s.value, &f()); + auto g = std::move(f); + EXPECT_EQ("hello", g()); + EXPECT_EQ(&s.value, &g()); +} + +int Sink(std::unique_ptr p) { + return *p; +} + +std::unique_ptr Factory(int n) { return absl::make_unique(n); } + +TEST(BindTest, NonCopyableArg) { + EXPECT_EQ(42, absl::bind_front(Sink)(absl::make_unique(42))); + EXPECT_EQ(42, absl::bind_front(Sink, absl::make_unique(42))()); +} + +TEST(BindTest, NonCopyableResult) { + EXPECT_THAT(absl::bind_front(Factory)(42), ::testing::Pointee(42)); + EXPECT_THAT(absl::bind_front(Factory, 42)(), ::testing::Pointee(42)); +} + +// is_copy_constructible> is true but an attempt to +// instantiate the copy constructor leads to a compile error. This is similar +// to how standard containers behave. +template +struct FalseCopyable { + FalseCopyable() {} + FalseCopyable(const FalseCopyable& other) : m(other.m) {} + FalseCopyable(FalseCopyable&& other) : m(std::move(other.m)) {} + T m; +}; + +int GetMember(FalseCopyable> x) { return *x.m; } + +TEST(BindTest, WrappedMoveOnly) { + FalseCopyable> x; + x.m = absl::make_unique(42); + auto f = absl::bind_front(&GetMember, std::move(x)); + EXPECT_EQ(42, std::move(f)()); +} + +int Plus(int a, int b) { return a + b; } + +TEST(BindTest, ConstExpr) { + constexpr auto f = absl::bind_front(CharAt); + EXPECT_EQ(f("ABC", 1), 'B'); + static constexpr int five = 5; + constexpr auto plus5 = absl::bind_front(Plus, five); + EXPECT_EQ(plus5(1), 6); + + // There seems to be a bug in MSVC dealing constexpr construction of + // char[]. Notice 'plus5' above; 'int' works just fine. +#if !(defined(_MSC_VER) && _MSC_VER < 1910) + static constexpr char data[] = "DEF"; + constexpr auto g = absl::bind_front(CharAt, data); + EXPECT_EQ(g(1), 'E'); +#endif +} + +struct ManglingCall { + int operator()(int, double, std::string) const { return 0; } +}; + +TEST(BindTest, Mangling) { + // We just want to generate a particular instantiation to see its mangling. + absl::bind_front(ManglingCall{}, 1, 3.3)("A"); +} + +} // namespace diff --git a/absl/functional/internal/front_binder.h b/absl/functional/internal/front_binder.h new file mode 100644 index 00000000..a4d95da4 --- /dev/null +++ b/absl/functional/internal/front_binder.h @@ -0,0 +1,95 @@ +// Copyright 2018 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Implementation details for `absl::bind_front()`. + +#ifndef ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_ +#define ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_ + +#include +#include +#include + +#include "absl/base/internal/invoke.h" +#include "absl/container/internal/compressed_tuple.h" +#include "absl/meta/type_traits.h" +#include "absl/utility/utility.h" + +namespace absl { +ABSL_NAMESPACE_BEGIN +namespace functional_internal { + +// Invoke the method, expanding the tuple of bound arguments. +template +R Apply(Tuple&& bound, absl::index_sequence, Args&&... free) { + return base_internal::Invoke( + absl::forward(bound).template get()..., + absl::forward(free)...); +} + +template +class FrontBinder { + using BoundArgsT = absl::container_internal::CompressedTuple; + using Idx = absl::make_index_sequence; + + BoundArgsT bound_args_; + + public: + template + constexpr explicit FrontBinder(absl::in_place_t, Ts&&... ts) + : bound_args_(absl::forward(ts)...) {} + + template > + R operator()(FreeArgs&&... free_args) & { + return functional_internal::Apply(bound_args_, Idx(), + absl::forward(free_args)...); + } + + template > + R operator()(FreeArgs&&... free_args) const& { + return functional_internal::Apply(bound_args_, Idx(), + absl::forward(free_args)...); + } + + template > + R operator()(FreeArgs&&... free_args) && { + // This overload is called when *this is an rvalue. If some of the bound + // arguments are stored by value or rvalue reference, we move them. + return functional_internal::Apply(absl::move(bound_args_), Idx(), + absl::forward(free_args)...); + } + + template > + R operator()(FreeArgs&&... free_args) const&& { + // This overload is called when *this is an rvalue. If some of the bound + // arguments are stored by value or rvalue reference, we move them. + return functional_internal::Apply(absl::move(bound_args_), Idx(), + absl::forward(free_args)...); + } +}; + +template +using bind_front_t = FrontBinder, absl::decay_t...>; + +} // namespace functional_internal +ABSL_NAMESPACE_END +} // namespace absl + +#endif // ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_ diff --git a/absl/random/uniform_real_distribution_test.cc b/absl/random/uniform_real_distribution_test.cc index 9f14d1c5..a56374a6 100644 --- a/absl/random/uniform_real_distribution_test.cc +++ b/absl/random/uniform_real_distribution_test.cc @@ -161,6 +161,10 @@ TYPED_TEST(UniformRealDistributionTest, ParamSerializeTest) { } } +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4756) // Constant arithmetic overflow. +#endif TYPED_TEST(UniformRealDistributionTest, ViolatesPreconditionsDeathTest) { #if GTEST_HAS_DEATH_TEST // Hi < Lo @@ -195,6 +199,9 @@ TYPED_TEST(UniformRealDistributionTest, ViolatesPreconditionsDeathTest) { } #endif // NDEBUG } +#ifdef _MSC_VER +#pragma warning(pop) // warning(disable:4756) +#endif TYPED_TEST(UniformRealDistributionTest, TestMoments) { constexpr int kSize = 1000000; diff --git a/absl/time/internal/cctz/BUILD.bazel b/absl/time/internal/cctz/BUILD.bazel index 9fceffe2..5ad0f036 100644 --- a/absl/time/internal/cctz/BUILD.bazel +++ b/absl/time/internal/cctz/BUILD.bazel @@ -42,6 +42,7 @@ cc_library( ], textual_hdrs = ["include/cctz/civil_time_detail.h"], visibility = ["//visibility:public"], + deps = ["//absl/base:config"], ) cc_library( @@ -78,7 +79,10 @@ cc_library( "//conditions:default": [], }), visibility = ["//visibility:public"], - deps = [":civil_time"], + deps = [ + ":civil_time", + "//absl/base:config", + ], ) ### tests @@ -89,6 +93,7 @@ cc_test( srcs = ["src/civil_time_test.cc"], deps = [ ":civil_time", + "//absl/base:config", "@com_google_googletest//:gtest_main", ], ) @@ -106,6 +111,7 @@ cc_test( deps = [ ":civil_time", ":time_zone", + "//absl/base:config", "@com_google_googletest//:gtest_main", ], ) @@ -124,6 +130,7 @@ cc_test( deps = [ ":civil_time", ":time_zone", + "//absl/base:config", "@com_google_googletest//:gtest_main", ], ) @@ -144,6 +151,7 @@ cc_test( deps = [ ":civil_time", ":time_zone", + "//absl/base:config", "@com_github_google_benchmark//:benchmark_main", ], ) diff --git a/absl/time/internal/cctz/include/cctz/civil_time.h b/absl/time/internal/cctz/include/cctz/civil_time.h index 19b311bb..d47ff86f 100644 --- a/absl/time/internal/cctz/include/cctz/civil_time.h +++ b/absl/time/internal/cctz/include/cctz/civil_time.h @@ -15,9 +15,11 @@ #ifndef ABSL_TIME_INTERNAL_CCTZ_CIVIL_TIME_H_ #define ABSL_TIME_INTERNAL_CCTZ_CIVIL_TIME_H_ +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time_detail.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -324,6 +326,7 @@ using detail::get_yearday; } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_CIVIL_TIME_H_ diff --git a/absl/time/internal/cctz/include/cctz/civil_time_detail.h b/absl/time/internal/cctz/include/cctz/civil_time_detail.h index 433078a7..4cde96f1 100644 --- a/absl/time/internal/cctz/include/cctz/civil_time_detail.h +++ b/absl/time/internal/cctz/include/cctz/civil_time_detail.h @@ -20,6 +20,8 @@ #include #include +#include "absl/base/config.h" + // Disable constexpr support unless we are in C++14 mode. #if __cpp_constexpr >= 201304 || (defined(_MSC_VER) && _MSC_VER >= 1910) #define CONSTEXPR_D constexpr // data @@ -32,6 +34,7 @@ #endif namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -53,8 +56,8 @@ using second_t = std::int_fast8_t; // [0:59] // Normalized civil-time fields: Y-M-D HH:MM:SS. struct fields { - CONSTEXPR_M fields(year_t year, month_t month, day_t day, - hour_t hour, minute_t minute, second_t second) + CONSTEXPR_M fields(year_t year, month_t month, day_t day, hour_t hour, + minute_t minute, second_t second) : y(year), m(month), d(day), hh(hour), mm(minute), ss(second) {} std::int_least64_t y; std::int_least8_t m; @@ -101,8 +104,8 @@ CONSTEXPR_F int days_per_month(year_t y, month_t m) noexcept { return k_days_per_month[m] + (m == 2 && is_leap_year(y)); } -CONSTEXPR_F fields n_day(year_t y, month_t m, diff_t d, diff_t cd, - hour_t hh, minute_t mm, second_t ss) noexcept { +CONSTEXPR_F fields n_day(year_t y, month_t m, diff_t d, diff_t cd, hour_t hh, + minute_t mm, second_t ss) noexcept { y += (cd / 146097) * 400; cd %= 146097; if (cd < 0) { @@ -152,8 +155,8 @@ CONSTEXPR_F fields n_day(year_t y, month_t m, diff_t d, diff_t cd, } return fields(y, m, static_cast(d), hh, mm, ss); } -CONSTEXPR_F fields n_mon(year_t y, diff_t m, diff_t d, diff_t cd, - hour_t hh, minute_t mm, second_t ss) noexcept { +CONSTEXPR_F fields n_mon(year_t y, diff_t m, diff_t d, diff_t cd, hour_t hh, + minute_t mm, second_t ss) noexcept { if (m != 12) { y += m / 12; m %= 12; @@ -164,8 +167,8 @@ CONSTEXPR_F fields n_mon(year_t y, diff_t m, diff_t d, diff_t cd, } return n_day(y, static_cast(m), d, cd, hh, mm, ss); } -CONSTEXPR_F fields n_hour(year_t y, diff_t m, diff_t d, diff_t cd, - diff_t hh, minute_t mm, second_t ss) noexcept { +CONSTEXPR_F fields n_hour(year_t y, diff_t m, diff_t d, diff_t cd, diff_t hh, + minute_t mm, second_t ss) noexcept { cd += hh / 24; hh %= 24; if (hh < 0) { @@ -264,8 +267,8 @@ CONSTEXPR_F diff_t ymd_ord(year_t y, month_t m, day_t d) noexcept { // yet the difference between two such extreme values may actually be // small, so we take a little care to avoid overflow when possible by // exploiting the 146097-day cycle. -CONSTEXPR_F diff_t day_difference(year_t y1, month_t m1, day_t d1, - year_t y2, month_t m2, day_t d2) noexcept { +CONSTEXPR_F diff_t day_difference(year_t y1, month_t m1, day_t d1, year_t y2, + month_t m2, day_t d2) noexcept { const diff_t a_c4_off = y1 % 400; const diff_t b_c4_off = y2 % 400; diff_t c4_diff = (y1 - a_c4_off) - (y2 - b_c4_off); @@ -305,9 +308,7 @@ CONSTEXPR_F diff_t difference(second_tag, fields f1, fields f2) noexcept { //////////////////////////////////////////////////////////////////////// // Aligns the (normalized) fields struct to the indicated field. -CONSTEXPR_F fields align(second_tag, fields f) noexcept { - return f; -} +CONSTEXPR_F fields align(second_tag, fields f) noexcept { return f; } CONSTEXPR_F fields align(minute_tag, fields f) noexcept { return fields{f.y, f.m, f.d, f.hh, f.mm, 0}; } @@ -386,11 +387,11 @@ class civil_time { : civil_time(ct.f_) {} // Factories for the maximum/minimum representable civil_time. - static CONSTEXPR_F civil_time (max)() { + static CONSTEXPR_F civil_time(max)() { const auto max_year = (std::numeric_limits::max)(); return civil_time(max_year, 12, 31, 23, 59, 59); } - static CONSTEXPR_F civil_time (min)() { + static CONSTEXPR_F civil_time(min)() { const auto min_year = (std::numeric_limits::min)(); return civil_time(min_year, 1, 1, 0, 0, 0); } @@ -416,17 +417,13 @@ class civil_time { } return *this; } - CONSTEXPR_M civil_time& operator++() noexcept { - return *this += 1; - } + CONSTEXPR_M civil_time& operator++() noexcept { return *this += 1; } CONSTEXPR_M civil_time operator++(int) noexcept { const civil_time a = *this; ++*this; return a; } - CONSTEXPR_M civil_time& operator--() noexcept { - return *this -= 1; - } + CONSTEXPR_M civil_time& operator--() noexcept { return *this -= 1; } CONSTEXPR_M civil_time operator--(int) noexcept { const civil_time a = *this; --*this; @@ -483,17 +480,17 @@ using civil_second = civil_time; template CONSTEXPR_F bool operator<(const civil_time& lhs, const civil_time& rhs) noexcept { - return (lhs.year() < rhs.year() || - (lhs.year() == rhs.year() && - (lhs.month() < rhs.month() || - (lhs.month() == rhs.month() && - (lhs.day() < rhs.day() || - (lhs.day() == rhs.day() && - (lhs.hour() < rhs.hour() || - (lhs.hour() == rhs.hour() && - (lhs.minute() < rhs.minute() || - (lhs.minute() == rhs.minute() && - (lhs.second() < rhs.second()))))))))))); + return ( + lhs.year() < rhs.year() || + (lhs.year() == rhs.year() && + (lhs.month() < rhs.month() || + (lhs.month() == rhs.month() && + (lhs.day() < rhs.day() || (lhs.day() == rhs.day() && + (lhs.hour() < rhs.hour() || + (lhs.hour() == rhs.hour() && + (lhs.minute() < rhs.minute() || + (lhs.minute() == rhs.minute() && + (lhs.second() < rhs.second()))))))))))); } template CONSTEXPR_F bool operator<=(const civil_time& lhs, @@ -615,6 +612,7 @@ std::ostream& operator<<(std::ostream& os, weekday wd); } // namespace detail } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #undef CONSTEXPR_M diff --git a/absl/time/internal/cctz/include/cctz/time_zone.h b/absl/time/internal/cctz/include/cctz/time_zone.h index ef6c4ba1..d05147a1 100644 --- a/absl/time/internal/cctz/include/cctz/time_zone.h +++ b/absl/time/internal/cctz/include/cctz/time_zone.h @@ -25,9 +25,11 @@ #include #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -39,8 +41,8 @@ using sys_seconds = seconds; // Deprecated. Use cctz::seconds instead. namespace detail { template -inline std::pair, D> -split_seconds(const time_point& tp) { +inline std::pair, D> split_seconds( + const time_point& tp) { auto sec = std::chrono::time_point_cast(tp); auto sub = tp - sec; if (sub.count() < 0) { @@ -49,8 +51,8 @@ split_seconds(const time_point& tp) { } return {sec, std::chrono::duration_cast(sub)}; } -inline std::pair, seconds> -split_seconds(const time_point& tp) { +inline std::pair, seconds> split_seconds( + const time_point& tp) { return {tp, seconds::zero()}; } } // namespace detail @@ -194,15 +196,13 @@ class time_zone { bool next_transition(const time_point& tp, civil_transition* trans) const; template - bool next_transition(const time_point& tp, - civil_transition* trans) const { + bool next_transition(const time_point& tp, civil_transition* trans) const { return next_transition(detail::split_seconds(tp).first, trans); } bool prev_transition(const time_point& tp, civil_transition* trans) const; template - bool prev_transition(const time_point& tp, - civil_transition* trans) const { + bool prev_transition(const time_point& tp, civil_transition* trans) const { return prev_transition(detail::split_seconds(tp).first, trans); } @@ -220,9 +220,7 @@ class time_zone { friend bool operator==(time_zone lhs, time_zone rhs) { return &lhs.effective_impl() == &rhs.effective_impl(); } - friend bool operator!=(time_zone lhs, time_zone rhs) { - return !(lhs == rhs); - } + friend bool operator!=(time_zone lhs, time_zone rhs) { return !(lhs == rhs); } template friend H AbslHashValue(H h, time_zone tz) { @@ -380,6 +378,7 @@ inline bool parse(const std::string& fmt, const std::string& input, } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_H_ diff --git a/absl/time/internal/cctz/include/cctz/zone_info_source.h b/absl/time/internal/cctz/include/cctz/zone_info_source.h index 2b898d18..912b44ba 100644 --- a/absl/time/internal/cctz/include/cctz/zone_info_source.h +++ b/absl/time/internal/cctz/include/cctz/zone_info_source.h @@ -20,7 +20,10 @@ #include #include +#include "absl/base/config.h" + namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -30,7 +33,7 @@ class ZoneInfoSource { virtual ~ZoneInfoSource(); virtual std::size_t Read(void* ptr, std::size_t size) = 0; // like fread() - virtual int Skip(std::size_t offset) = 0; // like fseek() + virtual int Skip(std::size_t offset) = 0; // like fseek() // Until the zoneinfo data supports versioning information, we provide // a way for a ZoneInfoSource to indicate it out-of-band. The default @@ -40,9 +43,11 @@ class ZoneInfoSource { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz_extension { @@ -52,8 +57,8 @@ namespace cctz_extension { using ZoneInfoSourceFactory = std::unique_ptr (*)( const std::string&, - const std::function( - const std::string&)>&); + const std::function(const std::string&)>&); // The user can control the mapping of zone names to zoneinfo data by // providing a definition for cctz_extension::zone_info_source_factory. @@ -91,6 +96,7 @@ extern ZoneInfoSourceFactory zone_info_source_factory; } // namespace cctz_extension } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_ZONE_INFO_SOURCE_H_ diff --git a/absl/time/internal/cctz/src/cctz_benchmark.cc b/absl/time/internal/cctz/src/cctz_benchmark.cc index a40f504e..d30a644e 100644 --- a/absl/time/internal/cctz/src/cctz_benchmark.cc +++ b/absl/time/internal/cctz/src/cctz_benchmark.cc @@ -105,601 +105,599 @@ const char RFC1123_no_wday[] = "%d %b %Y %H:%M:%S %z"; // A list of known time-zone names. // TODO: Refactor with src/time_zone_lookup_test.cc. -const char* const kTimeZoneNames[] = { - "Africa/Abidjan", - "Africa/Accra", - "Africa/Addis_Ababa", - "Africa/Algiers", - "Africa/Asmara", - "Africa/Asmera", - "Africa/Bamako", - "Africa/Bangui", - "Africa/Banjul", - "Africa/Bissau", - "Africa/Blantyre", - "Africa/Brazzaville", - "Africa/Bujumbura", - "Africa/Cairo", - "Africa/Casablanca", - "Africa/Ceuta", - "Africa/Conakry", - "Africa/Dakar", - "Africa/Dar_es_Salaam", - "Africa/Djibouti", - "Africa/Douala", - "Africa/El_Aaiun", - "Africa/Freetown", - "Africa/Gaborone", - "Africa/Harare", - "Africa/Johannesburg", - "Africa/Juba", - "Africa/Kampala", - "Africa/Khartoum", - "Africa/Kigali", - "Africa/Kinshasa", - "Africa/Lagos", - "Africa/Libreville", - "Africa/Lome", - "Africa/Luanda", - "Africa/Lubumbashi", - "Africa/Lusaka", - "Africa/Malabo", - "Africa/Maputo", - "Africa/Maseru", - "Africa/Mbabane", - "Africa/Mogadishu", - "Africa/Monrovia", - "Africa/Nairobi", - "Africa/Ndjamena", - "Africa/Niamey", - "Africa/Nouakchott", - "Africa/Ouagadougou", - "Africa/Porto-Novo", - "Africa/Sao_Tome", - "Africa/Timbuktu", - "Africa/Tripoli", - "Africa/Tunis", - "Africa/Windhoek", - "America/Adak", - "America/Anchorage", - "America/Anguilla", - "America/Antigua", - "America/Araguaina", - "America/Argentina/Buenos_Aires", - "America/Argentina/Catamarca", - "America/Argentina/ComodRivadavia", - "America/Argentina/Cordoba", - "America/Argentina/Jujuy", - "America/Argentina/La_Rioja", - "America/Argentina/Mendoza", - "America/Argentina/Rio_Gallegos", - "America/Argentina/Salta", - "America/Argentina/San_Juan", - "America/Argentina/San_Luis", - "America/Argentina/Tucuman", - "America/Argentina/Ushuaia", - "America/Aruba", - "America/Asuncion", - "America/Atikokan", - "America/Atka", - "America/Bahia", - "America/Bahia_Banderas", - "America/Barbados", - "America/Belem", - "America/Belize", - "America/Blanc-Sablon", - "America/Boa_Vista", - "America/Bogota", - "America/Boise", - "America/Buenos_Aires", - "America/Cambridge_Bay", - "America/Campo_Grande", - "America/Cancun", - "America/Caracas", - "America/Catamarca", - "America/Cayenne", - "America/Cayman", - "America/Chicago", - "America/Chihuahua", - "America/Coral_Harbour", - "America/Cordoba", - "America/Costa_Rica", - "America/Creston", - "America/Cuiaba", - "America/Curacao", - "America/Danmarkshavn", - "America/Dawson", - "America/Dawson_Creek", - "America/Denver", - "America/Detroit", - "America/Dominica", - "America/Edmonton", - "America/Eirunepe", - "America/El_Salvador", - "America/Ensenada", - "America/Fort_Nelson", - "America/Fort_Wayne", - "America/Fortaleza", - "America/Glace_Bay", - "America/Godthab", - "America/Goose_Bay", - "America/Grand_Turk", - "America/Grenada", - "America/Guadeloupe", - "America/Guatemala", - "America/Guayaquil", - "America/Guyana", - "America/Halifax", - "America/Havana", - "America/Hermosillo", - "America/Indiana/Indianapolis", - "America/Indiana/Knox", - "America/Indiana/Marengo", - "America/Indiana/Petersburg", - "America/Indiana/Tell_City", - "America/Indiana/Vevay", - "America/Indiana/Vincennes", - "America/Indiana/Winamac", - "America/Indianapolis", - "America/Inuvik", - "America/Iqaluit", - "America/Jamaica", - "America/Jujuy", - "America/Juneau", - "America/Kentucky/Louisville", - "America/Kentucky/Monticello", - "America/Knox_IN", - "America/Kralendijk", - "America/La_Paz", - "America/Lima", - "America/Los_Angeles", - "America/Louisville", - "America/Lower_Princes", - "America/Maceio", - "America/Managua", - "America/Manaus", - "America/Marigot", - "America/Martinique", - "America/Matamoros", - "America/Mazatlan", - "America/Mendoza", - "America/Menominee", - "America/Merida", - "America/Metlakatla", - "America/Mexico_City", - "America/Miquelon", - "America/Moncton", - "America/Monterrey", - "America/Montevideo", - "America/Montreal", - "America/Montserrat", - "America/Nassau", - "America/New_York", - "America/Nipigon", - "America/Nome", - "America/Noronha", - "America/North_Dakota/Beulah", - "America/North_Dakota/Center", - "America/North_Dakota/New_Salem", - "America/Ojinaga", - "America/Panama", - "America/Pangnirtung", - "America/Paramaribo", - "America/Phoenix", - "America/Port-au-Prince", - "America/Port_of_Spain", - "America/Porto_Acre", - "America/Porto_Velho", - "America/Puerto_Rico", - "America/Punta_Arenas", - "America/Rainy_River", - "America/Rankin_Inlet", - "America/Recife", - "America/Regina", - "America/Resolute", - "America/Rio_Branco", - "America/Rosario", - "America/Santa_Isabel", - "America/Santarem", - "America/Santiago", - "America/Santo_Domingo", - "America/Sao_Paulo", - "America/Scoresbysund", - "America/Shiprock", - "America/Sitka", - "America/St_Barthelemy", - "America/St_Johns", - "America/St_Kitts", - "America/St_Lucia", - "America/St_Thomas", - "America/St_Vincent", - "America/Swift_Current", - "America/Tegucigalpa", - "America/Thule", - "America/Thunder_Bay", - "America/Tijuana", - "America/Toronto", - "America/Tortola", - "America/Vancouver", - "America/Virgin", - "America/Whitehorse", - "America/Winnipeg", - "America/Yakutat", - "America/Yellowknife", - "Antarctica/Casey", - "Antarctica/Davis", - "Antarctica/DumontDUrville", - "Antarctica/Macquarie", - "Antarctica/Mawson", - "Antarctica/McMurdo", - "Antarctica/Palmer", - "Antarctica/Rothera", - "Antarctica/South_Pole", - "Antarctica/Syowa", - "Antarctica/Troll", - "Antarctica/Vostok", - "Arctic/Longyearbyen", - "Asia/Aden", - "Asia/Almaty", - "Asia/Amman", - "Asia/Anadyr", - "Asia/Aqtau", - "Asia/Aqtobe", - "Asia/Ashgabat", - "Asia/Ashkhabad", - "Asia/Atyrau", - "Asia/Baghdad", - "Asia/Bahrain", - "Asia/Baku", - "Asia/Bangkok", - "Asia/Barnaul", - "Asia/Beirut", - "Asia/Bishkek", - "Asia/Brunei", - "Asia/Calcutta", - "Asia/Chita", - "Asia/Choibalsan", - "Asia/Chongqing", - "Asia/Chungking", - "Asia/Colombo", - "Asia/Dacca", - "Asia/Damascus", - "Asia/Dhaka", - "Asia/Dili", - "Asia/Dubai", - "Asia/Dushanbe", - "Asia/Famagusta", - "Asia/Gaza", - "Asia/Harbin", - "Asia/Hebron", - "Asia/Ho_Chi_Minh", - "Asia/Hong_Kong", - "Asia/Hovd", - "Asia/Irkutsk", - "Asia/Istanbul", - "Asia/Jakarta", - "Asia/Jayapura", - "Asia/Jerusalem", - "Asia/Kabul", - "Asia/Kamchatka", - "Asia/Karachi", - "Asia/Kashgar", - "Asia/Kathmandu", - "Asia/Katmandu", - "Asia/Khandyga", - "Asia/Kolkata", - "Asia/Krasnoyarsk", - "Asia/Kuala_Lumpur", - "Asia/Kuching", - "Asia/Kuwait", - "Asia/Macao", - "Asia/Macau", - "Asia/Magadan", - "Asia/Makassar", - "Asia/Manila", - "Asia/Muscat", - "Asia/Nicosia", - "Asia/Novokuznetsk", - "Asia/Novosibirsk", - "Asia/Omsk", - "Asia/Oral", - "Asia/Phnom_Penh", - "Asia/Pontianak", - "Asia/Pyongyang", - "Asia/Qatar", - "Asia/Qostanay", - "Asia/Qyzylorda", - "Asia/Rangoon", - "Asia/Riyadh", - "Asia/Saigon", - "Asia/Sakhalin", - "Asia/Samarkand", - "Asia/Seoul", - "Asia/Shanghai", - "Asia/Singapore", - "Asia/Srednekolymsk", - "Asia/Taipei", - "Asia/Tashkent", - "Asia/Tbilisi", - "Asia/Tehran", - "Asia/Tel_Aviv", - "Asia/Thimbu", - "Asia/Thimphu", - "Asia/Tokyo", - "Asia/Tomsk", - "Asia/Ujung_Pandang", - "Asia/Ulaanbaatar", - "Asia/Ulan_Bator", - "Asia/Urumqi", - "Asia/Ust-Nera", - "Asia/Vientiane", - "Asia/Vladivostok", - "Asia/Yakutsk", - "Asia/Yangon", - "Asia/Yekaterinburg", - "Asia/Yerevan", - "Atlantic/Azores", - "Atlantic/Bermuda", - "Atlantic/Canary", - "Atlantic/Cape_Verde", - "Atlantic/Faeroe", - "Atlantic/Faroe", - "Atlantic/Jan_Mayen", - "Atlantic/Madeira", - "Atlantic/Reykjavik", - "Atlantic/South_Georgia", - "Atlantic/St_Helena", - "Atlantic/Stanley", - "Australia/ACT", - "Australia/Adelaide", - "Australia/Brisbane", - "Australia/Broken_Hill", - "Australia/Canberra", - "Australia/Currie", - "Australia/Darwin", - "Australia/Eucla", - "Australia/Hobart", - "Australia/LHI", - "Australia/Lindeman", - "Australia/Lord_Howe", - "Australia/Melbourne", - "Australia/NSW", - "Australia/North", - "Australia/Perth", - "Australia/Queensland", - "Australia/South", - "Australia/Sydney", - "Australia/Tasmania", - "Australia/Victoria", - "Australia/West", - "Australia/Yancowinna", - "Brazil/Acre", - "Brazil/DeNoronha", - "Brazil/East", - "Brazil/West", - "CET", - "CST6CDT", - "Canada/Atlantic", - "Canada/Central", - "Canada/Eastern", - "Canada/Mountain", - "Canada/Newfoundland", - "Canada/Pacific", - "Canada/Saskatchewan", - "Canada/Yukon", - "Chile/Continental", - "Chile/EasterIsland", - "Cuba", - "EET", - "EST", - "EST5EDT", - "Egypt", - "Eire", - "Etc/GMT", - "Etc/GMT+0", - "Etc/GMT+1", - "Etc/GMT+10", - "Etc/GMT+11", - "Etc/GMT+12", - "Etc/GMT+2", - "Etc/GMT+3", - "Etc/GMT+4", - "Etc/GMT+5", - "Etc/GMT+6", - "Etc/GMT+7", - "Etc/GMT+8", - "Etc/GMT+9", - "Etc/GMT-0", - "Etc/GMT-1", - "Etc/GMT-10", - "Etc/GMT-11", - "Etc/GMT-12", - "Etc/GMT-13", - "Etc/GMT-14", - "Etc/GMT-2", - "Etc/GMT-3", - "Etc/GMT-4", - "Etc/GMT-5", - "Etc/GMT-6", - "Etc/GMT-7", - "Etc/GMT-8", - "Etc/GMT-9", - "Etc/GMT0", - "Etc/Greenwich", - "Etc/UCT", - "Etc/UTC", - "Etc/Universal", - "Etc/Zulu", - "Europe/Amsterdam", - "Europe/Andorra", - "Europe/Astrakhan", - "Europe/Athens", - "Europe/Belfast", - "Europe/Belgrade", - "Europe/Berlin", - "Europe/Bratislava", - "Europe/Brussels", - "Europe/Bucharest", - "Europe/Budapest", - "Europe/Busingen", - "Europe/Chisinau", - "Europe/Copenhagen", - "Europe/Dublin", - "Europe/Gibraltar", - "Europe/Guernsey", - "Europe/Helsinki", - "Europe/Isle_of_Man", - "Europe/Istanbul", - "Europe/Jersey", - "Europe/Kaliningrad", - "Europe/Kiev", - "Europe/Kirov", - "Europe/Lisbon", - "Europe/Ljubljana", - "Europe/London", - "Europe/Luxembourg", - "Europe/Madrid", - "Europe/Malta", - "Europe/Mariehamn", - "Europe/Minsk", - "Europe/Monaco", - "Europe/Moscow", - "Europe/Nicosia", - "Europe/Oslo", - "Europe/Paris", - "Europe/Podgorica", - "Europe/Prague", - "Europe/Riga", - "Europe/Rome", - "Europe/Samara", - "Europe/San_Marino", - "Europe/Sarajevo", - "Europe/Saratov", - "Europe/Simferopol", - "Europe/Skopje", - "Europe/Sofia", - "Europe/Stockholm", - "Europe/Tallinn", - "Europe/Tirane", - "Europe/Tiraspol", - "Europe/Ulyanovsk", - "Europe/Uzhgorod", - "Europe/Vaduz", - "Europe/Vatican", - "Europe/Vienna", - "Europe/Vilnius", - "Europe/Volgograd", - "Europe/Warsaw", - "Europe/Zagreb", - "Europe/Zaporozhye", - "Europe/Zurich", - "GB", - "GB-Eire", - "GMT", - "GMT+0", - "GMT-0", - "GMT0", - "Greenwich", - "HST", - "Hongkong", - "Iceland", - "Indian/Antananarivo", - "Indian/Chagos", - "Indian/Christmas", - "Indian/Cocos", - "Indian/Comoro", - "Indian/Kerguelen", - "Indian/Mahe", - "Indian/Maldives", - "Indian/Mauritius", - "Indian/Mayotte", - "Indian/Reunion", - "Iran", - "Israel", - "Jamaica", - "Japan", - "Kwajalein", - "Libya", - "MET", - "MST", - "MST7MDT", - "Mexico/BajaNorte", - "Mexico/BajaSur", - "Mexico/General", - "NZ", - "NZ-CHAT", - "Navajo", - "PRC", - "PST8PDT", - "Pacific/Apia", - "Pacific/Auckland", - "Pacific/Bougainville", - "Pacific/Chatham", - "Pacific/Chuuk", - "Pacific/Easter", - "Pacific/Efate", - "Pacific/Enderbury", - "Pacific/Fakaofo", - "Pacific/Fiji", - "Pacific/Funafuti", - "Pacific/Galapagos", - "Pacific/Gambier", - "Pacific/Guadalcanal", - "Pacific/Guam", - "Pacific/Honolulu", - "Pacific/Johnston", - "Pacific/Kiritimati", - "Pacific/Kosrae", - "Pacific/Kwajalein", - "Pacific/Majuro", - "Pacific/Marquesas", - "Pacific/Midway", - "Pacific/Nauru", - "Pacific/Niue", - "Pacific/Norfolk", - "Pacific/Noumea", - "Pacific/Pago_Pago", - "Pacific/Palau", - "Pacific/Pitcairn", - "Pacific/Pohnpei", - "Pacific/Ponape", - "Pacific/Port_Moresby", - "Pacific/Rarotonga", - "Pacific/Saipan", - "Pacific/Samoa", - "Pacific/Tahiti", - "Pacific/Tarawa", - "Pacific/Tongatapu", - "Pacific/Truk", - "Pacific/Wake", - "Pacific/Wallis", - "Pacific/Yap", - "Poland", - "Portugal", - "ROC", - "ROK", - "Singapore", - "Turkey", - "UCT", - "US/Alaska", - "US/Aleutian", - "US/Arizona", - "US/Central", - "US/East-Indiana", - "US/Eastern", - "US/Hawaii", - "US/Indiana-Starke", - "US/Michigan", - "US/Mountain", - "US/Pacific", - "US/Samoa", - "UTC", - "Universal", - "W-SU", - "WET", - "Zulu", - nullptr -}; +const char* const kTimeZoneNames[] = {"Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/NSW", + "Australia/North", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "CET", + "CST6CDT", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "EET", + "EST", + "EST5EDT", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/UTC", + "Etc/Universal", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "GMT", + "GMT+0", + "GMT-0", + "GMT0", + "Greenwich", + "HST", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "MET", + "MST", + "MST7MDT", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "NZ", + "NZ-CHAT", + "Navajo", + "PRC", + "PST8PDT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "ROC", + "ROK", + "Singapore", + "Turkey", + "UCT", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa", + "UTC", + "Universal", + "W-SU", + "WET", + "Zulu", + nullptr}; std::vector AllTimeZoneNames() { std::vector names; diff --git a/absl/time/internal/cctz/src/civil_time_detail.cc b/absl/time/internal/cctz/src/civil_time_detail.cc index cb40b6bc..0b07e397 100644 --- a/absl/time/internal/cctz/src/civil_time_detail.cc +++ b/absl/time/internal/cctz/src/civil_time_detail.cc @@ -18,7 +18,10 @@ #include #include +#include "absl/base/config.h" + namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { namespace detail { @@ -87,4 +90,5 @@ std::ostream& operator<<(std::ostream& os, weekday wd) { } // namespace detail } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/civil_time_test.cc b/absl/time/internal/cctz/src/civil_time_test.cc index 10a5ffe5..be894d70 100644 --- a/absl/time/internal/cctz/src/civil_time_test.cc +++ b/absl/time/internal/cctz/src/civil_time_test.cc @@ -21,8 +21,10 @@ #include #include "gtest/gtest.h" +#include "absl/base/config.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -1014,19 +1016,13 @@ TEST(CivilTime, LeapYears) { int day; } leap_day; // The date of the day after Feb 28. } kLeapYearTable[]{ - {1900, 365, {3, 1}}, - {1999, 365, {3, 1}}, + {1900, 365, {3, 1}}, {1999, 365, {3, 1}}, {2000, 366, {2, 29}}, // leap year - {2001, 365, {3, 1}}, - {2002, 365, {3, 1}}, - {2003, 365, {3, 1}}, - {2004, 366, {2, 29}}, // leap year - {2005, 365, {3, 1}}, - {2006, 365, {3, 1}}, - {2007, 365, {3, 1}}, - {2008, 366, {2, 29}}, // leap year - {2009, 365, {3, 1}}, - {2100, 365, {3, 1}}, + {2001, 365, {3, 1}}, {2002, 365, {3, 1}}, + {2003, 365, {3, 1}}, {2004, 366, {2, 29}}, // leap year + {2005, 365, {3, 1}}, {2006, 365, {3, 1}}, + {2007, 365, {3, 1}}, {2008, 366, {2, 29}}, // leap year + {2009, 365, {3, 1}}, {2100, 365, {3, 1}}, }; for (const auto& e : kLeapYearTable) { @@ -1056,4 +1052,5 @@ TEST(CivilTime, FirstThursdayInMonth) { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_fixed.cc b/absl/time/internal/cctz/src/time_zone_fixed.cc index b0d159a2..a342e37d 100644 --- a/absl/time/internal/cctz/src/time_zone_fixed.cc +++ b/absl/time/internal/cctz/src/time_zone_fixed.cc @@ -20,7 +20,10 @@ #include #include +#include "absl/base/config.h" + namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -59,11 +62,9 @@ bool FixedOffsetFromName(const std::string& name, seconds* offset) { const char* const ep = kFixedZonePrefix + prefix_len; if (name.size() != prefix_len + 9) // +99:99:99 return false; - if (!std::equal(kFixedZonePrefix, ep, name.begin())) - return false; + if (!std::equal(kFixedZonePrefix, ep, name.begin())) return false; const char* np = name.data() + prefix_len; - if (np[0] != '+' && np[0] != '-') - return false; + if (np[0] != '+' && np[0] != '-') return false; if (np[3] != ':' || np[6] != ':') // see note below about large offsets return false; @@ -135,4 +136,5 @@ std::string FixedOffsetToAbbr(const seconds& offset) { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_fixed.h b/absl/time/internal/cctz/src/time_zone_fixed.h index 9c1f5e7d..e74a0bbd 100644 --- a/absl/time/internal/cctz/src/time_zone_fixed.h +++ b/absl/time/internal/cctz/src/time_zone_fixed.h @@ -17,9 +17,11 @@ #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -44,6 +46,7 @@ std::string FixedOffsetToAbbr(const seconds& offset); } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_FIXED_H_ diff --git a/absl/time/internal/cctz/src/time_zone_format.cc b/absl/time/internal/cctz/src/time_zone_format.cc index 84e280b1..950b23a1 100644 --- a/absl/time/internal/cctz/src/time_zone_format.cc +++ b/absl/time/internal/cctz/src/time_zone_format.cc @@ -13,17 +13,18 @@ // limitations under the License. #if !defined(HAS_STRPTIME) -# if !defined(_MSC_VER) && !defined(__MINGW32__) -# define HAS_STRPTIME 1 // assume everyone has strptime() except windows -# endif +#if !defined(_MSC_VER) && !defined(__MINGW32__) +#define HAS_STRPTIME 1 // assume everyone has strptime() except windows +#endif #endif #if defined(HAS_STRPTIME) && HAS_STRPTIME -# if !defined(_XOPEN_SOURCE) -# define _XOPEN_SOURCE // Definedness suffices for strptime. -# endif +#if !defined(_XOPEN_SOURCE) +#define _XOPEN_SOURCE // Definedness suffices for strptime. +#endif #endif +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" // Include time.h directly since, by C++ standards, ctime doesn't have to @@ -48,6 +49,7 @@ #include "time_zone_if.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { namespace detail { @@ -502,8 +504,9 @@ std::string format(const std::string& format, const time_point& tp, bp = ep; if (n > 0) { if (n > kDigits10_64) n = kDigits10_64; - bp = Format64(bp, n, (n > 15) ? fs.count() * kExp10[n - 15] - : fs.count() / kExp10[15 - n]); + bp = Format64(bp, n, + (n > 15) ? fs.count() * kExp10[n - 15] + : fs.count() / kExp10[15 - n]); if (*np == 'S') *--bp = '.'; } if (*np == 'S') bp = Format02d(bp, al.cs.second()); @@ -720,10 +723,9 @@ bool parse(const std::string& format, const std::string& input, data = ParseZone(data, &zone); continue; case 's': - data = ParseInt(data, 0, - std::numeric_limits::min(), - std::numeric_limits::max(), - &percent_s); + data = + ParseInt(data, 0, std::numeric_limits::min(), + std::numeric_limits::max(), &percent_s); if (data != nullptr) saw_percent_s = true; continue; case ':': @@ -916,4 +918,5 @@ bool parse(const std::string& format, const std::string& input, } // namespace detail } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_format_test.cc b/absl/time/internal/cctz/src/time_zone_format_test.cc index 705ccdcd..de75629a 100644 --- a/absl/time/internal/cctz/src/time_zone_format_test.cc +++ b/absl/time/internal/cctz/src/time_zone_format_test.cc @@ -12,20 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "absl/time/internal/cctz/include/cctz/time_zone.h" - #include #include #include #include -#include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "gmock/gmock.h" #include "gtest/gtest.h" +#include "absl/base/config.h" +#include "absl/time/internal/cctz/include/cctz/civil_time.h" +#include "absl/time/internal/cctz/include/cctz/time_zone.h" namespace chrono = std::chrono; namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -48,10 +49,10 @@ namespace { } while (0) const char RFC3339_full[] = "%Y-%m-%dT%H:%M:%E*S%Ez"; -const char RFC3339_sec[] = "%Y-%m-%dT%H:%M:%S%Ez"; +const char RFC3339_sec[] = "%Y-%m-%dT%H:%M:%S%Ez"; const char RFC1123_full[] = "%a, %d %b %Y %H:%M:%S %z"; -const char RFC1123_no_wday[] = "%d %b %Y %H:%M:%S %z"; +const char RFC1123_no_wday[] = "%d %b %Y %H:%M:%S %z"; // A helper that tests the given format specifier by itself, and with leading // and trailing characters. For example: TestFormatSpecifier(tp, "%a", "Thu"). @@ -88,8 +89,11 @@ TEST(Format, TimePointResolution) { format(kFmt, chrono::time_point_cast(t0), utc)); EXPECT_EQ("03:04:05", format(kFmt, chrono::time_point_cast(t0), utc)); - EXPECT_EQ("03:04:05", - format(kFmt, chrono::time_point_cast(t0), utc)); + EXPECT_EQ( + "03:04:05", + format(kFmt, + chrono::time_point_cast(t0), + utc)); EXPECT_EQ("03:04:00", format(kFmt, chrono::time_point_cast(t0), utc)); EXPECT_EQ("03:00:00", @@ -110,12 +114,10 @@ TEST(Format, TimePointExtendedResolution) { EXPECT_EQ( "12:34:56.012345678901234", detail::format(kFmt, tp, detail::femtoseconds(12345678901234), utc)); - EXPECT_EQ( - "12:34:56.001234567890123", - detail::format(kFmt, tp, detail::femtoseconds(1234567890123), utc)); - EXPECT_EQ( - "12:34:56.000123456789012", - detail::format(kFmt, tp, detail::femtoseconds(123456789012), utc)); + EXPECT_EQ("12:34:56.001234567890123", + detail::format(kFmt, tp, detail::femtoseconds(1234567890123), utc)); + EXPECT_EQ("12:34:56.000123456789012", + detail::format(kFmt, tp, detail::femtoseconds(123456789012), utc)); EXPECT_EQ("12:34:56.000000000000123", detail::format(kFmt, tp, detail::femtoseconds(123), utc)); @@ -1416,8 +1418,8 @@ TEST(Parse, MaxRange) { parse(RFC3339_sec, "-292277022657-01-27T08:29:51+01:00", utc, &tp)); // tests max/min civil-second overflow - EXPECT_FALSE(parse(RFC3339_sec, "9223372036854775807-12-31T23:59:59-00:01", - utc, &tp)); + EXPECT_FALSE( + parse(RFC3339_sec, "9223372036854775807-12-31T23:59:59-00:01", utc, &tp)); EXPECT_FALSE(parse(RFC3339_sec, "-9223372036854775808-01-01T00:00:00+00:01", utc, &tp)); @@ -1474,7 +1476,8 @@ TEST(FormatParse, RoundTrip) { TEST(FormatParse, RoundTripDistantFuture) { const time_zone utc = utc_time_zone(); - const time_point in = time_point::max(); + const time_point in = + time_point::max(); const std::string s = format(RFC3339_full, in, utc); time_point out; EXPECT_TRUE(parse(RFC3339_full, s, utc, &out)) << s; @@ -1483,7 +1486,8 @@ TEST(FormatParse, RoundTripDistantFuture) { TEST(FormatParse, RoundTripDistantPast) { const time_zone utc = utc_time_zone(); - const time_point in = time_point::min(); + const time_point in = + time_point::min(); const std::string s = format(RFC3339_full, in, utc); time_point out; EXPECT_TRUE(parse(RFC3339_full, s, utc, &out)) << s; @@ -1492,4 +1496,5 @@ TEST(FormatParse, RoundTripDistantPast) { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_if.cc b/absl/time/internal/cctz/src/time_zone_if.cc index 09aaee5f..0319b2f9 100644 --- a/absl/time/internal/cctz/src/time_zone_if.cc +++ b/absl/time/internal/cctz/src/time_zone_if.cc @@ -13,10 +13,13 @@ // limitations under the License. #include "time_zone_if.h" + +#include "absl/base/config.h" #include "time_zone_info.h" #include "time_zone_libc.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -38,4 +41,5 @@ TimeZoneIf::~TimeZoneIf() {} } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_if.h b/absl/time/internal/cctz/src/time_zone_if.h index d000b7a5..32c0891c 100644 --- a/absl/time/internal/cctz/src/time_zone_if.h +++ b/absl/time/internal/cctz/src/time_zone_if.h @@ -20,10 +20,12 @@ #include #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -38,8 +40,7 @@ class TimeZoneIf { virtual time_zone::absolute_lookup BreakTime( const time_point& tp) const = 0; - virtual time_zone::civil_lookup MakeTime( - const civil_second& cs) const = 0; + virtual time_zone::civil_lookup MakeTime(const civil_second& cs) const = 0; virtual bool NextTransition(const time_point& tp, time_zone::civil_transition* trans) const = 0; @@ -58,15 +59,18 @@ class TimeZoneIf { // Unix clock are second aligned, but not that they share an epoch. inline std::int_fast64_t ToUnixSeconds(const time_point& tp) { return (tp - std::chrono::time_point_cast( - std::chrono::system_clock::from_time_t(0))).count(); + std::chrono::system_clock::from_time_t(0))) + .count(); } inline time_point FromUnixSeconds(std::int_fast64_t t) { return std::chrono::time_point_cast( - std::chrono::system_clock::from_time_t(0)) + seconds(t); + std::chrono::system_clock::from_time_t(0)) + + seconds(t); } } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IF_H_ diff --git a/absl/time/internal/cctz/src/time_zone_impl.cc b/absl/time/internal/cctz/src/time_zone_impl.cc index a241e951..030ae0e1 100644 --- a/absl/time/internal/cctz/src/time_zone_impl.cc +++ b/absl/time/internal/cctz/src/time_zone_impl.cc @@ -20,9 +20,11 @@ #include #include +#include "absl/base/config.h" #include "time_zone_fixed.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -43,9 +45,7 @@ std::mutex& TimeZoneMutex() { } // namespace -time_zone time_zone::Impl::UTC() { - return time_zone(UTCImpl()); -} +time_zone time_zone::Impl::UTC() { return time_zone(UTCImpl()); } bool time_zone::Impl::LoadTimeZone(const std::string& name, time_zone* tz) { const time_zone::Impl* const utc_impl = UTCImpl(); @@ -117,4 +117,5 @@ const time_zone::Impl* time_zone::Impl::UTCImpl() { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_impl.h b/absl/time/internal/cctz/src/time_zone_impl.h index b73fad9b..69806c10 100644 --- a/absl/time/internal/cctz/src/time_zone_impl.h +++ b/absl/time/internal/cctz/src/time_zone_impl.h @@ -18,12 +18,14 @@ #include #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" #include "time_zone_if.h" #include "time_zone_info.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -85,6 +87,7 @@ class time_zone::Impl { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IMPL_H_ diff --git a/absl/time/internal/cctz/src/time_zone_info.cc b/absl/time/internal/cctz/src/time_zone_info.cc index d3e1ae29..971542d0 100644 --- a/absl/time/internal/cctz/src/time_zone_info.cc +++ b/absl/time/internal/cctz/src/time_zone_info.cc @@ -45,11 +45,13 @@ #include #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "time_zone_fixed.h" #include "time_zone_posix.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -65,8 +67,8 @@ const std::int_least32_t kDaysPerYear[2] = {365, 366}; // The day offsets of the beginning of each (1-based) month in non-leap and // leap years respectively (e.g., 335 days before December in a leap year). const std::int_least16_t kMonthOffsets[2][1 + 12 + 1] = { - {-1, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, - {-1, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}, + {-1, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, + {-1, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}, }; // We reject leap-second encoded zoneinfo and so assume 60-second minutes. @@ -77,8 +79,8 @@ const std::int_least64_t kSecsPer400Years = 146097LL * kSecsPerDay; // Like kDaysPerYear[] but scaled up by a factor of kSecsPerDay. const std::int_least32_t kSecsPerYear[2] = { - 365 * kSecsPerDay, - 366 * kSecsPerDay, + 365 * kSecsPerDay, + 366 * kSecsPerDay, }; // Single-byte, unsigned numeric values are encoded directly. @@ -172,8 +174,8 @@ inline time_zone::civil_lookup MakeRepeated(const Transition& tr, } inline civil_second YearShift(const civil_second& cs, year_t shift) { - return civil_second(cs.year() + shift, cs.month(), cs.day(), - cs.hour(), cs.minute(), cs.second()); + return civil_second(cs.year() + shift, cs.month(), cs.day(), cs.hour(), + cs.minute(), cs.second()); } } // namespace @@ -216,7 +218,7 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) { default_transition_type_ = 0; abbreviations_ = FixedOffsetToAbbr(offset); abbreviations_.append(1, '\0'); // add NUL - future_spec_.clear(); // never needed for a fixed-offset zone + future_spec_.clear(); // never needed for a fixed-offset zone extended_ = false; tt.civil_max = LocalTime(seconds::max().count(), tt).cs; @@ -393,31 +395,24 @@ void TimeZoneInfo::ExtendTransitions(const std::string& name, bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { // Read and validate the header. tzhead tzh; - if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) - return false; + if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) return false; if (strncmp(tzh.tzh_magic, TZ_MAGIC, sizeof(tzh.tzh_magic)) != 0) return false; Header hdr; - if (!hdr.Build(tzh)) - return false; + if (!hdr.Build(tzh)) return false; std::size_t time_len = 4; if (tzh.tzh_version[0] != '\0') { // Skip the 4-byte data. - if (zip->Skip(hdr.DataLength(time_len)) != 0) - return false; + if (zip->Skip(hdr.DataLength(time_len)) != 0) return false; // Read and validate the header for the 8-byte data. - if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) - return false; + if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) return false; if (strncmp(tzh.tzh_magic, TZ_MAGIC, sizeof(tzh.tzh_magic)) != 0) return false; - if (tzh.tzh_version[0] == '\0') - return false; - if (!hdr.Build(tzh)) - return false; + if (tzh.tzh_version[0] == '\0') return false; + if (!hdr.Build(tzh)) return false; time_len = 8; } - if (hdr.typecnt == 0) - return false; + if (hdr.typecnt == 0) return false; if (hdr.leapcnt != 0) { // This code assumes 60-second minutes so we do not want // the leap-second encoded zoneinfo. We could reverse the @@ -425,16 +420,13 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { // so currently we simply reject such data. return false; } - if (hdr.ttisstdcnt != 0 && hdr.ttisstdcnt != hdr.typecnt) - return false; - if (hdr.ttisutcnt != 0 && hdr.ttisutcnt != hdr.typecnt) - return false; + if (hdr.ttisstdcnt != 0 && hdr.ttisstdcnt != hdr.typecnt) return false; + if (hdr.ttisutcnt != 0 && hdr.ttisutcnt != hdr.typecnt) return false; // Read the data into a local buffer. std::size_t len = hdr.DataLength(time_len); std::vector tbuf(len); - if (zip->Read(tbuf.data(), len) != len) - return false; + if (zip->Read(tbuf.data(), len) != len) return false; const char* bp = tbuf.data(); // Decode and validate the transitions. @@ -452,10 +444,8 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { bool seen_type_0 = false; for (std::size_t i = 0; i != hdr.timecnt; ++i) { transitions_[i].type_index = Decode8(bp++); - if (transitions_[i].type_index >= hdr.typecnt) - return false; - if (transitions_[i].type_index == 0) - seen_type_0 = true; + if (transitions_[i].type_index >= hdr.typecnt) return false; + if (transitions_[i].type_index == 0) seen_type_0 = true; } // Decode and validate the transition types. @@ -469,8 +459,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { bp += 4; transition_types_[i].is_dst = (Decode8(bp++) != 0); transition_types_[i].abbr_index = Decode8(bp++); - if (transition_types_[i].abbr_index >= hdr.charcnt) - return false; + if (transition_types_[i].abbr_index >= hdr.charcnt) return false; } // Determine the before-first-transition type. @@ -479,13 +468,10 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { std::uint_fast8_t index = 0; if (transition_types_[0].is_dst) { index = transitions_[0].type_index; - while (index != 0 && transition_types_[index].is_dst) - --index; + while (index != 0 && transition_types_[index].is_dst) --index; } - while (index != hdr.typecnt && transition_types_[index].is_dst) - ++index; - if (index != hdr.typecnt) - default_transition_type_ = index; + while (index != hdr.typecnt && transition_types_[index].is_dst) ++index; + if (index != hdr.typecnt) default_transition_type_ = index; } // Copy all the abbreviations. @@ -509,11 +495,9 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { unsigned char ch; // all non-EOF results are positive return (azip->Read(&ch, 1) == 1) ? ch : EOF; }; - if (get_char(zip) != '\n') - return false; + if (get_char(zip) != '\n') return false; for (int c = get_char(zip); c != '\n'; c = get_char(zip)) { - if (c == EOF) - return false; + if (c == EOF) return false; future_spec_.push_back(static_cast(c)); } } @@ -624,7 +608,7 @@ class FileZoneInfoSource : public ZoneInfoSource { : fp_(fp, fclose), len_(len) {} private: - std::unique_ptr fp_; + std::unique_ptr fp_; std::size_t len_; }; @@ -748,13 +732,13 @@ time_zone::absolute_lookup TimeZoneInfo::LocalTime( // A civil time in "+offset" looks like (time+offset) in UTC. // Note: We perform two additions in the civil_second domain to // sidestep the chance of overflow in (unix_time + tt.utc_offset). - return {(civil_second() + unix_time) + tt.utc_offset, - tt.utc_offset, tt.is_dst, &abbreviations_[tt.abbr_index]}; + return {(civil_second() + unix_time) + tt.utc_offset, tt.utc_offset, + tt.is_dst, &abbreviations_[tt.abbr_index]}; } // BreakTime() translation for a particular transition. -time_zone::absolute_lookup TimeZoneInfo::LocalTime( - std::int_fast64_t unix_time, const Transition& tr) const { +time_zone::absolute_lookup TimeZoneInfo::LocalTime(std::int_fast64_t unix_time, + const Transition& tr) const { const TransitionType& tt = transition_types_[tr.type_index]; // Note: (unix_time - tr.unix_time) will never overflow as we // have ensured that there is always a "nearby" transition. @@ -897,9 +881,7 @@ time_zone::civil_lookup TimeZoneInfo::MakeTime(const civil_second& cs) const { return MakeUnique(tr->unix_time + (cs - tr->civil_sec)); } -std::string TimeZoneInfo::Version() const { - return version_; -} +std::string TimeZoneInfo::Version() const { return version_; } std::string TimeZoneInfo::Description() const { std::ostringstream oss; @@ -921,8 +903,8 @@ bool TimeZoneInfo::NextTransition(const time_point& tp, } std::int_fast64_t unix_time = ToUnixSeconds(tp); const Transition target = {unix_time, 0, civil_second(), civil_second()}; - const Transition* tr = std::upper_bound(begin, end, target, - Transition::ByUnixTime()); + const Transition* tr = + std::upper_bound(begin, end, target, Transition::ByUnixTime()); for (; tr != end; ++tr) { // skip no-op transitions std::uint_fast8_t prev_type_index = (tr == begin) ? default_transition_type_ : tr[-1].type_index; @@ -956,8 +938,8 @@ bool TimeZoneInfo::PrevTransition(const time_point& tp, unix_time += 1; // ceils } const Transition target = {unix_time, 0, civil_second(), civil_second()}; - const Transition* tr = std::lower_bound(begin, end, target, - Transition::ByUnixTime()); + const Transition* tr = + std::lower_bound(begin, end, target, Transition::ByUnixTime()); for (; tr != begin; --tr) { // skip no-op transitions std::uint_fast8_t prev_type_index = (tr - 1 == begin) ? default_transition_type_ : tr[-2].type_index; @@ -972,4 +954,5 @@ bool TimeZoneInfo::PrevTransition(const time_point& tp, } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_info.h b/absl/time/internal/cctz/src/time_zone_info.h index 81cd402f..2a10c06c 100644 --- a/absl/time/internal/cctz/src/time_zone_info.h +++ b/absl/time/internal/cctz/src/time_zone_info.h @@ -21,6 +21,7 @@ #include #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" #include "absl/time/internal/cctz/include/cctz/zone_info_source.h" @@ -28,6 +29,7 @@ #include "tzfile.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -72,8 +74,7 @@ class TimeZoneInfo : public TimeZoneIf { // TimeZoneIf implementations. time_zone::absolute_lookup BreakTime( const time_point& tp) const override; - time_zone::civil_lookup MakeTime( - const civil_second& cs) const override; + time_zone::civil_lookup MakeTime(const civil_second& cs) const override; bool NextTransition(const time_point& tp, time_zone::civil_transition* trans) const override; bool PrevTransition(const time_point& tp, @@ -82,7 +83,7 @@ class TimeZoneInfo : public TimeZoneIf { std::string Description() const override; private: - struct Header { // counts of: + struct Header { // counts of: std::size_t timecnt; // transition times std::size_t typecnt; // transition types std::size_t charcnt; // zone abbreviation characters @@ -114,7 +115,7 @@ class TimeZoneInfo : public TimeZoneIf { std::vector transitions_; // ordered by unix_time and civil_sec std::vector transition_types_; // distinct transition types - std::uint_fast8_t default_transition_type_; // for before first transition + std::uint_fast8_t default_transition_type_; // for before first transition std::string abbreviations_; // all the NUL-terminated abbreviations std::string version_; // the tzdata version if available @@ -131,6 +132,7 @@ class TimeZoneInfo : public TimeZoneIf { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_INFO_H_ diff --git a/absl/time/internal/cctz/src/time_zone_libc.cc b/absl/time/internal/cctz/src/time_zone_libc.cc index 6095e764..47cf84c6 100644 --- a/absl/time/internal/cctz/src/time_zone_libc.cc +++ b/absl/time/internal/cctz/src/time_zone_libc.cc @@ -23,10 +23,12 @@ #include #include +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -84,9 +86,7 @@ auto tm_gmtoff(const T& tm) -> decltype(tm.__tm_gmtoff) { } #endif // tm_gmtoff #if defined(tm_zone) -auto tm_zone(const std::tm& tm) -> decltype(tm.tm_zone) { - return tm.tm_zone; -} +auto tm_zone(const std::tm& tm) -> decltype(tm.tm_zone) { return tm.tm_zone; } #elif defined(__tm_zone) auto tm_zone(const std::tm& tm) -> decltype(tm.__tm_zone) { return tm.__tm_zone; @@ -103,19 +103,19 @@ auto tm_zone(const T& tm) -> decltype(tm.__tm_zone) { #endif // tm_zone #endif -inline std::tm* gm_time(const std::time_t *timep, std::tm *result) { +inline std::tm* gm_time(const std::time_t* timep, std::tm* result) { #if defined(_WIN32) || defined(_WIN64) - return gmtime_s(result, timep) ? nullptr : result; + return gmtime_s(result, timep) ? nullptr : result; #else - return gmtime_r(timep, result); + return gmtime_r(timep, result); #endif } -inline std::tm* local_time(const std::time_t *timep, std::tm *result) { +inline std::tm* local_time(const std::time_t* timep, std::tm* result) { #if defined(_WIN32) || defined(_WIN64) - return localtime_s(result, timep) ? nullptr : result; + return localtime_s(result, timep) ? nullptr : result; #else - return localtime_r(timep, result); + return localtime_r(timep, result); #endif } @@ -208,8 +208,8 @@ time_zone::absolute_lookup TimeZoneLibC::BreakTime( } const year_t year = tmp->tm_year + year_t{1900}; - al.cs = civil_second(year, tmp->tm_mon + 1, tmp->tm_mday, - tmp->tm_hour, tmp->tm_min, tmp->tm_sec); + al.cs = civil_second(year, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, + tmp->tm_min, tmp->tm_sec); al.offset = static_cast(tm_gmtoff(*tmp)); al.abbr = local_ ? tm_zone(*tmp) : "UTC"; // as expected by cctz al.is_dst = tmp->tm_isdst > 0; @@ -304,4 +304,5 @@ std::string TimeZoneLibC::Description() const { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_libc.h b/absl/time/internal/cctz/src/time_zone_libc.h index 0d18e9a7..1da9039a 100644 --- a/absl/time/internal/cctz/src/time_zone_libc.h +++ b/absl/time/internal/cctz/src/time_zone_libc.h @@ -17,9 +17,11 @@ #include +#include "absl/base/config.h" #include "time_zone_if.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -33,8 +35,7 @@ class TimeZoneLibC : public TimeZoneIf { // TimeZoneIf implementations. time_zone::absolute_lookup BreakTime( const time_point& tp) const override; - time_zone::civil_lookup MakeTime( - const civil_second& cs) const override; + time_zone::civil_lookup MakeTime(const civil_second& cs) const override; bool NextTransition(const time_point& tp, time_zone::civil_transition* trans) const override; bool PrevTransition(const time_point& tp, @@ -48,6 +49,7 @@ class TimeZoneLibC : public TimeZoneIf { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_LIBC_H_ diff --git a/absl/time/internal/cctz/src/time_zone_lookup.cc b/absl/time/internal/cctz/src/time_zone_lookup.cc index 3c53dd1a..efdea64b 100644 --- a/absl/time/internal/cctz/src/time_zone_lookup.cc +++ b/absl/time/internal/cctz/src/time_zone_lookup.cc @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "absl/base/config.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" #if defined(__ANDROID__) @@ -23,6 +24,7 @@ #if defined(__APPLE__) #include + #include #endif @@ -34,6 +36,7 @@ #include "time_zone_impl.h" namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -66,9 +69,7 @@ int __system_property_get(const char* name, char* value) { } // namespace #endif -std::string time_zone::name() const { - return effective_impl().Name(); -} +std::string time_zone::name() const { return effective_impl().Name(); } time_zone::absolute_lookup time_zone::lookup( const time_point& tp) const { @@ -89,9 +90,7 @@ bool time_zone::prev_transition(const time_point& tp, return effective_impl().PrevTransition(tp, trans); } -std::string time_zone::version() const { - return effective_impl().Version(); -} +std::string time_zone::version() const { return effective_impl().Version(); } std::string time_zone::description() const { return effective_impl().Description(); @@ -184,4 +183,5 @@ time_zone local_time_zone() { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_lookup_test.cc b/absl/time/internal/cctz/src/time_zone_lookup_test.cc index 42dd6d55..227b1278 100644 --- a/absl/time/internal/cctz/src/time_zone_lookup_test.cc +++ b/absl/time/internal/cctz/src/time_zone_lookup_test.cc @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "absl/time/internal/cctz/include/cctz/time_zone.h" - #include #include #include @@ -23,613 +21,614 @@ #include #include -#include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "gtest/gtest.h" +#include "absl/base/config.h" +#include "absl/time/internal/cctz/include/cctz/civil_time.h" +#include "absl/time/internal/cctz/include/cctz/time_zone.h" namespace chrono = std::chrono; namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { namespace { // A list of known time-zone names. -const char* const kTimeZoneNames[] = { - "Africa/Abidjan", - "Africa/Accra", - "Africa/Addis_Ababa", - "Africa/Algiers", - "Africa/Asmara", - "Africa/Asmera", - "Africa/Bamako", - "Africa/Bangui", - "Africa/Banjul", - "Africa/Bissau", - "Africa/Blantyre", - "Africa/Brazzaville", - "Africa/Bujumbura", - "Africa/Cairo", - "Africa/Casablanca", - "Africa/Ceuta", - "Africa/Conakry", - "Africa/Dakar", - "Africa/Dar_es_Salaam", - "Africa/Djibouti", - "Africa/Douala", - "Africa/El_Aaiun", - "Africa/Freetown", - "Africa/Gaborone", - "Africa/Harare", - "Africa/Johannesburg", - "Africa/Juba", - "Africa/Kampala", - "Africa/Khartoum", - "Africa/Kigali", - "Africa/Kinshasa", - "Africa/Lagos", - "Africa/Libreville", - "Africa/Lome", - "Africa/Luanda", - "Africa/Lubumbashi", - "Africa/Lusaka", - "Africa/Malabo", - "Africa/Maputo", - "Africa/Maseru", - "Africa/Mbabane", - "Africa/Mogadishu", - "Africa/Monrovia", - "Africa/Nairobi", - "Africa/Ndjamena", - "Africa/Niamey", - "Africa/Nouakchott", - "Africa/Ouagadougou", - "Africa/Porto-Novo", - "Africa/Sao_Tome", - "Africa/Timbuktu", - "Africa/Tripoli", - "Africa/Tunis", - "Africa/Windhoek", - "America/Adak", - "America/Anchorage", - "America/Anguilla", - "America/Antigua", - "America/Araguaina", - "America/Argentina/Buenos_Aires", - "America/Argentina/Catamarca", - "America/Argentina/ComodRivadavia", - "America/Argentina/Cordoba", - "America/Argentina/Jujuy", - "America/Argentina/La_Rioja", - "America/Argentina/Mendoza", - "America/Argentina/Rio_Gallegos", - "America/Argentina/Salta", - "America/Argentina/San_Juan", - "America/Argentina/San_Luis", - "America/Argentina/Tucuman", - "America/Argentina/Ushuaia", - "America/Aruba", - "America/Asuncion", - "America/Atikokan", - "America/Atka", - "America/Bahia", - "America/Bahia_Banderas", - "America/Barbados", - "America/Belem", - "America/Belize", - "America/Blanc-Sablon", - "America/Boa_Vista", - "America/Bogota", - "America/Boise", - "America/Buenos_Aires", - "America/Cambridge_Bay", - "America/Campo_Grande", - "America/Cancun", - "America/Caracas", - "America/Catamarca", - "America/Cayenne", - "America/Cayman", - "America/Chicago", - "America/Chihuahua", - "America/Coral_Harbour", - "America/Cordoba", - "America/Costa_Rica", - "America/Creston", - "America/Cuiaba", - "America/Curacao", - "America/Danmarkshavn", - "America/Dawson", - "America/Dawson_Creek", - "America/Denver", - "America/Detroit", - "America/Dominica", - "America/Edmonton", - "America/Eirunepe", - "America/El_Salvador", - "America/Ensenada", - "America/Fort_Nelson", - "America/Fort_Wayne", - "America/Fortaleza", - "America/Glace_Bay", - "America/Godthab", - "America/Goose_Bay", - "America/Grand_Turk", - "America/Grenada", - "America/Guadeloupe", - "America/Guatemala", - "America/Guayaquil", - "America/Guyana", - "America/Halifax", - "America/Havana", - "America/Hermosillo", - "America/Indiana/Indianapolis", - "America/Indiana/Knox", - "America/Indiana/Marengo", - "America/Indiana/Petersburg", - "America/Indiana/Tell_City", - "America/Indiana/Vevay", - "America/Indiana/Vincennes", - "America/Indiana/Winamac", - "America/Indianapolis", - "America/Inuvik", - "America/Iqaluit", - "America/Jamaica", - "America/Jujuy", - "America/Juneau", - "America/Kentucky/Louisville", - "America/Kentucky/Monticello", - "America/Knox_IN", - "America/Kralendijk", - "America/La_Paz", - "America/Lima", - "America/Los_Angeles", - "America/Louisville", - "America/Lower_Princes", - "America/Maceio", - "America/Managua", - "America/Manaus", - "America/Marigot", - "America/Martinique", - "America/Matamoros", - "America/Mazatlan", - "America/Mendoza", - "America/Menominee", - "America/Merida", - "America/Metlakatla", - "America/Mexico_City", - "America/Miquelon", - "America/Moncton", - "America/Monterrey", - "America/Montevideo", - "America/Montreal", - "America/Montserrat", - "America/Nassau", - "America/New_York", - "America/Nipigon", - "America/Nome", - "America/Noronha", - "America/North_Dakota/Beulah", - "America/North_Dakota/Center", - "America/North_Dakota/New_Salem", - "America/Ojinaga", - "America/Panama", - "America/Pangnirtung", - "America/Paramaribo", - "America/Phoenix", - "America/Port-au-Prince", - "America/Port_of_Spain", - "America/Porto_Acre", - "America/Porto_Velho", - "America/Puerto_Rico", - "America/Punta_Arenas", - "America/Rainy_River", - "America/Rankin_Inlet", - "America/Recife", - "America/Regina", - "America/Resolute", - "America/Rio_Branco", - "America/Rosario", - "America/Santa_Isabel", - "America/Santarem", - "America/Santiago", - "America/Santo_Domingo", - "America/Sao_Paulo", - "America/Scoresbysund", - "America/Shiprock", - "America/Sitka", - "America/St_Barthelemy", - "America/St_Johns", - "America/St_Kitts", - "America/St_Lucia", - "America/St_Thomas", - "America/St_Vincent", - "America/Swift_Current", - "America/Tegucigalpa", - "America/Thule", - "America/Thunder_Bay", - "America/Tijuana", - "America/Toronto", - "America/Tortola", - "America/Vancouver", - "America/Virgin", - "America/Whitehorse", - "America/Winnipeg", - "America/Yakutat", - "America/Yellowknife", - "Antarctica/Casey", - "Antarctica/Davis", - "Antarctica/DumontDUrville", - "Antarctica/Macquarie", - "Antarctica/Mawson", - "Antarctica/McMurdo", - "Antarctica/Palmer", - "Antarctica/Rothera", - "Antarctica/South_Pole", - "Antarctica/Syowa", - "Antarctica/Troll", - "Antarctica/Vostok", - "Arctic/Longyearbyen", - "Asia/Aden", - "Asia/Almaty", - "Asia/Amman", - "Asia/Anadyr", - "Asia/Aqtau", - "Asia/Aqtobe", - "Asia/Ashgabat", - "Asia/Ashkhabad", - "Asia/Atyrau", - "Asia/Baghdad", - "Asia/Bahrain", - "Asia/Baku", - "Asia/Bangkok", - "Asia/Barnaul", - "Asia/Beirut", - "Asia/Bishkek", - "Asia/Brunei", - "Asia/Calcutta", - "Asia/Chita", - "Asia/Choibalsan", - "Asia/Chongqing", - "Asia/Chungking", - "Asia/Colombo", - "Asia/Dacca", - "Asia/Damascus", - "Asia/Dhaka", - "Asia/Dili", - "Asia/Dubai", - "Asia/Dushanbe", - "Asia/Famagusta", - "Asia/Gaza", - "Asia/Harbin", - "Asia/Hebron", - "Asia/Ho_Chi_Minh", - "Asia/Hong_Kong", - "Asia/Hovd", - "Asia/Irkutsk", - "Asia/Istanbul", - "Asia/Jakarta", - "Asia/Jayapura", - "Asia/Jerusalem", - "Asia/Kabul", - "Asia/Kamchatka", - "Asia/Karachi", - "Asia/Kashgar", - "Asia/Kathmandu", - "Asia/Katmandu", - "Asia/Khandyga", - "Asia/Kolkata", - "Asia/Krasnoyarsk", - "Asia/Kuala_Lumpur", - "Asia/Kuching", - "Asia/Kuwait", - "Asia/Macao", - "Asia/Macau", - "Asia/Magadan", - "Asia/Makassar", - "Asia/Manila", - "Asia/Muscat", - "Asia/Nicosia", - "Asia/Novokuznetsk", - "Asia/Novosibirsk", - "Asia/Omsk", - "Asia/Oral", - "Asia/Phnom_Penh", - "Asia/Pontianak", - "Asia/Pyongyang", - "Asia/Qatar", - "Asia/Qostanay", - "Asia/Qyzylorda", - "Asia/Rangoon", - "Asia/Riyadh", - "Asia/Saigon", - "Asia/Sakhalin", - "Asia/Samarkand", - "Asia/Seoul", - "Asia/Shanghai", - "Asia/Singapore", - "Asia/Srednekolymsk", - "Asia/Taipei", - "Asia/Tashkent", - "Asia/Tbilisi", - "Asia/Tehran", - "Asia/Tel_Aviv", - "Asia/Thimbu", - "Asia/Thimphu", - "Asia/Tokyo", - "Asia/Tomsk", - "Asia/Ujung_Pandang", - "Asia/Ulaanbaatar", - "Asia/Ulan_Bator", - "Asia/Urumqi", - "Asia/Ust-Nera", - "Asia/Vientiane", - "Asia/Vladivostok", - "Asia/Yakutsk", - "Asia/Yangon", - "Asia/Yekaterinburg", - "Asia/Yerevan", - "Atlantic/Azores", - "Atlantic/Bermuda", - "Atlantic/Canary", - "Atlantic/Cape_Verde", - "Atlantic/Faeroe", - "Atlantic/Faroe", - "Atlantic/Jan_Mayen", - "Atlantic/Madeira", - "Atlantic/Reykjavik", - "Atlantic/South_Georgia", - "Atlantic/St_Helena", - "Atlantic/Stanley", - "Australia/ACT", - "Australia/Adelaide", - "Australia/Brisbane", - "Australia/Broken_Hill", - "Australia/Canberra", - "Australia/Currie", - "Australia/Darwin", - "Australia/Eucla", - "Australia/Hobart", - "Australia/LHI", - "Australia/Lindeman", - "Australia/Lord_Howe", - "Australia/Melbourne", - "Australia/NSW", - "Australia/North", - "Australia/Perth", - "Australia/Queensland", - "Australia/South", - "Australia/Sydney", - "Australia/Tasmania", - "Australia/Victoria", - "Australia/West", - "Australia/Yancowinna", - "Brazil/Acre", - "Brazil/DeNoronha", - "Brazil/East", - "Brazil/West", - "CET", - "CST6CDT", - "Canada/Atlantic", - "Canada/Central", - "Canada/Eastern", - "Canada/Mountain", - "Canada/Newfoundland", - "Canada/Pacific", - "Canada/Saskatchewan", - "Canada/Yukon", - "Chile/Continental", - "Chile/EasterIsland", - "Cuba", - "EET", - "EST", - "EST5EDT", - "Egypt", - "Eire", - "Etc/GMT", - "Etc/GMT+0", - "Etc/GMT+1", - "Etc/GMT+10", - "Etc/GMT+11", - "Etc/GMT+12", - "Etc/GMT+2", - "Etc/GMT+3", - "Etc/GMT+4", - "Etc/GMT+5", - "Etc/GMT+6", - "Etc/GMT+7", - "Etc/GMT+8", - "Etc/GMT+9", - "Etc/GMT-0", - "Etc/GMT-1", - "Etc/GMT-10", - "Etc/GMT-11", - "Etc/GMT-12", - "Etc/GMT-13", - "Etc/GMT-14", - "Etc/GMT-2", - "Etc/GMT-3", - "Etc/GMT-4", - "Etc/GMT-5", - "Etc/GMT-6", - "Etc/GMT-7", - "Etc/GMT-8", - "Etc/GMT-9", - "Etc/GMT0", - "Etc/Greenwich", - "Etc/UCT", - "Etc/UTC", - "Etc/Universal", - "Etc/Zulu", - "Europe/Amsterdam", - "Europe/Andorra", - "Europe/Astrakhan", - "Europe/Athens", - "Europe/Belfast", - "Europe/Belgrade", - "Europe/Berlin", - "Europe/Bratislava", - "Europe/Brussels", - "Europe/Bucharest", - "Europe/Budapest", - "Europe/Busingen", - "Europe/Chisinau", - "Europe/Copenhagen", - "Europe/Dublin", - "Europe/Gibraltar", - "Europe/Guernsey", - "Europe/Helsinki", - "Europe/Isle_of_Man", - "Europe/Istanbul", - "Europe/Jersey", - "Europe/Kaliningrad", - "Europe/Kiev", - "Europe/Kirov", - "Europe/Lisbon", - "Europe/Ljubljana", - "Europe/London", - "Europe/Luxembourg", - "Europe/Madrid", - "Europe/Malta", - "Europe/Mariehamn", - "Europe/Minsk", - "Europe/Monaco", - "Europe/Moscow", - "Europe/Nicosia", - "Europe/Oslo", - "Europe/Paris", - "Europe/Podgorica", - "Europe/Prague", - "Europe/Riga", - "Europe/Rome", - "Europe/Samara", - "Europe/San_Marino", - "Europe/Sarajevo", - "Europe/Saratov", - "Europe/Simferopol", - "Europe/Skopje", - "Europe/Sofia", - "Europe/Stockholm", - "Europe/Tallinn", - "Europe/Tirane", - "Europe/Tiraspol", - "Europe/Ulyanovsk", - "Europe/Uzhgorod", - "Europe/Vaduz", - "Europe/Vatican", - "Europe/Vienna", - "Europe/Vilnius", - "Europe/Volgograd", - "Europe/Warsaw", - "Europe/Zagreb", - "Europe/Zaporozhye", - "Europe/Zurich", - "GB", - "GB-Eire", - "GMT", - "GMT+0", - "GMT-0", - "GMT0", - "Greenwich", - "HST", - "Hongkong", - "Iceland", - "Indian/Antananarivo", - "Indian/Chagos", - "Indian/Christmas", - "Indian/Cocos", - "Indian/Comoro", - "Indian/Kerguelen", - "Indian/Mahe", - "Indian/Maldives", - "Indian/Mauritius", - "Indian/Mayotte", - "Indian/Reunion", - "Iran", - "Israel", - "Jamaica", - "Japan", - "Kwajalein", - "Libya", - "MET", - "MST", - "MST7MDT", - "Mexico/BajaNorte", - "Mexico/BajaSur", - "Mexico/General", - "NZ", - "NZ-CHAT", - "Navajo", - "PRC", - "PST8PDT", - "Pacific/Apia", - "Pacific/Auckland", - "Pacific/Bougainville", - "Pacific/Chatham", - "Pacific/Chuuk", - "Pacific/Easter", - "Pacific/Efate", - "Pacific/Enderbury", - "Pacific/Fakaofo", - "Pacific/Fiji", - "Pacific/Funafuti", - "Pacific/Galapagos", - "Pacific/Gambier", - "Pacific/Guadalcanal", - "Pacific/Guam", - "Pacific/Honolulu", - "Pacific/Johnston", - "Pacific/Kiritimati", - "Pacific/Kosrae", - "Pacific/Kwajalein", - "Pacific/Majuro", - "Pacific/Marquesas", - "Pacific/Midway", - "Pacific/Nauru", - "Pacific/Niue", - "Pacific/Norfolk", - "Pacific/Noumea", - "Pacific/Pago_Pago", - "Pacific/Palau", - "Pacific/Pitcairn", - "Pacific/Pohnpei", - "Pacific/Ponape", - "Pacific/Port_Moresby", - "Pacific/Rarotonga", - "Pacific/Saipan", - "Pacific/Samoa", - "Pacific/Tahiti", - "Pacific/Tarawa", - "Pacific/Tongatapu", - "Pacific/Truk", - "Pacific/Wake", - "Pacific/Wallis", - "Pacific/Yap", - "Poland", - "Portugal", - "ROC", - "ROK", - "Singapore", - "Turkey", - "UCT", - "US/Alaska", - "US/Aleutian", - "US/Arizona", - "US/Central", - "US/East-Indiana", - "US/Eastern", - "US/Hawaii", - "US/Indiana-Starke", - "US/Michigan", - "US/Mountain", - "US/Pacific", - "US/Samoa", - "UTC", - "Universal", - "W-SU", - "WET", - "Zulu", - nullptr -}; +const char* const kTimeZoneNames[] = {"Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/NSW", + "Australia/North", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "CET", + "CST6CDT", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "EET", + "EST", + "EST5EDT", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/UTC", + "Etc/Universal", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "GMT", + "GMT+0", + "GMT-0", + "GMT0", + "Greenwich", + "HST", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "MET", + "MST", + "MST7MDT", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "NZ", + "NZ-CHAT", + "Navajo", + "PRC", + "PST8PDT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "ROC", + "ROK", + "Singapore", + "Turkey", + "UCT", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa", + "UTC", + "Universal", + "W-SU", + "WET", + "Zulu", + nullptr}; // Helper to return a loaded time zone by value (UTC on error). time_zone LoadZone(const std::string& name) { @@ -724,7 +723,8 @@ TEST(TimeZone, NamedTimeZones) { EXPECT_EQ("America/New_York", nyc.name()); const time_zone syd = LoadZone("Australia/Sydney"); EXPECT_EQ("Australia/Sydney", syd.name()); - const time_zone fixed0 = fixed_time_zone(absl::time_internal::cctz::seconds::zero()); + const time_zone fixed0 = + fixed_time_zone(absl::time_internal::cctz::seconds::zero()); EXPECT_EQ("UTC", fixed0.name()); const time_zone fixed_pos = fixed_time_zone( chrono::hours(3) + chrono::minutes(25) + chrono::seconds(45)); @@ -767,7 +767,8 @@ TEST(TimeZone, Equality) { EXPECT_EQ(implicit_utc, explicit_utc); EXPECT_EQ(implicit_utc.name(), explicit_utc.name()); - const time_zone fixed_zero = fixed_time_zone(absl::time_internal::cctz::seconds::zero()); + const time_zone fixed_zero = + fixed_time_zone(absl::time_internal::cctz::seconds::zero()); EXPECT_EQ(fixed_zero, LoadZone(fixed_zero.name())); EXPECT_EQ(fixed_zero, explicit_utc); @@ -806,8 +807,8 @@ TEST(TimeZone, Equality) { TEST(StdChronoTimePoint, TimeTAlignment) { // Ensures that the Unix epoch and the system clock epoch are an integral // number of seconds apart. This simplifies conversions to/from time_t. - auto diff = chrono::system_clock::time_point() - - chrono::system_clock::from_time_t(0); + auto diff = + chrono::system_clock::time_point() - chrono::system_clock::from_time_t(0); EXPECT_EQ(chrono::system_clock::time_point::duration::zero(), diff % chrono::seconds(1)); } @@ -816,20 +817,20 @@ TEST(BreakTime, TimePointResolution) { const time_zone utc = utc_time_zone(); const auto t0 = chrono::system_clock::from_time_t(0); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); - ExpectTime(chrono::time_point_cast(t0), utc, - 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), utc, 1970, 1, 1, + 0, 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), utc, 1970, 1, 1, + 0, 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), utc, 1970, 1, 1, + 0, 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), utc, 1970, 1, 1, 0, + 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), + utc, 1970, 1, 1, 0, 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), utc, 1970, 1, 1, 0, + 0, 0, 0, false, "UTC"); + ExpectTime(chrono::time_point_cast(t0), utc, 1970, 1, 1, 0, 0, + 0, 0, false, "UTC"); } TEST(BreakTime, LocalTimeInUTC) { @@ -911,9 +912,8 @@ TEST(MakeTime, TimePointResolution) { chrono::time_point_cast( convert(civil_second(2015, 1, 2, 3, 4, 5), utc)); EXPECT_EQ("04:00", format("%M:%E*S", tp_m, utc)); - const time_point tp_h = - chrono::time_point_cast( - convert(civil_second(2015, 1, 2, 3, 4, 5), utc)); + const time_point tp_h = chrono::time_point_cast( + convert(civil_second(2015, 1, 2, 3, 4, 5), utc)); EXPECT_EQ("00:00", format("%M:%E*S", tp_h, utc)); } @@ -932,7 +932,7 @@ TEST(MakeTime, Normalization) { // NOTE: Run this with -ftrapv to detect overflow problems. TEST(MakeTime, SysSecondsLimits) { - const char RFC3339[] = "%Y-%m-%dT%H:%M:%S%Ez"; + const char RFC3339[] = "%Y-%m-%dT%H:%M:%S%Ez"; const time_zone utc = utc_time_zone(); const time_zone east = fixed_time_zone(chrono::hours(14)); const time_zone west = fixed_time_zone(-chrono::hours(14)); @@ -1030,8 +1030,7 @@ TEST(MakeTime, LocalTimeLibC) { const auto lc = LoadZone("libc:localtime"); time_zone::civil_transition trans; for (auto tp = zi.lookup(civil_second()).trans; - zi.next_transition(tp, &trans); - tp = zi.lookup(trans.to).trans) { + zi.next_transition(tp, &trans); tp = zi.lookup(trans.to).trans) { const auto fcl = zi.lookup(trans.from); const auto tcl = zi.lookup(trans.to); civil_second cs; // compare cs in zi and lc @@ -1433,4 +1432,5 @@ TEST(TimeZoneEdgeCase, UTC5DigitYear) { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_posix.cc b/absl/time/internal/cctz/src/time_zone_posix.cc index 038740e1..5cdd09e8 100644 --- a/absl/time/internal/cctz/src/time_zone_posix.cc +++ b/absl/time/internal/cctz/src/time_zone_posix.cc @@ -19,7 +19,10 @@ #include #include +#include "absl/base/config.h" + namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -152,4 +155,5 @@ bool ParsePosixSpec(const std::string& spec, PosixTimeZone* res) { } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl diff --git a/absl/time/internal/cctz/src/time_zone_posix.h b/absl/time/internal/cctz/src/time_zone_posix.h index 6a60022f..0cf29055 100644 --- a/absl/time/internal/cctz/src/time_zone_posix.h +++ b/absl/time/internal/cctz/src/time_zone_posix.h @@ -55,7 +55,10 @@ #include #include +#include "absl/base/config.h" + namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -123,6 +126,7 @@ bool ParsePosixSpec(const std::string& spec, PosixTimeZone* res); } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_POSIX_H_ diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 51b1f1f3..1ed55e0f 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -22,36 +22,35 @@ */ #ifndef TZDIR -#define TZDIR "/usr/share/zoneinfo" /* Time zone object file directory */ -#endif /* !defined TZDIR */ +#define TZDIR "/usr/share/zoneinfo" /* Time zone object file directory */ +#endif /* !defined TZDIR */ #ifndef TZDEFAULT -#define TZDEFAULT "/etc/localtime" +#define TZDEFAULT "/etc/localtime" #endif /* !defined TZDEFAULT */ #ifndef TZDEFRULES -#define TZDEFRULES "posixrules" +#define TZDEFRULES "posixrules" #endif /* !defined TZDEFRULES */ - /* See Internet RFC 8536 for more details about the following format. */ /* ** Each file begins with. . . */ -#define TZ_MAGIC "TZif" +#define TZ_MAGIC "TZif" struct tzhead { - char tzh_magic[4]; /* TZ_MAGIC */ - char tzh_version[1]; /* '\0' or '2' or '3' as of 2013 */ - char tzh_reserved[15]; /* reserved; must be zero */ - char tzh_ttisutcnt[4]; /* coded number of trans. time flags */ - char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ - char tzh_leapcnt[4]; /* coded number of leap seconds */ - char tzh_timecnt[4]; /* coded number of transition times */ - char tzh_typecnt[4]; /* coded number of local time types */ - char tzh_charcnt[4]; /* coded number of abbr. chars */ + char tzh_magic[4]; /* TZ_MAGIC */ + char tzh_version[1]; /* '\0' or '2' or '3' as of 2013 */ + char tzh_reserved[15]; /* reserved; must be zero */ + char tzh_ttisutcnt[4]; /* coded number of trans. time flags */ + char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ + char tzh_leapcnt[4]; /* coded number of leap seconds */ + char tzh_timecnt[4]; /* coded number of transition times */ + char tzh_typecnt[4]; /* coded number of local time types */ + char tzh_charcnt[4]; /* coded number of abbr. chars */ }; /* @@ -103,21 +102,21 @@ struct tzhead { */ #ifndef TZ_MAX_TIMES -#define TZ_MAX_TIMES 2000 +#define TZ_MAX_TIMES 2000 #endif /* !defined TZ_MAX_TIMES */ #ifndef TZ_MAX_TYPES /* This must be at least 17 for Europe/Samara and Europe/Vilnius. */ -#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ -#endif /* !defined TZ_MAX_TYPES */ +#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ +#endif /* !defined TZ_MAX_TYPES */ #ifndef TZ_MAX_CHARS -#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ - /* (limited by what unsigned chars can hold) */ -#endif /* !defined TZ_MAX_CHARS */ +#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ + /* (limited by what unsigned chars can hold) */ +#endif /* !defined TZ_MAX_CHARS */ #ifndef TZ_MAX_LEAPS -#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ -#endif /* !defined TZ_MAX_LEAPS */ +#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ +#endif /* !defined TZ_MAX_LEAPS */ #endif /* !defined TZFILE_H */ diff --git a/absl/time/internal/cctz/src/zone_info_source.cc b/absl/time/internal/cctz/src/zone_info_source.cc index d5758efa..619ac1fb 100644 --- a/absl/time/internal/cctz/src/zone_info_source.cc +++ b/absl/time/internal/cctz/src/zone_info_source.cc @@ -14,7 +14,10 @@ #include "absl/time/internal/cctz/include/cctz/zone_info_source.h" +#include "absl/base/config.h" + namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { @@ -24,9 +27,11 @@ std::string ZoneInfoSource::Version() const { return std::string(); } } // namespace cctz } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl namespace absl { +ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz_extension { @@ -36,8 +41,9 @@ namespace { // defers to the fallback factory. std::unique_ptr DefaultFactory( const std::string& name, - const std::function( - const std::string& name)>& fallback_factory) { + const std::function< + std::unique_ptr( + const std::string& name)>& fallback_factory) { return fallback_factory(name); } @@ -53,8 +59,8 @@ std::unique_ptr DefaultFactory( // Windows linker cannot handle that. Nor does the MinGW compiler know how to // pass "#pragma comment(linker, ...)" to the Windows linker. #if (__has_attribute(weak) || defined(__GNUC__)) && !defined(__MINGW32__) -ZoneInfoSourceFactory zone_info_source_factory - __attribute__((weak)) = DefaultFactory; +ZoneInfoSourceFactory zone_info_source_factory __attribute__((weak)) = + DefaultFactory; #elif defined(_MSC_VER) && !defined(__MINGW32__) && !defined(_LIBCPP_VERSION) extern ZoneInfoSourceFactory zone_info_source_factory; extern ZoneInfoSourceFactory default_factory; @@ -77,4 +83,5 @@ ZoneInfoSourceFactory zone_info_source_factory = DefaultFactory; } // namespace cctz_extension } // namespace time_internal +ABSL_NAMESPACE_END } // namespace absl -- cgit v1.2.3 From a877af1f294be0866eab2676effd46687acb3b11 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Tue, 10 Mar 2020 09:28:06 -0700 Subject: Export of internal Abseil changes -- ea0cfebeb69b25bec343652bbe1a203f5476c51a by Mark Barolak : Change "std::string" to "string" in places where a "std::" qualification was incorrectly inserted by automation. PiperOrigin-RevId: 300108520 GitOrigin-RevId: ea0cfebeb69b25bec343652bbe1a203f5476c51a Change-Id: Ie3621e63a6ebad67b9fe56a3ebe33e1d50dac602 --- CMakeLists.txt | 2 +- absl/container/btree_test.cc | 4 +- absl/container/inlined_vector_benchmark.cc | 2 +- absl/container/inlined_vector_test.cc | 6 +-- absl/container/internal/btree.h | 2 +- absl/container/internal/compressed_tuple_test.cc | 4 +- absl/container/internal/raw_hash_set_test.cc | 6 +-- absl/debugging/failure_signal_handler.h | 2 +- absl/debugging/internal/demangle.cc | 6 +-- absl/debugging/leak_check_fail_test.cc | 4 +- absl/debugging/leak_check_test.cc | 6 +-- absl/debugging/symbolize_elf.inc | 2 +- absl/flags/internal/commandlineflag.h | 6 +-- absl/flags/internal/flag.cc | 2 +- absl/flags/internal/flag.h | 2 +- absl/flags/internal/usage.cc | 8 ++-- absl/flags/marshalling.cc | 2 +- absl/flags/parse.cc | 6 +-- absl/flags/usage_config.h | 2 +- absl/hash/hash_test.cc | 4 +- absl/random/bernoulli_distribution_test.cc | 4 +- absl/random/internal/nanobenchmark.cc | 2 +- absl/random/uniform_int_distribution_test.cc | 2 +- absl/status/status.cc | 2 +- absl/status/status.h | 4 +- absl/strings/charconv.cc | 4 +- absl/strings/charconv_benchmark.cc | 2 +- absl/strings/cord.h | 4 +- absl/strings/cord_test.cc | 8 ++-- absl/strings/escaping.cc | 18 ++++----- absl/strings/escaping_test.cc | 6 +-- absl/strings/internal/char_map.h | 2 +- absl/strings/internal/charconv_bigint.cc | 2 +- absl/strings/internal/charconv_bigint.h | 4 +- absl/strings/internal/charconv_parse.cc | 4 +- absl/strings/internal/charconv_parse_test.cc | 2 +- absl/strings/internal/numbers_test_common.h | 2 +- absl/strings/internal/str_format/bind.h | 4 +- absl/strings/internal/str_format/parser.h | 4 +- absl/strings/numbers_test.cc | 4 +- absl/strings/str_cat.h | 2 +- absl/strings/str_cat_benchmark.cc | 2 +- absl/strings/str_cat_test.cc | 6 +-- absl/strings/str_format_test.cc | 4 +- absl/strings/str_join_test.cc | 8 ++-- absl/strings/str_replace_benchmark.cc | 2 +- absl/strings/str_replace_test.cc | 12 +++--- absl/strings/str_split.cc | 4 +- absl/strings/str_split_test.cc | 32 +++++++-------- absl/strings/string_view.h | 14 +++---- absl/strings/string_view_test.cc | 28 ++++++------- absl/strings/substitute.cc | 10 ++--- absl/strings/substitute.h | 46 +++++++++++----------- absl/strings/substitute_test.cc | 8 ++-- absl/synchronization/mutex.cc | 2 +- absl/time/civil_time.cc | 6 +-- absl/time/duration.cc | 4 +- absl/time/format_test.cc | 6 +-- absl/time/internal/cctz/include/cctz/time_zone.h | 2 +- .../internal/cctz/include/cctz/zone_info_source.h | 2 +- absl/time/internal/cctz/src/time_zone_format.cc | 4 +- .../internal/cctz/src/time_zone_format_test.cc | 2 +- absl/time/internal/cctz/src/time_zone_impl.h | 2 +- absl/time/internal/cctz/src/time_zone_info.cc | 2 +- .../internal/cctz/src/time_zone_lookup_test.cc | 2 +- absl/time/internal/cctz/src/tzfile.h | 4 +- absl/time/time_zone_test.cc | 2 +- absl/types/variant_test.cc | 2 +- 68 files changed, 191 insertions(+), 191 deletions(-) (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/CMakeLists.txt b/CMakeLists.txt index 74b5cd9d..e94dcd3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ cmake_policy(SET CMP0025 NEW) # if command can use IN_LIST cmake_policy(SET CMP0057 NEW) -# Project version variables are the empty std::string if version is unspecified +# Project version variables are the empty string if version is unspecified cmake_policy(SET CMP0048 NEW) project(absl CXX) diff --git a/absl/container/btree_test.cc b/absl/container/btree_test.cc index da8e7082..7ccdf6a1 100644 --- a/absl/container/btree_test.cc +++ b/absl/container/btree_test.cc @@ -2132,11 +2132,11 @@ TEST(Btree, UserProvidedKeyCompareToComparators) { TEST(Btree, TryEmplaceBasicTest) { absl::btree_map m; - // Should construct a std::string from the literal. + // Should construct a string from the literal. m.try_emplace(1, "one"); EXPECT_EQ(1, m.size()); - // Try other std::string constructors and const lvalue key. + // Try other string constructors and const lvalue key. const int key(42); m.try_emplace(key, 3, 'a'); m.try_emplace(2, std::string("two")); diff --git a/absl/container/inlined_vector_benchmark.cc b/absl/container/inlined_vector_benchmark.cc index 3f2b4ed2..b8dafe93 100644 --- a/absl/container/inlined_vector_benchmark.cc +++ b/absl/container/inlined_vector_benchmark.cc @@ -83,7 +83,7 @@ int GetNonShortStringOptimizationSize() { } ABSL_RAW_LOG( FATAL, - "Failed to find a std::string larger than the short std::string optimization"); + "Failed to find a string larger than the short string optimization"); return -1; } diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc index 2c9b0d0e..5965eac7 100644 --- a/absl/container/inlined_vector_test.cc +++ b/absl/container/inlined_vector_test.cc @@ -780,7 +780,7 @@ TEST(IntVec, Reserve) { TEST(StringVec, SelfRefPushBack) { std::vector std_v; absl::InlinedVector v; - const std::string s = "A quite long std::string to ensure heap."; + const std::string s = "A quite long string to ensure heap."; std_v.push_back(s); v.push_back(s); for (int i = 0; i < 20; ++i) { @@ -795,7 +795,7 @@ TEST(StringVec, SelfRefPushBack) { TEST(StringVec, SelfRefPushBackWithMove) { std::vector std_v; absl::InlinedVector v; - const std::string s = "A quite long std::string to ensure heap."; + const std::string s = "A quite long string to ensure heap."; std_v.push_back(s); v.push_back(s); for (int i = 0; i < 20; ++i) { @@ -808,7 +808,7 @@ TEST(StringVec, SelfRefPushBackWithMove) { } TEST(StringVec, SelfMove) { - const std::string s = "A quite long std::string to ensure heap."; + const std::string s = "A quite long string to ensure heap."; for (int len = 0; len < 20; len++) { SCOPED_TRACE(len); absl::InlinedVector v; diff --git a/absl/container/internal/btree.h b/absl/container/internal/btree.h index 301c3656..d986f81e 100644 --- a/absl/container/internal/btree.h +++ b/absl/container/internal/btree.h @@ -186,7 +186,7 @@ struct key_compare_to_adapter> { template struct common_params { - // If Compare is a common comparator for a std::string-like type, then we adapt it + // If Compare is a common comparator for a string-like type, then we adapt it // to use heterogeneous lookup and to be a key-compare-to comparator. using key_compare = typename key_compare_to_adapter::type; // A type which indicates if we have a key-compare-to functor or a plain old diff --git a/absl/container/internal/compressed_tuple_test.cc b/absl/container/internal/compressed_tuple_test.cc index 1dae12db..62a7483e 100644 --- a/absl/container/internal/compressed_tuple_test.cc +++ b/absl/container/internal/compressed_tuple_test.cc @@ -277,11 +277,11 @@ TEST(CompressedTupleTest, Nested) { TEST(CompressedTupleTest, Reference) { int i = 7; - std::string s = "Very long std::string that goes in the heap"; + std::string s = "Very long string that goes in the heap"; CompressedTuple x(i, i, s, s); // Sanity check. We should have not moved from `s` - EXPECT_EQ(s, "Very long std::string that goes in the heap"); + EXPECT_EQ(s, "Very long string that goes in the heap"); EXPECT_EQ(x.get<0>(), x.get<1>()); EXPECT_NE(&x.get<0>(), &x.get<1>()); diff --git a/absl/container/internal/raw_hash_set_test.cc b/absl/container/internal/raw_hash_set_test.cc index a96ae68a..2fc85591 100644 --- a/absl/container/internal/raw_hash_set_test.cc +++ b/absl/container/internal/raw_hash_set_test.cc @@ -1666,9 +1666,9 @@ TEST(Nodes, EmptyNodeType) { } TEST(Nodes, ExtractInsert) { - constexpr char k0[] = "Very long std::string zero."; - constexpr char k1[] = "Very long std::string one."; - constexpr char k2[] = "Very long std::string two."; + constexpr char k0[] = "Very long string zero."; + constexpr char k1[] = "Very long string one."; + constexpr char k2[] = "Very long string two."; StringTable t = {{k0, ""}, {k1, ""}, {k2, ""}}; EXPECT_THAT(t, UnorderedElementsAre(Pair(k0, ""), Pair(k1, ""), Pair(k2, ""))); diff --git a/absl/debugging/failure_signal_handler.h b/absl/debugging/failure_signal_handler.h index f5a83962..0c0f585d 100644 --- a/absl/debugging/failure_signal_handler.h +++ b/absl/debugging/failure_signal_handler.h @@ -88,7 +88,7 @@ struct FailureSignalHandlerOptions { bool call_previous_handler = false; // If non-null, indicates a pointer to a callback function that will be called - // upon failure, with a std::string argument containing failure data. This function + // upon failure, with a string argument containing failure data. This function // may be used as a hook to write failure data to a secondary location, such // as a log file. This function may also be called with null data, as a hint // to flush any buffered data before the program may be terminated. Consider diff --git a/absl/debugging/internal/demangle.cc b/absl/debugging/internal/demangle.cc index fc615c3f..fc262e50 100644 --- a/absl/debugging/internal/demangle.cc +++ b/absl/debugging/internal/demangle.cc @@ -151,7 +151,7 @@ static const AbbrevPair kSubstitutionList[] = { // frame, so every byte counts. typedef struct { int mangled_idx; // Cursor of mangled name. - int out_cur_idx; // Cursor of output std::string. + int out_cur_idx; // Cursor of output string. int prev_name_idx; // For constructors/destructors. signed int prev_name_length : 16; // For constructors/destructors. signed int nest_level : 15; // For nested names. @@ -172,8 +172,8 @@ static_assert(sizeof(ParseState) == 4 * sizeof(int), // Only one copy of this exists for each call to Demangle, so the size of this // struct is nearly inconsequential. typedef struct { - const char *mangled_begin; // Beginning of input std::string. - char *out; // Beginning of output std::string. + const char *mangled_begin; // Beginning of input string. + char *out; // Beginning of output string. int out_end_idx; // One past last allowed output character. int recursion_depth; // For stack exhaustion prevention. int steps; // Cap how much work we'll do, regardless of depth. diff --git a/absl/debugging/leak_check_fail_test.cc b/absl/debugging/leak_check_fail_test.cc index 2887ceab..c49b81a9 100644 --- a/absl/debugging/leak_check_fail_test.cc +++ b/absl/debugging/leak_check_fail_test.cc @@ -25,7 +25,7 @@ TEST(LeakCheckTest, LeakMemory) { // failed exit code. char* foo = strdup("lsan should complain about this leaked string"); - ABSL_RAW_LOG(INFO, "Should detect leaked std::string %s", foo); + ABSL_RAW_LOG(INFO, "Should detect leaked string %s", foo); } TEST(LeakCheckTest, LeakMemoryAfterDisablerScope) { @@ -34,7 +34,7 @@ TEST(LeakCheckTest, LeakMemoryAfterDisablerScope) { // failed exit code. { absl::LeakCheckDisabler disabler; } char* foo = strdup("lsan should also complain about this leaked string"); - ABSL_RAW_LOG(INFO, "Re-enabled leak detection.Should detect leaked std::string %s", + ABSL_RAW_LOG(INFO, "Re-enabled leak detection.Should detect leaked string %s", foo); } diff --git a/absl/debugging/leak_check_test.cc b/absl/debugging/leak_check_test.cc index 93a7edd2..b5cc4874 100644 --- a/absl/debugging/leak_check_test.cc +++ b/absl/debugging/leak_check_test.cc @@ -30,13 +30,13 @@ TEST(LeakCheckTest, DetectLeakSanitizer) { TEST(LeakCheckTest, IgnoreLeakSuppressesLeakedMemoryErrors) { auto foo = absl::IgnoreLeak(new std::string("some ignored leaked string")); - ABSL_RAW_LOG(INFO, "Ignoring leaked std::string %s", foo->c_str()); + ABSL_RAW_LOG(INFO, "Ignoring leaked string %s", foo->c_str()); } TEST(LeakCheckTest, LeakCheckDisablerIgnoresLeak) { absl::LeakCheckDisabler disabler; - auto foo = new std::string("some std::string leaked while checks are disabled"); - ABSL_RAW_LOG(INFO, "Ignoring leaked std::string %s", foo->c_str()); + auto foo = new std::string("some string leaked while checks are disabled"); + ABSL_RAW_LOG(INFO, "Ignoring leaked string %s", foo->c_str()); } } // namespace diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc index c371635f..fe1d36ee 100644 --- a/absl/debugging/symbolize_elf.inc +++ b/absl/debugging/symbolize_elf.inc @@ -1402,7 +1402,7 @@ bool RegisterFileMappingHint(const void *start, const void *end, uint64_t offset if (g_num_file_mapping_hints >= kMaxFileMappingHints) { ret = false; } else { - // TODO(ckennelly): Move this into a std::string copy routine. + // TODO(ckennelly): Move this into a string copy routine. int len = strlen(filename); char *dst = static_cast( base_internal::LowLevelAlloc::AllocWithArena(len + 1, SigSafeArena())); diff --git a/absl/flags/internal/commandlineflag.h b/absl/flags/internal/commandlineflag.h index e91ddde6..9a740d57 100644 --- a/absl/flags/internal/commandlineflag.h +++ b/absl/flags/internal/commandlineflag.h @@ -141,7 +141,7 @@ class CommandLineFlag { // Returns name of the file where this flag is defined. virtual std::string Filename() const = 0; // Returns name of the flag's value type for some built-in types or empty - // std::string. + // string. virtual absl::string_view Typename() const = 0; // Returns help message associated with this flag. virtual std::string Help() const = 0; @@ -163,7 +163,7 @@ class CommandLineFlag { // or nullptr if flag does not support saving and restoring a state. virtual std::unique_ptr SaveState() = 0; - // Sets the value of the flag based on specified std::string `value`. If the flag + // Sets the value of the flag based on specified string `value`. If the flag // was successfully set to new value, it returns true. Otherwise, sets `error` // to indicate the error, leaves the flag unchanged, and returns false. There // are three ways to set the flag's value: @@ -176,7 +176,7 @@ class CommandLineFlag { flags_internal::ValueSource source, std::string* error) = 0; - // Checks that flags default value can be converted to std::string and back to the + // Checks that flags default value can be converted to string and back to the // flag's value type. virtual void CheckDefaultValueParsingRoundtrip() const = 0; diff --git a/absl/flags/internal/flag.cc b/absl/flags/internal/flag.cc index a944e16e..a12fe7c5 100644 --- a/absl/flags/internal/flag.cc +++ b/absl/flags/internal/flag.cc @@ -408,7 +408,7 @@ void FlagImpl::CheckDefaultValueParsingRoundtrip() const { ABSL_INTERNAL_LOG( FATAL, absl::StrCat("Flag ", Name(), " (from ", Filename(), - "): std::string form of default value '", v, + "): string form of default value '", v, "' could not be parsed; error=", error)); } diff --git a/absl/flags/internal/flag.h b/absl/flags/internal/flag.h index 307b7377..344e31f6 100644 --- a/absl/flags/internal/flag.h +++ b/absl/flags/internal/flag.h @@ -439,7 +439,7 @@ class FlagImpl { ABSL_EXCLUSIVE_LOCKS_REQUIRED(*DataGuard()); // Flag initialization called via absl::call_once. void Init(); - // Attempts to parse supplied `value` std::string. If parsing is successful, + // Attempts to parse supplied `value` string. If parsing is successful, // returns new value. Otherwise returns nullptr. std::unique_ptr TryParse(absl::string_view value, std::string* err) const diff --git a/absl/flags/internal/usage.cc b/absl/flags/internal/usage.cc index ff907161..a9a5cba9 100644 --- a/absl/flags/internal/usage.cc +++ b/absl/flags/internal/usage.cc @@ -134,14 +134,14 @@ class FlagHelpPrettyPrinter { first_line_(true) {} void Write(absl::string_view str, bool wrap_line = false) { - // Empty std::string - do nothing. + // Empty string - do nothing. if (str.empty()) return; std::vector tokens; if (wrap_line) { for (auto line : absl::StrSplit(str, absl::ByAnyChar("\n\r"))) { if (!tokens.empty()) { - // Keep line separators in the input std::string. + // Keep line separators in the input string. tokens.push_back("\n"); } for (auto token : @@ -156,13 +156,13 @@ class FlagHelpPrettyPrinter { for (auto token : tokens) { bool new_line = (line_len_ == 0); - // Respect line separators in the input std::string. + // Respect line separators in the input string. if (token == "\n") { EndLine(); continue; } - // Write the token, ending the std::string first if necessary/possible. + // Write the token, ending the string first if necessary/possible. if (!new_line && (line_len_ + token.size() >= max_line_len_)) { EndLine(); new_line = true; diff --git a/absl/flags/marshalling.cc b/absl/flags/marshalling.cc index 6f2ddda8..09baae88 100644 --- a/absl/flags/marshalling.cc +++ b/absl/flags/marshalling.cc @@ -172,7 +172,7 @@ std::string Unparse(long long v) { return absl::StrCat(v); } std::string Unparse(unsigned long long v) { return absl::StrCat(v); } template std::string UnparseFloatingPointVal(T v) { - // digits10 is guaranteed to roundtrip correctly in std::string -> value -> std::string + // digits10 is guaranteed to roundtrip correctly in string -> value -> string // conversions, but may not be enough to represent all the values correctly. std::string digit10_str = absl::StrFormat("%.*g", std::numeric_limits::digits10, v); diff --git a/absl/flags/parse.cc b/absl/flags/parse.cc index 812e4981..af5fb12d 100644 --- a/absl/flags/parse.cc +++ b/absl/flags/parse.cc @@ -533,10 +533,10 @@ std::tuple DeduceFlagValue(const CommandLineFlag& flag, curr_list->PopFront(); value = curr_list->Front(); - // Heuristic to detect the case where someone treats a std::string arg + // Heuristic to detect the case where someone treats a string arg // like a bool or just forgets to pass a value: // --my_string_var --foo=bar - // We look for a flag of std::string type, whose value begins with a + // We look for a flag of string type, whose value begins with a // dash and corresponds to known flag or standalone --. if (!value.empty() && value[0] == '-' && flag.IsOfType()) { auto maybe_flag_name = std::get<0>(SplitNameAndValue(value.substr(1))); @@ -646,7 +646,7 @@ std::vector ParseCommandLineImpl(int argc, char* argv[], // 60. Split the current argument on '=' to figure out the argument // name and value. If flag name is empty it means we've got "--". value - // can be empty either if there were no '=' in argument std::string at all or + // can be empty either if there were no '=' in argument string at all or // an argument looked like "--foo=". In a latter case is_empty_value is // true. absl::string_view flag_name; diff --git a/absl/flags/usage_config.h b/absl/flags/usage_config.h index 0ed7e1b4..96eecea2 100644 --- a/absl/flags/usage_config.h +++ b/absl/flags/usage_config.h @@ -90,7 +90,7 @@ struct FlagsUsageConfig { // program output. flags_internal::FlagKindFilter contains_helppackage_flags; - // Generates std::string containing program version. This is the std::string reported + // Generates string containing program version. This is the string reported // when user specifies --version in a command line. std::function version_string; diff --git a/absl/hash/hash_test.cc b/absl/hash/hash_test.cc index e55e0ca9..5e6a8b18 100644 --- a/absl/hash/hash_test.cc +++ b/absl/hash/hash_test.cc @@ -316,7 +316,7 @@ TEST(HashValueTest, Strings) { t(std::string(huge)), t(absl::string_view(huge)), // t(FlatCord(huge)), t(FragmentedCord(huge))))); - // Make sure that hashing a `const char*` does not use its std::string-value. + // Make sure that hashing a `const char*` does not use its string-value. EXPECT_NE(SpyHash(static_cast("ABC")), SpyHash(absl::string_view("ABC"))); } @@ -512,7 +512,7 @@ TEST(HashValueTest, CombinePiecewiseBuffer) { SCOPED_TRACE(big_buffer_size); std::string big_buffer; for (int i = 0; i < big_buffer_size; ++i) { - // Arbitrary std::string + // Arbitrary string big_buffer.push_back(32 + (i * (i / 3)) % 64); } auto big_buffer_hash = hash(PiecewiseHashTester(big_buffer)); diff --git a/absl/random/bernoulli_distribution_test.cc b/absl/random/bernoulli_distribution_test.cc index f2c3b99c..5581af50 100644 --- a/absl/random/bernoulli_distribution_test.cc +++ b/absl/random/bernoulli_distribution_test.cc @@ -131,7 +131,7 @@ TEST(BernoulliTest, StabilityTest) { 0x275b0dc7e0a18acfull, 0x36cebe0d2653682eull, 0x0361e9b23861596bull, }); - // Generate a std::string of '0' and '1' for the distribution output. + // Generate a string of '0' and '1' for the distribution output. auto generate = [&urbg](absl::bernoulli_distribution& dist) { std::string output; output.reserve(36); @@ -176,7 +176,7 @@ TEST(BernoulliTest, StabilityTest2) { 0xECDD4775619F1510ull, 0x13CCA830EB61BD96ull, 0x0334FE1EAA0363CFull, 0xB5735C904C70A239ull, 0xD59E9E0BCBAADE14ull, 0xEECC86BC60622CA7ull}); - // Generate a std::string of '0' and '1' for the distribution output. + // Generate a string of '0' and '1' for the distribution output. auto generate = [&urbg](absl::bernoulli_distribution& dist) { std::string output; output.reserve(13); diff --git a/absl/random/internal/nanobenchmark.cc b/absl/random/internal/nanobenchmark.cc index 8fee77fc..c9181813 100644 --- a/absl/random/internal/nanobenchmark.cc +++ b/absl/random/internal/nanobenchmark.cc @@ -101,7 +101,7 @@ std::string BrandString() { char brand_string[49]; uint32_t abcd[4]; - // Check if brand std::string is supported (it is on all reasonable Intel/AMD) + // Check if brand string is supported (it is on all reasonable Intel/AMD) Cpuid(0x80000000U, 0, abcd); if (abcd[0] < 0x80000004U) { return std::string(); diff --git a/absl/random/uniform_int_distribution_test.cc b/absl/random/uniform_int_distribution_test.cc index aacff88d..69537603 100644 --- a/absl/random/uniform_int_distribution_test.cc +++ b/absl/random/uniform_int_distribution_test.cc @@ -123,7 +123,7 @@ TYPED_TEST(UniformIntDistributionTest, ViolatesPreconditionsDeathTest) { absl::uniform_int_distribution dist(10, 1); auto x = dist(gen); - // Any value will generate a non-empty std::string. + // Any value will generate a non-empty string. EXPECT_FALSE(absl::StrCat(+x).empty()) << x; #endif // NDEBUG } diff --git a/absl/status/status.cc b/absl/status/status.cc index 52ecc0ef..6d57a6be 100644 --- a/absl/status/status.cc +++ b/absl/status/status.cc @@ -177,7 +177,7 @@ void Status::ForEachPayload( visitor(elem.type_url, elem.payload); #else // In debug mode invalidate the type url to prevent users from relying on - // this std::string lifetime. + // this string lifetime. // NOLINTNEXTLINE intentional extra conversion to force temporary. visitor(std::string(elem.type_url), elem.payload); diff --git a/absl/status/status.h b/absl/status/status.h index 9706d4ba..67ff988f 100644 --- a/absl/status/status.h +++ b/absl/status/status.h @@ -122,7 +122,7 @@ class ABSL_MUST_USE_RESULT Status final { // Returns the error message. Note: prefer ToString() for debug logging. // This message rarely describes the error code. It is not unusual for the - // error message to be the empty std::string. + // error message to be the empty string. absl::string_view message() const; friend bool operator==(const Status&, const Status&); @@ -231,7 +231,7 @@ class ABSL_MUST_USE_RESULT Status final { static uintptr_t PointerToRep(status_internal::StatusRep* r); static status_internal::StatusRep* RepToPointer(uintptr_t r); - // Returns std::string for non-ok Status. + // Returns string for non-ok Status. std::string ToStringSlow() const; // Status supports two different representations. diff --git a/absl/strings/charconv.cc b/absl/strings/charconv.cc index bdba768d..3613a652 100644 --- a/absl/strings/charconv.cc +++ b/absl/strings/charconv.cc @@ -619,10 +619,10 @@ from_chars_result FromCharsImpl(const char* first, const char* last, // Either we failed to parse a hex float after the "0x", or we read // "0xinf" or "0xnan" which we don't want to match. // - // However, a std::string that begins with "0x" also begins with "0", which + // However, a string that begins with "0x" also begins with "0", which // is normally a valid match for the number zero. So we want these // strings to match zero unless fmt_flags is `scientific`. (This flag - // means an exponent is required, which the std::string "0" does not have.) + // means an exponent is required, which the string "0" does not have.) if (fmt_flags == chars_format::scientific) { result.ec = std::errc::invalid_argument; } else { diff --git a/absl/strings/charconv_benchmark.cc b/absl/strings/charconv_benchmark.cc index 644b2abd..e8c7371d 100644 --- a/absl/strings/charconv_benchmark.cc +++ b/absl/strings/charconv_benchmark.cc @@ -132,7 +132,7 @@ BENCHMARK(BM_Absl_HugeMantissa); std::string MakeHardCase(int length) { // The number 1.1521...e-297 is exactly halfway between 12345 * 2**-1000 and // the next larger representable number. The digits of this number are in - // the std::string below. + // the string below. const std::string digits = "1." "152113937042223790993097181572444900347587985074226836242307364987727724" diff --git a/absl/strings/cord.h b/absl/strings/cord.h index 29ed7f75..3941f19c 100644 --- a/absl/strings/cord.h +++ b/absl/strings/cord.h @@ -278,7 +278,7 @@ class Cord { // Copies the contents from `src` to `*dst`. // - // This function optimizes the case of reusing the destination std::string since it + // This function optimizes the case of reusing the destination string since it // can reuse previously allocated capacity. However, this function does not // guarantee that pointers previously returned by `dst->data()` remain valid // even if `*dst` had enough capacity to hold `src`. If `*dst` is a new @@ -603,7 +603,7 @@ class Cord { } void CopyTo(std::string* dst) const { // memcpy is much faster when operating on a known size. On most supported - // platforms, the small std::string optimization is large enough that resizing + // platforms, the small string optimization is large enough that resizing // to 15 bytes does not cause a memory allocation. absl::strings_internal::STLStringResizeUninitialized(dst, sizeof(data_) - 1); diff --git a/absl/strings/cord_test.cc b/absl/strings/cord_test.cc index a683cc4b..d6e091f8 100644 --- a/absl/strings/cord_test.cc +++ b/absl/strings/cord_test.cc @@ -174,7 +174,7 @@ TEST(Cord, AllFlatSizes) { using absl::strings_internal::CordTestAccess; for (size_t s = 0; s < CordTestAccess::MaxFlatLength(); s++) { - // Make a std::string of length s. + // Make a string of length s. std::string src; while (src.size() < s) { src.push_back('a' + (src.size() % 26)); @@ -409,7 +409,7 @@ static void VerifyCopyToString(const absl::Cord& cord) { if (cord.size() <= kInitialLength) { EXPECT_EQ(has_initial_contents.data(), address_before_copy) - << "CopyCordToString allocated new std::string storage; " + << "CopyCordToString allocated new string storage; " "has_initial_contents = \"" << has_initial_contents << "\""; } @@ -856,7 +856,7 @@ TEST(Cord, CompareAfterAssign) { } // Test CompareTo() and ComparePrefix() against string and substring -// comparison methods from std::basic_string. +// comparison methods from basic_string. static void TestCompare(const absl::Cord& c, const absl::Cord& d, RandomEngine* rng) { typedef std::basic_string ustring; @@ -912,7 +912,7 @@ void CompareOperators() { EXPECT_TRUE(a == a); // For pointer type (i.e. `const char*`), operator== compares the address - // instead of the std::string, so `a == const char*("a")` isn't necessarily true. + // instead of the string, so `a == const char*("a")` isn't necessarily true. EXPECT_TRUE(std::is_pointer::value || a == T1("a")); EXPECT_TRUE(std::is_pointer::value || a == T2("a")); EXPECT_FALSE(a == b); diff --git a/absl/strings/escaping.cc b/absl/strings/escaping.cc index 7adc1b65..9fceeef0 100644 --- a/absl/strings/escaping.cc +++ b/absl/strings/escaping.cc @@ -450,7 +450,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest, // The GET_INPUT macro gets the next input character, skipping // over any whitespace, and stopping when we reach the end of the - // std::string or when we read any non-data character. The arguments are + // string or when we read any non-data character. The arguments are // an arbitrary identifier (used as a label for goto) and the number // of data bytes that must remain in the input to avoid aborting the // loop. @@ -473,18 +473,18 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest, if (dest) { // This loop consumes 4 input bytes and produces 3 output bytes // per iteration. We can't know at the start that there is enough - // data left in the std::string for a full iteration, so the loop may + // data left in the string for a full iteration, so the loop may // break out in the middle; if so 'state' will be set to the // number of input bytes read. while (szsrc >= 4) { // We'll start by optimistically assuming that the next four - // bytes of the std::string (src[0..3]) are four good data bytes + // bytes of the string (src[0..3]) are four good data bytes // (that is, no nulls, whitespace, padding chars, or illegal // chars). We need to test src[0..2] for nulls individually // before constructing temp to preserve the property that we - // never read past a null in the std::string (no matter how long - // szsrc claims the std::string is). + // never read past a null in the string (no matter how long + // szsrc claims the string is). if (!src[0] || !src[1] || !src[2] || ((temp = ((unsigned(unbase64[src[0]]) << 18) | @@ -509,7 +509,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest, temp = (temp << 6) | decode; } else { // We really did have four good data bytes, so advance four - // characters in the std::string. + // characters in the string. szsrc -= 4; src += 4; @@ -644,7 +644,7 @@ bool Base64UnescapeInternal(const char* src_param, size_t szsrc, char* dest, state); } - // The remainder of the std::string should be all whitespace, mixed with + // The remainder of the string should be all whitespace, mixed with // exactly 0 equals signs, or exactly 'expected_equals' equals // signs. (Always accepting 0 equals signs is an Abseil extension // not covered in the RFC, as is accepting dot as the pad character.) @@ -771,7 +771,7 @@ constexpr char kWebSafeBase64Chars[] = template bool Base64UnescapeInternal(const char* src, size_t slen, String* dest, const signed char* unbase64) { - // Determine the size of the output std::string. Base64 encodes every 3 bytes into + // Determine the size of the output string. Base64 encodes every 3 bytes into // 4 characters. any leftover chars are added directly for good measure. // This is documented in the base64 RFC: http://tools.ietf.org/html/rfc3548 const size_t dest_len = 3 * (slen / 4) + (slen % 4); @@ -779,7 +779,7 @@ bool Base64UnescapeInternal(const char* src, size_t slen, String* dest, strings_internal::STLStringResizeUninitialized(dest, dest_len); // We are getting the destination buffer by getting the beginning of the - // std::string and converting it into a char *. + // string and converting it into a char *. size_t len; const bool ok = Base64UnescapeInternal(src, slen, &(*dest)[0], dest_len, unbase64, &len); diff --git a/absl/strings/escaping_test.cc b/absl/strings/escaping_test.cc index 1967975b..45671a0e 100644 --- a/absl/strings/escaping_test.cc +++ b/absl/strings/escaping_test.cc @@ -300,7 +300,7 @@ static struct { absl::string_view plaintext; absl::string_view cyphertext; } const base64_tests[] = { - // Empty std::string. + // Empty string. {{"", 0}, {"", 0}}, {{nullptr, 0}, {"", 0}}, // if length is zero, plaintext ptr must be ignored! @@ -586,7 +586,7 @@ void TestEscapeAndUnescape() { EXPECT_EQ(encoded, websafe); EXPECT_EQ(absl::WebSafeBase64Escape(tc.plaintext), websafe); - // Let's try the std::string version of the decoder + // Let's try the string version of the decoder decoded = "this junk should be ignored"; EXPECT_TRUE(absl::WebSafeBase64Unescape(websafe, &decoded)); EXPECT_EQ(decoded, tc.plaintext); @@ -625,7 +625,7 @@ TEST(Base64, DISABLED_HugeData) { std::string escaped; absl::Base64Escape(huge, &escaped); - // Generates the std::string that should match a base64 encoded "xxx..." std::string. + // Generates the string that should match a base64 encoded "xxx..." string. // "xxx" in base64 is "eHh4". std::string expected_encoding; expected_encoding.reserve(kSize / 3 * 4); diff --git a/absl/strings/internal/char_map.h b/absl/strings/internal/char_map.h index a76e6036..61484de0 100644 --- a/absl/strings/internal/char_map.h +++ b/absl/strings/internal/char_map.h @@ -72,7 +72,7 @@ class Charmap { CharMaskForWord(x, 2), CharMaskForWord(x, 3)); } - // Containing all the chars in the C-std::string 's'. + // Containing all the chars in the C-string 's'. // Note that this is expensively recursive because of the C++11 constexpr // formulation. Use only in constexpr initializers. static constexpr Charmap FromString(const char* s) { diff --git a/absl/strings/internal/charconv_bigint.cc b/absl/strings/internal/charconv_bigint.cc index 66f33e72..ebf8c079 100644 --- a/absl/strings/internal/charconv_bigint.cc +++ b/absl/strings/internal/charconv_bigint.cc @@ -208,7 +208,7 @@ int BigUnsigned::ReadDigits(const char* begin, const char* end, ++dropped_digits; } if (begin < end && *std::prev(end) == '.') { - // If the std::string ends in '.', either before or after dropping zeroes, then + // If the string ends in '.', either before or after dropping zeroes, then // drop the decimal point and look for more digits to drop. dropped_digits = 0; --end; diff --git a/absl/strings/internal/charconv_bigint.h b/absl/strings/internal/charconv_bigint.h index 999e9ae3..8f702976 100644 --- a/absl/strings/internal/charconv_bigint.h +++ b/absl/strings/internal/charconv_bigint.h @@ -66,7 +66,7 @@ class BigUnsigned { static_cast(v >> 32)} {} // Constructs a BigUnsigned from the given string_view containing a decimal - // value. If the input std::string is not a decimal integer, constructs a 0 + // value. If the input string is not a decimal integer, constructs a 0 // instead. explicit BigUnsigned(absl::string_view sv) : size_(0), words_{} { // Check for valid input, returning a 0 otherwise. This is reasonable @@ -210,7 +210,7 @@ class BigUnsigned { return words_[index]; } - // Returns this integer as a decimal std::string. This is not used in the decimal- + // Returns this integer as a decimal string. This is not used in the decimal- // to-binary conversion; it is intended to aid in testing. std::string ToString() const; diff --git a/absl/strings/internal/charconv_parse.cc b/absl/strings/internal/charconv_parse.cc index d9a57a78..fd6d9480 100644 --- a/absl/strings/internal/charconv_parse.cc +++ b/absl/strings/internal/charconv_parse.cc @@ -302,7 +302,7 @@ bool ParseInfinityOrNan(const char* begin, const char* end, switch (*begin) { case 'i': case 'I': { - // An infinity std::string consists of the characters "inf" or "infinity", + // An infinity string consists of the characters "inf" or "infinity", // case insensitive. if (strings_internal::memcasecmp(begin + 1, "nf", 2) != 0) { return false; @@ -326,7 +326,7 @@ bool ParseInfinityOrNan(const char* begin, const char* end, } out->type = strings_internal::FloatType::kNan; out->end = begin + 3; - // NaN is allowed to be followed by a parenthesized std::string, consisting of + // NaN is allowed to be followed by a parenthesized string, consisting of // only the characters [a-zA-Z0-9_]. Match that if it's present. begin += 3; if (begin < end && *begin == '(') { diff --git a/absl/strings/internal/charconv_parse_test.cc b/absl/strings/internal/charconv_parse_test.cc index 9511c987..bc2d1118 100644 --- a/absl/strings/internal/charconv_parse_test.cc +++ b/absl/strings/internal/charconv_parse_test.cc @@ -63,7 +63,7 @@ void ExpectParsedFloat(std::string s, absl::chars_format format_flags, } const std::string::size_type expected_characters_matched = s.find('$'); ABSL_RAW_CHECK(expected_characters_matched != std::string::npos, - "Input std::string must contain $"); + "Input string must contain $"); s.replace(expected_characters_matched, 1, ""); ParsedFloat parsed = diff --git a/absl/strings/internal/numbers_test_common.h b/absl/strings/internal/numbers_test_common.h index 1a1e50c4..eaa88a88 100644 --- a/absl/strings/internal/numbers_test_common.h +++ b/absl/strings/internal/numbers_test_common.h @@ -170,7 +170,7 @@ inline const std::array& strtouint64_test_cases() { {"0x1234", true, 16, 0x1234}, - // Base-10 std::string version. + // Base-10 string version. {"1234", true, 0, 1234}, {nullptr, false, 0, 0}, }}; diff --git a/absl/strings/internal/str_format/bind.h b/absl/strings/internal/str_format/bind.h index cf41b197..ee4475e0 100644 --- a/absl/strings/internal/str_format/bind.h +++ b/absl/strings/internal/str_format/bind.h @@ -76,11 +76,11 @@ class FormatSpecTemplate public: #ifdef ABSL_INTERNAL_ENABLE_FORMAT_CHECKER - // Honeypot overload for when the std::string is not constexpr. + // Honeypot overload for when the string is not constexpr. // We use the 'unavailable' attribute to give a better compiler error than // just 'method is deleted'. FormatSpecTemplate(...) // NOLINT - __attribute__((unavailable("Format std::string is not constexpr."))); + __attribute__((unavailable("Format string is not constexpr."))); // Honeypot overload for when the format is constexpr and invalid. // We use the 'unavailable' attribute to give a better compiler error than diff --git a/absl/strings/internal/str_format/parser.h b/absl/strings/internal/str_format/parser.h index 45c90d1d..7d966517 100644 --- a/absl/strings/internal/str_format/parser.h +++ b/absl/strings/internal/str_format/parser.h @@ -143,7 +143,7 @@ bool ParseFormatString(string_view src, Consumer consumer) { auto tag = GetTagForChar(percent[1]); if (tag.is_conv()) { if (ABSL_PREDICT_FALSE(next_arg < 0)) { - // This indicates an error in the format std::string. + // This indicates an error in the format string. // The only way to get `next_arg < 0` here is to have a positional // argument first which sets next_arg to -1 and then a non-positional // argument. @@ -287,7 +287,7 @@ class ExtendedParsedFormat : public str_format_internal::ParsedFormatBase { #ifdef ABSL_INTERNAL_ENABLE_FORMAT_CHECKER __attribute__(( enable_if(str_format_internal::EnsureConstexpr(format), - "Format std::string is not constexpr."), + "Format string is not constexpr."), enable_if(str_format_internal::ValidFormatImpl(format), "Format specified does not match the template arguments."))) #endif // ABSL_INTERNAL_ENABLE_FORMAT_CHECKER diff --git a/absl/strings/numbers_test.cc b/absl/strings/numbers_test.cc index 68229b15..bd4e1162 100644 --- a/absl/strings/numbers_test.cc +++ b/absl/strings/numbers_test.cc @@ -481,7 +481,7 @@ TEST(stringtest, safe_strto32_base) { EXPECT_TRUE(safe_strto32_base(std::string("0x1234"), &value, 16)); EXPECT_EQ(0x1234, value); - // Base-10 std::string version. + // Base-10 string version. EXPECT_TRUE(safe_strto32_base("1234", &value, 10)); EXPECT_EQ(1234, value); } @@ -622,7 +622,7 @@ TEST(stringtest, safe_strto64_base) { EXPECT_TRUE(safe_strto64_base(std::string("0x1234"), &value, 16)); EXPECT_EQ(0x1234, value); - // Base-10 std::string version. + // Base-10 string version. EXPECT_TRUE(safe_strto64_base("1234", &value, 10)); EXPECT_EQ(1234, value); } diff --git a/absl/strings/str_cat.h b/absl/strings/str_cat.h index 292fa235..a8a85c73 100644 --- a/absl/strings/str_cat.h +++ b/absl/strings/str_cat.h @@ -253,7 +253,7 @@ class AlphaNum { const std::basic_string, Allocator>& str) : piece_(str) {} - // Use std::string literals ":" instead of character literals ':'. + // Use string literals ":" instead of character literals ':'. AlphaNum(char c) = delete; // NOLINT(runtime/explicit) AlphaNum(const AlphaNum&) = delete; diff --git a/absl/strings/str_cat_benchmark.cc b/absl/strings/str_cat_benchmark.cc index 14c63b3f..ee4ad112 100644 --- a/absl/strings/str_cat_benchmark.cc +++ b/absl/strings/str_cat_benchmark.cc @@ -23,7 +23,7 @@ namespace { const char kStringOne[] = "Once Upon A Time, "; -const char kStringTwo[] = "There was a std::string benchmark"; +const char kStringTwo[] = "There was a string benchmark"; // We want to include negative numbers in the benchmark, so this function // is used to count 0, 1, -1, 2, -2, 3, -3, ... diff --git a/absl/strings/str_cat_test.cc b/absl/strings/str_cat_test.cc index be39880b..f3770dc0 100644 --- a/absl/strings/str_cat_test.cc +++ b/absl/strings/str_cat_test.cc @@ -162,7 +162,7 @@ TEST(StrCat, Basics) { EXPECT_EQ(result, "12345678910, 10987654321!"); std::string one = - "1"; // Actually, it's the size of this std::string that we want; a + "1"; // Actually, it's the size of this string that we want; a // 64-bit build distinguishes between size_t and uint64_t, // even though they're both unsigned 64-bit values. result = absl::StrCat("And a ", one.size(), " and a ", @@ -375,7 +375,7 @@ TEST(StrAppend, Basics) { EXPECT_EQ(result.substr(old_size), "12345678910, 10987654321!"); std::string one = - "1"; // Actually, it's the size of this std::string that we want; a + "1"; // Actually, it's the size of this string that we want; a // 64-bit build distinguishes between size_t and uint64_t, // even though they're both unsigned 64-bit values. old_size = result.size(); @@ -463,7 +463,7 @@ TEST(StrAppend, CornerCases) { } TEST(StrAppend, CornerCasesNonEmptyAppend) { - for (std::string result : {"hello", "a std::string too long to fit in the SSO"}) { + for (std::string result : {"hello", "a string too long to fit in the SSO"}) { const std::string expected = result; absl::StrAppend(&result, ""); EXPECT_EQ(result, expected); diff --git a/absl/strings/str_format_test.cc b/absl/strings/str_format_test.cc index acbdbf4a..554dca72 100644 --- a/absl/strings/str_format_test.cc +++ b/absl/strings/str_format_test.cc @@ -242,7 +242,7 @@ class TempFile { std::FILE* file() const { return file_; } - // Read the file into a std::string. + // Read the file into a string. std::string ReadFile() { std::fseek(file_, 0, SEEK_END); int size = std::ftell(file_); @@ -345,7 +345,7 @@ TEST(StrFormat, BehavesAsDocumented) { EXPECT_EQ(StrFormat("%c", int{'a'}), "a"); EXPECT_EQ(StrFormat("%c", long{'a'}), "a"); // NOLINT EXPECT_EQ(StrFormat("%c", uint64_t{'a'}), "a"); - // "s" - std::string Eg: "C" -> "C", std::string("C++") -> "C++" + // "s" - string Eg: "C" -> "C", std::string("C++") -> "C++" // Formats std::string, char*, string_view, and Cord. EXPECT_EQ(StrFormat("%s", "C"), "C"); EXPECT_EQ(StrFormat("%s", std::string("C++")), "C++"); diff --git a/absl/strings/str_join_test.cc b/absl/strings/str_join_test.cc index 921d9c2b..2be6256e 100644 --- a/absl/strings/str_join_test.cc +++ b/absl/strings/str_join_test.cc @@ -134,26 +134,26 @@ TEST(StrJoin, APIExamples) { // { - // Empty range yields an empty std::string. + // Empty range yields an empty string. std::vector v; EXPECT_EQ("", absl::StrJoin(v, "-")); } { - // A range of 1 element gives a std::string with that element but no + // A range of 1 element gives a string with that element but no // separator. std::vector v = {"foo"}; EXPECT_EQ("foo", absl::StrJoin(v, "-")); } { - // A range with a single empty std::string element + // A range with a single empty string element std::vector v = {""}; EXPECT_EQ("", absl::StrJoin(v, "-")); } { - // A range with 2 elements, one of which is an empty std::string + // A range with 2 elements, one of which is an empty string std::vector v = {"a", ""}; EXPECT_EQ("a-", absl::StrJoin(v, "-")); } diff --git a/absl/strings/str_replace_benchmark.cc b/absl/strings/str_replace_benchmark.cc index 95b2dc10..01331da2 100644 --- a/absl/strings/str_replace_benchmark.cc +++ b/absl/strings/str_replace_benchmark.cc @@ -62,7 +62,7 @@ void SetUpStrings() { } } // big_string->resize(50); - // OK, we've set up the std::string, now let's set up expectations - first by + // OK, we've set up the string, now let's set up expectations - first by // just replacing "the" with "box" after_replacing_the = new std::string(*big_string); for (size_t pos = 0; diff --git a/absl/strings/str_replace_test.cc b/absl/strings/str_replace_test.cc index 1ca23aff..9d8c7f75 100644 --- a/absl/strings/str_replace_test.cc +++ b/absl/strings/str_replace_test.cc @@ -25,7 +25,7 @@ TEST(StrReplaceAll, OneReplacement) { std::string s; - // Empty std::string. + // Empty string. s = absl::StrReplaceAll(s, {{"", ""}}); EXPECT_EQ(s, ""); s = absl::StrReplaceAll(s, {{"x", ""}}); @@ -47,7 +47,7 @@ TEST(StrReplaceAll, OneReplacement) { s = absl::StrReplaceAll("abc", {{"xyz", "123"}}); EXPECT_EQ(s, "abc"); - // Replace entire std::string. + // Replace entire string. s = absl::StrReplaceAll("abc", {{"abc", "xyz"}}); EXPECT_EQ(s, "xyz"); @@ -88,7 +88,7 @@ TEST(StrReplaceAll, OneReplacement) { TEST(StrReplaceAll, ManyReplacements) { std::string s; - // Empty std::string. + // Empty string. s = absl::StrReplaceAll("", {{"", ""}, {"x", ""}, {"", "y"}, {"x", "y"}}); EXPECT_EQ(s, ""); @@ -96,7 +96,7 @@ TEST(StrReplaceAll, ManyReplacements) { s = absl::StrReplaceAll("abc", {{"", ""}, {"", "y"}, {"x", ""}}); EXPECT_EQ(s, "abc"); - // Replace entire std::string, one char at a time + // Replace entire string, one char at a time s = absl::StrReplaceAll("abc", {{"a", "x"}, {"b", "y"}, {"c", "z"}}); EXPECT_EQ(s, "xyz"); s = absl::StrReplaceAll("zxy", {{"z", "x"}, {"x", "y"}, {"y", "z"}}); @@ -264,7 +264,7 @@ TEST(StrReplaceAll, Inplace) { std::string s; int reps; - // Empty std::string. + // Empty string. s = ""; reps = absl::StrReplaceAll({{"", ""}, {"x", ""}, {"", "y"}, {"x", "y"}}, &s); EXPECT_EQ(reps, 0); @@ -276,7 +276,7 @@ TEST(StrReplaceAll, Inplace) { EXPECT_EQ(reps, 0); EXPECT_EQ(s, "abc"); - // Replace entire std::string, one char at a time + // Replace entire string, one char at a time s = "abc"; reps = absl::StrReplaceAll({{"a", "x"}, {"b", "y"}, {"c", "z"}}, &s); EXPECT_EQ(reps, 3); diff --git a/absl/strings/str_split.cc b/absl/strings/str_split.cc index d0f86669..e08c26b6 100644 --- a/absl/strings/str_split.cc +++ b/absl/strings/str_split.cc @@ -42,7 +42,7 @@ absl::string_view GenericFind(absl::string_view text, absl::string_view delimiter, size_t pos, FindPolicy find_policy) { if (delimiter.empty() && text.length() > 0) { - // Special case for empty std::string delimiters: always return a zero-length + // Special case for empty string delimiters: always return a zero-length // absl::string_view referring to the item at position 1 past pos. return absl::string_view(text.data() + pos + 1, 0); } @@ -127,7 +127,7 @@ absl::string_view ByLength::Find(absl::string_view text, size_t pos) const { pos = std::min(pos, text.size()); // truncate `pos` absl::string_view substr = text.substr(pos); - // If the std::string is shorter than the chunk size we say we + // If the string is shorter than the chunk size we say we // "can't find the delimiter" so this will be the last chunk. if (substr.length() <= static_cast(length_)) return absl::string_view(text.data() + text.size(), 0); diff --git a/absl/strings/str_split_test.cc b/absl/strings/str_split_test.cc index 02f27bc4..67f62a78 100644 --- a/absl/strings/str_split_test.cc +++ b/absl/strings/str_split_test.cc @@ -71,7 +71,7 @@ TEST(Split, TraitsTest) { // namespaces just like callers will need to use. TEST(Split, APIExamples) { { - // Passes std::string delimiter. Assumes the default of ByString. + // Passes string delimiter. Assumes the default of ByString. std::vector v = absl::StrSplit("a,b,c", ","); // NOLINT EXPECT_THAT(v, ElementsAre("a", "b", "c")); @@ -97,7 +97,7 @@ TEST(Split, APIExamples) { } { - // Uses the Literal std::string "=>" as the delimiter. + // Uses the Literal string "=>" as the delimiter. const std::vector v = absl::StrSplit("a=>b=>c", "=>"); EXPECT_THAT(v, ElementsAre("a", "b", "c")); } @@ -121,17 +121,17 @@ TEST(Split, APIExamples) { } { - // Splits the input std::string into individual characters by using an empty - // std::string as the delimiter. + // Splits the input string into individual characters by using an empty + // string as the delimiter. std::vector v = absl::StrSplit("abc", ""); EXPECT_THAT(v, ElementsAre("a", "b", "c")); } { - // Splits std::string data with embedded NUL characters, using NUL as the + // Splits string data with embedded NUL characters, using NUL as the // delimiter. A simple delimiter of "\0" doesn't work because strlen() will - // say that's the empty std::string when constructing the absl::string_view - // delimiter. Instead, a non-empty std::string containing NUL can be used as the + // say that's the empty string when constructing the absl::string_view + // delimiter. Instead, a non-empty string containing NUL can be used as the // delimiter. std::string embedded_nulls("a\0b\0c", 5); std::string null_delim("\0", 1); @@ -436,7 +436,7 @@ TEST(Splitter, ConversionOperator) { // less-than, equal-to, and more-than 2 strings. TEST(Splitter, ToPair) { { - // Empty std::string + // Empty string std::pair p = absl::StrSplit("", ','); EXPECT_EQ("", p.first); EXPECT_EQ("", p.second); @@ -565,7 +565,7 @@ TEST(Split, AcceptsCertainTemporaries) { TEST(Split, Temporary) { // Use a std::string longer than the SSO length, so that when the temporary is - // destroyed, if the splitter keeps a reference to the std::string's contents, + // destroyed, if the splitter keeps a reference to the string's contents, // it'll reference freed memory instead of just dead on-stack memory. const char input[] = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u"; EXPECT_LT(sizeof(std::string), ABSL_ARRAYSIZE(input)) @@ -651,14 +651,14 @@ TEST(Split, UTF8) { // Tests splitting utf8 strings and utf8 delimiters. std::string utf8_string = u8"\u03BA\u1F79\u03C3\u03BC\u03B5"; { - // A utf8 input std::string with an ascii delimiter. + // A utf8 input string with an ascii delimiter. std::string to_split = "a," + utf8_string; std::vector v = absl::StrSplit(to_split, ','); EXPECT_THAT(v, ElementsAre("a", utf8_string)); } { - // A utf8 input std::string and a utf8 delimiter. + // A utf8 input string and a utf8 delimiter. std::string to_split = "a," + utf8_string + ",b"; std::string unicode_delimiter = "," + utf8_string + ","; std::vector v = @@ -667,7 +667,7 @@ TEST(Split, UTF8) { } { - // A utf8 input std::string and ByAnyChar with ascii chars. + // A utf8 input string and ByAnyChar with ascii chars. std::vector v = absl::StrSplit(u8"Foo h\u00E4llo th\u4E1Ere", absl::ByAnyChar(" \t")); EXPECT_THAT(v, ElementsAre("Foo", u8"h\u00E4llo", u8"th\u4E1Ere")); @@ -814,10 +814,10 @@ TEST(Delimiter, ByString) { ByString comma_string(","); TestComma(comma_string); - // The first occurrence of empty std::string ("") in a std::string is at position 0. + // The first occurrence of empty string ("") in a string is at position 0. // There is a test below that demonstrates this for absl::string_view::find(). // If the ByString delimiter returned position 0 for this, there would - // be an infinite loop in the SplitIterator code. To avoid this, empty std::string + // be an infinite loop in the SplitIterator code. To avoid this, empty string // is a special case in that it always returns the item at position 1. absl::string_view abc("abc"); EXPECT_EQ(0, abc.find("")); // "" is found at position 0 @@ -876,7 +876,7 @@ TEST(Delimiter, ByAnyChar) { EXPECT_FALSE(IsFoundAt("=", two_delims, -1)); // ByAnyChar behaves just like ByString when given a delimiter of empty - // std::string. That is, it always returns a zero-length absl::string_view + // string. That is, it always returns a zero-length absl::string_view // referring to the item at position 1, not position 0. ByAnyChar empty(""); EXPECT_FALSE(IsFoundAt("", empty, 0)); @@ -913,7 +913,7 @@ TEST(Split, WorksWithLargeStrings) { std::vector v = absl::StrSplit(s, '-'); EXPECT_EQ(2, v.size()); // The first element will contain 2G of 'x's. - // testing::StartsWith is too slow with a 2G std::string. + // testing::StartsWith is too slow with a 2G string. EXPECT_EQ('x', v[0][0]); EXPECT_EQ('x', v[0][1]); EXPECT_EQ('x', v[0][3]); diff --git a/absl/strings/string_view.h b/absl/strings/string_view.h index 55e80d62..b314bc34 100644 --- a/absl/strings/string_view.h +++ b/absl/strings/string_view.h @@ -319,7 +319,7 @@ class string_view { // stored elsewhere). Note that `string_view::data()` may contain embedded nul // characters, but the returned buffer may or may not be NUL-terminated; // therefore, do not pass `data()` to a routine that expects a NUL-terminated - // std::string. + // string. constexpr const_pointer data() const noexcept { return ptr_; } // Modifiers @@ -327,7 +327,7 @@ class string_view { // string_view::remove_prefix() // // Removes the first `n` characters from the `string_view`. Note that the - // underlying std::string is not changed, only the view. + // underlying string is not changed, only the view. void remove_prefix(size_type n) { assert(n <= length_); ptr_ += n; @@ -337,7 +337,7 @@ class string_view { // string_view::remove_suffix() // // Removes the last `n` characters from the `string_view`. Note that the - // underlying std::string is not changed, only the view. + // underlying string is not changed, only the view. void remove_suffix(size_type n) { assert(n <= length_); length_ -= n; @@ -394,7 +394,7 @@ class string_view { // // Performs a lexicographical comparison between the `string_view` and // another `absl::string_view`, returning -1 if `this` is less than, 0 if - // `this` is equal to, and 1 if `this` is greater than the passed std::string + // `this` is equal to, and 1 if `this` is greater than the passed string // view. Note that in the case of data equality, a further comparison is made // on the respective sizes of the two `string_view`s to determine which is // smaller, equal, or greater. @@ -420,17 +420,17 @@ class string_view { } // Overload of `string_view::compare()` for comparing a `string_view` and a - // a different C-style std::string `s`. + // a different C-style string `s`. int compare(const char* s) const { return compare(string_view(s)); } // Overload of `string_view::compare()` for comparing a substring of the - // `string_view` and a different std::string C-style std::string `s`. + // `string_view` and a different string C-style string `s`. int compare(size_type pos1, size_type count1, const char* s) const { return substr(pos1, count1).compare(string_view(s)); } // Overload of `string_view::compare()` for comparing a substring of the - // `string_view` and a substring of a different C-style std::string `s`. + // `string_view` and a substring of a different C-style string `s`. int compare(size_type pos1, size_type count1, const char* s, size_type count2) const { return substr(pos1, count1).compare(string_view(s, count2)); diff --git a/absl/strings/string_view_test.cc b/absl/strings/string_view_test.cc index cb6a758f..6ba06144 100644 --- a/absl/strings/string_view_test.cc +++ b/absl/strings/string_view_test.cc @@ -410,7 +410,7 @@ TEST(StringViewTest, STL2) { EXPECT_EQ(a.find(e, 17), 17); absl::string_view g("xx not found bb"); EXPECT_EQ(a.find(g), absl::string_view::npos); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.find(b), absl::string_view::npos); EXPECT_EQ(e.find(b), absl::string_view::npos); EXPECT_EQ(d.find(b, 4), absl::string_view::npos); @@ -438,7 +438,7 @@ TEST(StringViewTest, STL2) { EXPECT_EQ(g.find('o', 4), 4); EXPECT_EQ(g.find('o', 5), 8); EXPECT_EQ(a.find('b', 5), absl::string_view::npos); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.find('\0'), absl::string_view::npos); EXPECT_EQ(e.find('\0'), absl::string_view::npos); EXPECT_EQ(d.find('\0', 4), absl::string_view::npos); @@ -465,7 +465,7 @@ TEST(StringViewTest, STL2) { EXPECT_EQ(e.rfind(b), absl::string_view::npos); EXPECT_EQ(d.rfind(b, 4), absl::string_view::npos); EXPECT_EQ(e.rfind(b, 7), absl::string_view::npos); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.rfind(d, 4), std::string().rfind(std::string())); EXPECT_EQ(e.rfind(d, 7), std::string().rfind(std::string())); EXPECT_EQ(d.rfind(e, 4), std::string().rfind(std::string())); @@ -484,7 +484,7 @@ TEST(StringViewTest, STL2) { EXPECT_EQ(f.rfind('\0', 12), 3); EXPECT_EQ(f.rfind('3'), 2); EXPECT_EQ(f.rfind('5'), 5); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.rfind('o'), absl::string_view::npos); EXPECT_EQ(e.rfind('o'), absl::string_view::npos); EXPECT_EQ(d.rfind('o', 4), absl::string_view::npos); @@ -520,7 +520,7 @@ TEST(StringViewTest, STL2FindFirst) { EXPECT_EQ(g.find_first_of(c), 0); EXPECT_EQ(a.find_first_of(f), absl::string_view::npos); EXPECT_EQ(f.find_first_of(a), absl::string_view::npos); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(a.find_first_of(d), absl::string_view::npos); EXPECT_EQ(a.find_first_of(e), absl::string_view::npos); EXPECT_EQ(d.find_first_of(b), absl::string_view::npos); @@ -538,7 +538,7 @@ TEST(StringViewTest, STL2FindFirst) { EXPECT_EQ(a.find_first_not_of(f), 0); EXPECT_EQ(a.find_first_not_of(d), 0); EXPECT_EQ(a.find_first_not_of(e), 0); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(a.find_first_not_of(d), 0); EXPECT_EQ(a.find_first_not_of(e), 0); EXPECT_EQ(a.find_first_not_of(d, 1), 1); @@ -566,7 +566,7 @@ TEST(StringViewTest, STL2FindFirst) { EXPECT_EQ(f.find_first_not_of('\0'), 0); EXPECT_EQ(f.find_first_not_of('\0', 3), 4); EXPECT_EQ(f.find_first_not_of('\0', 2), 2); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.find_first_not_of('x'), absl::string_view::npos); EXPECT_EQ(e.find_first_not_of('x'), absl::string_view::npos); EXPECT_EQ(d.find_first_not_of('\0'), absl::string_view::npos); @@ -606,7 +606,7 @@ TEST(StringViewTest, STL2FindLast) { EXPECT_EQ(f.find_last_of(i, 5), 5); EXPECT_EQ(f.find_last_of(i, 6), 6); EXPECT_EQ(f.find_last_of(a, 4), absl::string_view::npos); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(f.find_last_of(d), absl::string_view::npos); EXPECT_EQ(f.find_last_of(e), absl::string_view::npos); EXPECT_EQ(f.find_last_of(d, 4), absl::string_view::npos); @@ -632,7 +632,7 @@ TEST(StringViewTest, STL2FindLast) { EXPECT_EQ(a.find_last_not_of(c, 24), 22); EXPECT_EQ(a.find_last_not_of(b, 3), 3); EXPECT_EQ(a.find_last_not_of(b, 2), absl::string_view::npos); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(f.find_last_not_of(d), f.size()-1); EXPECT_EQ(f.find_last_not_of(e), f.size()-1); EXPECT_EQ(f.find_last_not_of(d, 4), 4); @@ -656,7 +656,7 @@ TEST(StringViewTest, STL2FindLast) { EXPECT_EQ(h.find_last_not_of('x', 2), 2); EXPECT_EQ(h.find_last_not_of('=', 2), absl::string_view::npos); EXPECT_EQ(b.find_last_not_of('b', 1), 0); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.find_last_not_of('x'), absl::string_view::npos); EXPECT_EQ(e.find_last_not_of('x'), absl::string_view::npos); EXPECT_EQ(d.find_last_not_of('\0'), absl::string_view::npos); @@ -678,7 +678,7 @@ TEST(StringViewTest, STL2Substr) { EXPECT_EQ(a.substr(23, 99), c); EXPECT_EQ(a.substr(0), a); EXPECT_EQ(a.substr(3, 2), "de"); - // empty std::string nonsense + // empty string nonsense EXPECT_EQ(d.substr(0, 99), e); // use of npos EXPECT_EQ(a.substr(0, absl::string_view::npos), a); @@ -859,7 +859,7 @@ TEST(StringViewTest, NULLInput) { EXPECT_EQ(s.size(), 0); // .ToString() on a absl::string_view with nullptr should produce the empty - // std::string. + // string. EXPECT_EQ("", std::string(s)); #endif // ABSL_HAVE_STRING_VIEW_FROM_NULLPTR } @@ -977,7 +977,7 @@ TEST(StringViewTest, ConstexprCompiles) { #if defined(ABSL_USES_STD_STRING_VIEW) // In libstdc++ (as of 7.2), `std::string_view::string_view(const char*)` - // calls `std::char_traits::length(const char*)` to get the std::string + // calls `std::char_traits::length(const char*)` to get the string // length, but it is not marked constexpr yet. See GCC bug: // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78156 // Also, there is a LWG issue that adds constexpr to length() which was just @@ -1180,7 +1180,7 @@ TEST(FindOneCharTest, EdgeCases) { TEST(HugeStringView, TwoPointTwoGB) { if (sizeof(size_t) <= 4 || RunningOnValgrind()) return; - // Try a huge std::string piece. + // Try a huge string piece. const size_t size = size_t{2200} * 1000 * 1000; std::string s(size, 'a'); absl::string_view sp(s); diff --git a/absl/strings/substitute.cc b/absl/strings/substitute.cc index 5b69a3ef..1f3c7409 100644 --- a/absl/strings/substitute.cc +++ b/absl/strings/substitute.cc @@ -36,7 +36,7 @@ void SubstituteAndAppendArray(std::string* output, absl::string_view format, if (i + 1 >= format.size()) { #ifndef NDEBUG ABSL_RAW_LOG(FATAL, - "Invalid absl::Substitute() format std::string: \"%s\".", + "Invalid absl::Substitute() format string: \"%s\".", absl::CEscape(format).c_str()); #endif return; @@ -46,8 +46,8 @@ void SubstituteAndAppendArray(std::string* output, absl::string_view format, #ifndef NDEBUG ABSL_RAW_LOG( FATAL, - "Invalid absl::Substitute() format std::string: asked for \"$" - "%d\", but only %d args were given. Full format std::string was: " + "Invalid absl::Substitute() format string: asked for \"$" + "%d\", but only %d args were given. Full format string was: " "\"%s\".", index, static_cast(num_args), absl::CEscape(format).c_str()); #endif @@ -61,7 +61,7 @@ void SubstituteAndAppendArray(std::string* output, absl::string_view format, } else { #ifndef NDEBUG ABSL_RAW_LOG(FATAL, - "Invalid absl::Substitute() format std::string: \"%s\".", + "Invalid absl::Substitute() format string: \"%s\".", absl::CEscape(format).c_str()); #endif return; @@ -73,7 +73,7 @@ void SubstituteAndAppendArray(std::string* output, absl::string_view format, if (size == 0) return; - // Build the std::string. + // Build the string. size_t original_size = output->size(); strings_internal::STLStringResizeUninitialized(output, original_size + size); char* target = &(*output)[original_size]; diff --git a/absl/strings/substitute.h b/absl/strings/substitute.h index 4d0984d3..e7b4c1e6 100644 --- a/absl/strings/substitute.h +++ b/absl/strings/substitute.h @@ -99,7 +99,7 @@ namespace substitute_internal { // This class has implicit constructors. class Arg { public: - // Overloads for std::string-y things + // Overloads for string-y things // // Explicitly overload `const char*` so the compiler doesn't cast to `bool`. Arg(const char* value) // NOLINT(runtime/explicit) @@ -360,13 +360,13 @@ inline void SubstituteAndAppend( void SubstituteAndAppend(std::string* output, const char* format) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 0, "There were no substitution arguments " - "but this format std::string has a $[0-9] in it"); + "but this format string has a $[0-9] in it"); void SubstituteAndAppend(std::string* output, const char* format, const substitute_internal::Arg& a0) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 1, "There was 1 substitution argument given, but " - "this format std::string is either missing its $0, or " + "this format string is either missing its $0, or " "contains one of $1-$9"); void SubstituteAndAppend(std::string* output, const char* format, @@ -374,7 +374,7 @@ void SubstituteAndAppend(std::string* output, const char* format, const substitute_internal::Arg& a1) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 3, "There were 2 substitution arguments given, but " - "this format std::string is either missing its $0/$1, or " + "this format string is either missing its $0/$1, or " "contains one of $2-$9"); void SubstituteAndAppend(std::string* output, const char* format, @@ -383,7 +383,7 @@ void SubstituteAndAppend(std::string* output, const char* format, const substitute_internal::Arg& a2) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 7, "There were 3 substitution arguments given, but " - "this format std::string is either missing its $0/$1/$2, or " + "this format string is either missing its $0/$1/$2, or " "contains one of $3-$9"); void SubstituteAndAppend(std::string* output, const char* format, @@ -393,7 +393,7 @@ void SubstituteAndAppend(std::string* output, const char* format, const substitute_internal::Arg& a3) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 15, "There were 4 substitution arguments given, but " - "this format std::string is either missing its $0-$3, or " + "this format string is either missing its $0-$3, or " "contains one of $4-$9"); void SubstituteAndAppend(std::string* output, const char* format, @@ -404,7 +404,7 @@ void SubstituteAndAppend(std::string* output, const char* format, const substitute_internal::Arg& a4) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 31, "There were 5 substitution arguments given, but " - "this format std::string is either missing its $0-$4, or " + "this format string is either missing its $0-$4, or " "contains one of $5-$9"); void SubstituteAndAppend(std::string* output, const char* format, @@ -416,7 +416,7 @@ void SubstituteAndAppend(std::string* output, const char* format, const substitute_internal::Arg& a5) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 63, "There were 6 substitution arguments given, but " - "this format std::string is either missing its $0-$5, or " + "this format string is either missing its $0-$5, or " "contains one of $6-$9"); void SubstituteAndAppend( @@ -426,7 +426,7 @@ void SubstituteAndAppend( const substitute_internal::Arg& a5, const substitute_internal::Arg& a6) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 127, "There were 7 substitution arguments given, but " - "this format std::string is either missing its $0-$6, or " + "this format string is either missing its $0-$6, or " "contains one of $7-$9"); void SubstituteAndAppend( @@ -437,7 +437,7 @@ void SubstituteAndAppend( const substitute_internal::Arg& a7) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 255, "There were 8 substitution arguments given, but " - "this format std::string is either missing its $0-$7, or " + "this format string is either missing its $0-$7, or " "contains one of $8-$9"); void SubstituteAndAppend( @@ -449,7 +449,7 @@ void SubstituteAndAppend( ABSL_BAD_CALL_IF( substitute_internal::PlaceholderBitmask(format) != 511, "There were 9 substitution arguments given, but " - "this format std::string is either missing its $0-$8, or contains a $9"); + "this format string is either missing its $0-$8, or contains a $9"); void SubstituteAndAppend( std::string* output, const char* format, const substitute_internal::Arg& a0, @@ -460,7 +460,7 @@ void SubstituteAndAppend( const substitute_internal::Arg& a9) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 1023, "There were 10 substitution arguments given, but this " - "format std::string doesn't contain all of $0 through $9"); + "format string doesn't contain all of $0 through $9"); #endif // ABSL_BAD_CALL_IF // Substitute() @@ -586,19 +586,19 @@ ABSL_MUST_USE_RESULT inline std::string Substitute( std::string Substitute(const char* format) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 0, "There were no substitution arguments " - "but this format std::string has a $[0-9] in it"); + "but this format string has a $[0-9] in it"); std::string Substitute(const char* format, const substitute_internal::Arg& a0) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 1, "There was 1 substitution argument given, but " - "this format std::string is either missing its $0, or " + "this format string is either missing its $0, or " "contains one of $1-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a1) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 3, "There were 2 substitution arguments given, but " - "this format std::string is either missing its $0/$1, or " + "this format string is either missing its $0/$1, or " "contains one of $2-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, @@ -606,7 +606,7 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a2) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 7, "There were 3 substitution arguments given, but " - "this format std::string is either missing its $0/$1/$2, or " + "this format string is either missing its $0/$1/$2, or " "contains one of $3-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, @@ -615,7 +615,7 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a3) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 15, "There were 4 substitution arguments given, but " - "this format std::string is either missing its $0-$3, or " + "this format string is either missing its $0-$3, or " "contains one of $4-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, @@ -625,7 +625,7 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a4) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 31, "There were 5 substitution arguments given, but " - "this format std::string is either missing its $0-$4, or " + "this format string is either missing its $0-$4, or " "contains one of $5-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, @@ -636,7 +636,7 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a5) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 63, "There were 6 substitution arguments given, but " - "this format std::string is either missing its $0-$5, or " + "this format string is either missing its $0-$5, or " "contains one of $6-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, @@ -648,7 +648,7 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a6) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 127, "There were 7 substitution arguments given, but " - "this format std::string is either missing its $0-$6, or " + "this format string is either missing its $0-$6, or " "contains one of $7-$9"); std::string Substitute(const char* format, const substitute_internal::Arg& a0, @@ -661,7 +661,7 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0, const substitute_internal::Arg& a7) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 255, "There were 8 substitution arguments given, but " - "this format std::string is either missing its $0-$7, or " + "this format string is either missing its $0-$7, or " "contains one of $8-$9"); std::string Substitute( @@ -673,7 +673,7 @@ std::string Substitute( ABSL_BAD_CALL_IF( substitute_internal::PlaceholderBitmask(format) != 511, "There were 9 substitution arguments given, but " - "this format std::string is either missing its $0-$8, or contains a $9"); + "this format string is either missing its $0-$8, or contains a $9"); std::string Substitute( const char* format, const substitute_internal::Arg& a0, @@ -684,7 +684,7 @@ std::string Substitute( const substitute_internal::Arg& a9) ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 1023, "There were 10 substitution arguments given, but this " - "format std::string doesn't contain all of $0 through $9"); + "format string doesn't contain all of $0 through $9"); #endif // ABSL_BAD_CALL_IF ABSL_NAMESPACE_END diff --git a/absl/strings/substitute_test.cc b/absl/strings/substitute_test.cc index 450cd2bc..442c9215 100644 --- a/absl/strings/substitute_test.cc +++ b/absl/strings/substitute_test.cc @@ -89,7 +89,7 @@ TEST(SubstituteTest, Substitute) { str = absl::Substitute("$0", char_buf); EXPECT_EQ("print me too", str); - // null char* is "doubly" special. Represented as the empty std::string. + // null char* is "doubly" special. Represented as the empty string. char_p = nullptr; str = absl::Substitute("$0", char_p); EXPECT_EQ("", str); @@ -189,14 +189,14 @@ TEST(SubstituteTest, VectorBoolRef) { TEST(SubstituteDeathTest, SubstituteDeath) { EXPECT_DEBUG_DEATH( static_cast(absl::Substitute(absl::string_view("-$2"), "a", "b")), - "Invalid absl::Substitute\\(\\) format std::string: asked for \"\\$2\", " + "Invalid absl::Substitute\\(\\) format string: asked for \"\\$2\", " "but only 2 args were given."); EXPECT_DEBUG_DEATH( static_cast(absl::Substitute(absl::string_view("-$z-"))), - "Invalid absl::Substitute\\(\\) format std::string: \"-\\$z-\""); + "Invalid absl::Substitute\\(\\) format string: \"-\\$z-\""); EXPECT_DEBUG_DEATH( static_cast(absl::Substitute(absl::string_view("-$"))), - "Invalid absl::Substitute\\(\\) format std::string: \"-\\$\""); + "Invalid absl::Substitute\\(\\) format string: \"-\\$\""); } #endif // GTEST_HAS_DEATH_TEST diff --git a/absl/synchronization/mutex.cc b/absl/synchronization/mutex.cc index e0879b05..426558e6 100644 --- a/absl/synchronization/mutex.cc +++ b/absl/synchronization/mutex.cc @@ -299,7 +299,7 @@ static struct SynchEvent { // this is a trivial hash table for the events bool log; // logging turned on // Constant after initialization - char name[1]; // actually longer---NUL-terminated std::string + char name[1]; // actually longer---NUL-terminated string } * synch_event[kNSynchEvent] ABSL_GUARDED_BY(synch_event_mu); // Ensure that the object at "addr" has a SynchEvent struct associated with it, diff --git a/absl/time/civil_time.cc b/absl/time/civil_time.cc index ada82cbc..c4202c73 100644 --- a/absl/time/civil_time.cc +++ b/absl/time/civil_time.cc @@ -38,7 +38,7 @@ std::string FormatYearAnd(string_view fmt, CivilSecond cs) { const CivilSecond ncs(NormalizeYear(cs.year()), cs.month(), cs.day(), cs.hour(), cs.minute(), cs.second()); const TimeZone utc = UTCTimeZone(); - // TODO(absl-team): Avoid conversion of fmt std::string. + // TODO(absl-team): Avoid conversion of fmt string. return StrCat(cs.year(), FormatTime(std::string(fmt), FromCivil(ncs, utc), utc)); } @@ -47,7 +47,7 @@ template bool ParseYearAnd(string_view fmt, string_view s, CivilT* c) { // Civil times support a larger year range than absl::Time, so we need to // parse the year separately, normalize it, then use absl::ParseTime on the - // normalized std::string. + // normalized string. const std::string ss = std::string(s); // TODO(absl-team): Avoid conversion. const char* const np = ss.c_str(); char* endp; @@ -82,7 +82,7 @@ bool ParseAs(string_view s, CivilT2* c) { template bool ParseLenient(string_view s, CivilT* c) { - // A fastpath for when the given std::string data parses exactly into the given + // A fastpath for when the given string data parses exactly into the given // type T (e.g., s="YYYY-MM-DD" and CivilT=CivilDay). if (ParseCivilTime(s, c)) return true; // Try parsing as each of the 6 types, trying the most common types first diff --git a/absl/time/duration.cc b/absl/time/duration.cc index b1af8406..1353fa0a 100644 --- a/absl/time/duration.cc +++ b/absl/time/duration.cc @@ -874,12 +874,12 @@ bool ParseDuration(const std::string& dur_string, Duration* d) { ++start; } - // Can't parse a duration from an empty std::string. + // Can't parse a duration from an empty string. if (*start == '\0') { return false; } - // Special case for a std::string of "0". + // Special case for a string of "0". if (*start == '0' && *(start + 1) == '\0') { *d = ZeroDuration(); return true; diff --git a/absl/time/format_test.cc b/absl/time/format_test.cc index ab1f3059..a9a1eb8e 100644 --- a/absl/time/format_test.cc +++ b/absl/time/format_test.cc @@ -173,7 +173,7 @@ TEST(ParseTime, WithTimeZone) { absl::Time t; std::string e; - // We can parse a std::string without a UTC offset if we supply a timezone. + // We can parse a string without a UTC offset if we supply a timezone. EXPECT_TRUE( absl::ParseTime("%Y-%m-%d %H:%M:%S", "2013-06-28 19:08:09", tz, &t, &e)) << e; @@ -327,7 +327,7 @@ TEST(ParseTime, InfiniteTime) { EXPECT_TRUE(absl::ParseTime("%H:%M blah", " infinite-past ", &t, &err)); EXPECT_EQ(absl::InfinitePast(), t); - // "infinite-future" as literal std::string + // "infinite-future" as literal string absl::TimeZone tz = absl::UTCTimeZone(); EXPECT_TRUE(absl::ParseTime("infinite-future %H:%M", "infinite-future 03:04", &t, &err)); @@ -335,7 +335,7 @@ TEST(ParseTime, InfiniteTime) { EXPECT_EQ(3, tz.At(t).cs.hour()); EXPECT_EQ(4, tz.At(t).cs.minute()); - // "infinite-past" as literal std::string + // "infinite-past" as literal string EXPECT_TRUE( absl::ParseTime("infinite-past %H:%M", "infinite-past 03:04", &t, &err)); EXPECT_NE(absl::InfinitePast(), t); diff --git a/absl/time/internal/cctz/include/cctz/time_zone.h b/absl/time/internal/cctz/include/cctz/time_zone.h index d05147a1..d4ea90ef 100644 --- a/absl/time/internal/cctz/include/cctz/time_zone.h +++ b/absl/time/internal/cctz/include/cctz/time_zone.h @@ -209,7 +209,7 @@ class time_zone { // version() and description() provide additional information about the // time zone. The content of each of the returned strings is unspecified, // however, when the IANA Time Zone Database is the underlying data source - // the version() std::string will be in the familar form (e.g, "2018e") or + // the version() string will be in the familar form (e.g, "2018e") or // empty when unavailable. // // Note: These functions are for informational or testing purposes only. diff --git a/absl/time/internal/cctz/include/cctz/zone_info_source.h b/absl/time/internal/cctz/include/cctz/zone_info_source.h index 912b44ba..012eb4ec 100644 --- a/absl/time/internal/cctz/include/cctz/zone_info_source.h +++ b/absl/time/internal/cctz/include/cctz/zone_info_source.h @@ -37,7 +37,7 @@ class ZoneInfoSource { // Until the zoneinfo data supports versioning information, we provide // a way for a ZoneInfoSource to indicate it out-of-band. The default - // implementation returns an empty std::string. + // implementation returns an empty string. virtual std::string Version() const; }; diff --git a/absl/time/internal/cctz/src/time_zone_format.cc b/absl/time/internal/cctz/src/time_zone_format.cc index 950b23a1..179975e0 100644 --- a/absl/time/internal/cctz/src/time_zone_format.cc +++ b/absl/time/internal/cctz/src/time_zone_format.cc @@ -189,7 +189,7 @@ void FormatTM(std::string* out, const std::string& fmt, const std::tm& tm) { // strftime(3) returns the number of characters placed in the output // array (which may be 0 characters). It also returns 0 to indicate // an error, like the array wasn't large enough. To accommodate this, - // the following code grows the buffer size from 2x the format std::string + // the following code grows the buffer size from 2x the format string // length up to 32x. for (std::size_t i = 2; i != 32; i *= 2) { std::size_t buf_size = fmt.size() * i; @@ -839,7 +839,7 @@ bool parse(const std::string& format, const std::string& input, // Skip any remaining whitespace. while (std::isspace(*data)) ++data; - // parse() must consume the entire input std::string. + // parse() must consume the entire input string. if (*data != '\0') { if (err != nullptr) *err = "Illegal trailing data in input string"; return false; diff --git a/absl/time/internal/cctz/src/time_zone_format_test.cc b/absl/time/internal/cctz/src/time_zone_format_test.cc index caebcc4d..87382e15 100644 --- a/absl/time/internal/cctz/src/time_zone_format_test.cc +++ b/absl/time/internal/cctz/src/time_zone_format_test.cc @@ -767,7 +767,7 @@ TEST(Parse, WithTimeZone) { EXPECT_TRUE(load_time_zone("America/Los_Angeles", &tz)); time_point tp; - // We can parse a std::string without a UTC offset if we supply a timezone. + // We can parse a string without a UTC offset if we supply a timezone. EXPECT_TRUE(parse("%Y-%m-%d %H:%M:%S", "2013-06-28 19:08:09", tz, &tp)); ExpectTime(tp, tz, 2013, 6, 28, 19, 8, 9, -7 * 60 * 60, true, "PDT"); diff --git a/absl/time/internal/cctz/src/time_zone_impl.h b/absl/time/internal/cctz/src/time_zone_impl.h index 69806c10..7d747ba9 100644 --- a/absl/time/internal/cctz/src/time_zone_impl.h +++ b/absl/time/internal/cctz/src/time_zone_impl.h @@ -71,7 +71,7 @@ class time_zone::Impl { return zone_->PrevTransition(tp, trans); } - // Returns an implementation-defined version std::string for this time zone. + // Returns an implementation-defined version string for this time zone. std::string Version() const { return zone_->Version(); } // Returns an implementation-defined description of this time zone. diff --git a/absl/time/internal/cctz/src/time_zone_info.cc b/absl/time/internal/cctz/src/time_zone_info.cc index f1697cdf..665fb424 100644 --- a/absl/time/internal/cctz/src/time_zone_info.cc +++ b/absl/time/internal/cctz/src/time_zone_info.cc @@ -506,7 +506,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) { // If we did not find version information during the standard loading // process (as of tzh_version '3' that is unsupported), then ask the - // ZoneInfoSource for any out-of-bound version std::string it may be privy to. + // ZoneInfoSource for any out-of-bound version string it may be privy to. if (version_.empty()) { version_ = zip->Version(); } diff --git a/absl/time/internal/cctz/src/time_zone_lookup_test.cc b/absl/time/internal/cctz/src/time_zone_lookup_test.cc index 99137a08..35911ce5 100644 --- a/absl/time/internal/cctz/src/time_zone_lookup_test.cc +++ b/absl/time/internal/cctz/src/time_zone_lookup_test.cc @@ -749,7 +749,7 @@ TEST(TimeZone, Failures) { EXPECT_EQ(chrono::system_clock::from_time_t(0), convert(civil_second(1970, 1, 1, 0, 0, 0), tz)); // UTC - // Loading an empty std::string timezone should fail. + // Loading an empty string timezone should fail. tz = LoadZone("America/Los_Angeles"); EXPECT_FALSE(load_time_zone("", &tz)); EXPECT_EQ(chrono::system_clock::from_time_t(0), diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 1ed55e0f..269fa36c 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -83,13 +83,13 @@ struct tzhead { ** If tzh_version is '2' or greater, the above is followed by a second instance ** of tzhead and a second instance of the data in which each coded transition ** time uses 8 rather than 4 chars, -** then a POSIX-TZ-environment-variable-style std::string for use in handling +** then a POSIX-TZ-environment-variable-style string for use in handling ** instants after the last transition time stored in the file ** (with nothing between the newlines if there is no POSIX representation for ** such instants). ** ** If tz_version is '3' or greater, the above is extended as follows. -** First, the POSIX TZ std::string's hour offset may range from -167 +** First, the POSIX TZ string's hour offset may range from -167 ** through 167 as compared to the POSIX-required 0 through 24. ** Second, its DST start time may be January 1 at 00:00 and its stop ** time December 31 at 24:00 plus the difference between DST and diff --git a/absl/time/time_zone_test.cc b/absl/time/time_zone_test.cc index 8f1e74ac..229fcfcc 100644 --- a/absl/time/time_zone_test.cc +++ b/absl/time/time_zone_test.cc @@ -88,7 +88,7 @@ TEST(TimeZone, Failures) { EXPECT_FALSE(LoadTimeZone("Invalid/TimeZone", &tz)); EXPECT_EQ(absl::UTCTimeZone(), tz); // guaranteed fallback to UTC - // Loading an empty std::string timezone should fail. + // Loading an empty string timezone should fail. tz = absl::time_internal::LoadTimeZone("America/Los_Angeles"); EXPECT_FALSE(LoadTimeZone("", &tz)); EXPECT_EQ(absl::UTCTimeZone(), tz); // guaranteed fallback to UTC diff --git a/absl/types/variant_test.cc b/absl/types/variant_test.cc index 96393333..4639c42e 100644 --- a/absl/types/variant_test.cc +++ b/absl/types/variant_test.cc @@ -679,7 +679,7 @@ TEST(VariantTest, TestSelfAssignment) { object.operator=(object); EXPECT_EQ(0, counter); - // A std::string long enough that it's likely to defeat any inline representation + // A string long enough that it's likely to defeat any inline representation // optimization. const std::string long_str(128, 'a'); -- cgit v1.2.3 From d5269a8b6dbe7836049417d0ff2c88b8363cc1fc Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 9 Jul 2020 08:13:12 -0700 Subject: Export of internal Abseil changes -- 4833151c207fac9f57a735efe6d5db4c83368415 by Gennadiy Rozental : Import of CCTZ from GitHub. PiperOrigin-RevId: 320398694 -- a1becb36b223230f0a45f204a5fb33b83d2deffe by Gennadiy Rozental : Update CMakeLists.txt Import of https://github.com/abseil/abseil-cpp/pull/737 PiperOrigin-RevId: 320391906 -- b529c45856fe7a3447f1f3259286d57e13b1f292 by Abseil Team : Improves a comment about use of absl::Condition. PiperOrigin-RevId: 320384329 -- c7b1dacda2739c10dc1ccbfb56b07ed7fe2464a4 by Laramie Leavitt : Improve FastUniformBits performance for std::minstd_rand. The rejection algorithm was too pessimistic before, and not in line with the [rand.adapt.ibits]. Specifically, when sampling from an URBG with a non power of 2 range, FastUniformBits constructed a rejection threshold with a power-of-2 range that was too restrictive. For example, minstd_rand has a range of [1, 2147483646], which has a range of 2145386495, or about 30.999 bits. Before FastUniformBits rejected values between 1<<30 and 2145386495, which includes approximately 50% of the generated values. However, since a minimum of 3 calls are required to generate a full 64-bit value from an entropy pool of 30.9 bits, the correct value for rejection sampling is the range value which masks 21 (0x7fe00000) or 22 bits and rejects values greater than that. This reduces the probability of rejecting a sample to about 0.1% NOTE: Abseil random does not guarantee sequence stability over time, and this is expected to change sequences in some cases. PiperOrigin-RevId: 320285836 -- 15800a39557a07dd52e0add66a0ab67aed00590b by Gennadiy Rozental : Internal change. PiperOrigin-RevId: 320220913 -- ef39348360873f6d19669755fe0b5d09a945a501 by Gennadiy Rozental : Internal change PiperOrigin-RevId: 320181729 -- 4f9f6ef8034a24da1832e4c838c72f80fc2ea062 by Gennadiy Rozental : Internal change PiperOrigin-RevId: 320176084 -- 6bfc8008462801657d231585bd5c37fc18bb25b6 by Gennadiy Rozental : Internal change PiperOrigin-RevId: 320176070 -- b35b055ab1f41e6056031ff0641cabab23530027 by Abseil Team : Disabling using header module as well as building one for randen_hwaes_impl PiperOrigin-RevId: 320024299 GitOrigin-RevId: 4833151c207fac9f57a735efe6d5db4c83368415 Change-Id: I9cf102dbf46ed07752a508b7cda3ab3858857d0d --- CMake/AbseilHelpers.cmake | 4 +- CMake/AbseilInstallDirs.cmake | 4 +- absl/container/inlined_vector.h | 2 +- absl/flags/reflection.cc | 12 - absl/random/internal/BUILD.bazel | 9 +- absl/random/internal/fast_uniform_bits.h | 202 ++++++------- absl/random/internal/fast_uniform_bits_test.cc | 318 ++++++++++++--------- absl/synchronization/mutex.h | 5 + absl/time/internal/cctz/src/time_zone_format.cc | 22 +- .../internal/cctz/src/time_zone_format_test.cc | 5 + absl/time/internal/cctz/src/time_zone_libc.cc | 9 +- absl/time/internal/cctz/src/tzfile.h | 8 +- absl/types/CMakeLists.txt | 2 +- 13 files changed, 340 insertions(+), 262 deletions(-) (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake index 86ff9eba..8b2925c5 100644 --- a/CMake/AbseilHelpers.cmake +++ b/CMake/AbseilHelpers.cmake @@ -23,7 +23,9 @@ include(AbseilInstallDirs) # project that sets # set_property(GLOBAL PROPERTY USE_FOLDERS ON) # For example, Visual Studio supports folders. -set(ABSL_IDE_FOLDER Abseil) +if(NOT DEFINED ABSL_IDE_FOLDER) + set(ABSL_IDE_FOLDER Abseil) +endif() # absl_cc_library() # diff --git a/CMake/AbseilInstallDirs.cmake b/CMake/AbseilInstallDirs.cmake index b67272f8..6fc914b6 100644 --- a/CMake/AbseilInstallDirs.cmake +++ b/CMake/AbseilInstallDirs.cmake @@ -10,11 +10,11 @@ if(absl_VERSION) set(ABSL_SUBDIR "${PROJECT_NAME}_${PROJECT_VERSION}") set(ABSL_INSTALL_BINDIR "${CMAKE_INSTALL_BINDIR}/${ABSL_SUBDIR}") set(ABSL_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/${ABSL_SUBDIR}") - set(ABSL_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}/{ABSL_SUBDIR}") + set(ABSL_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}/${ABSL_SUBDIR}") set(ABSL_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/${ABSL_SUBDIR}") else() set(ABSL_INSTALL_BINDIR "${CMAKE_INSTALL_BINDIR}") set(ABSL_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") set(ABSL_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}") set(ABSL_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}") -endif() \ No newline at end of file +endif() diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h index f18dd4c7..90bb96e8 100644 --- a/absl/container/inlined_vector.h +++ b/absl/container/inlined_vector.h @@ -64,7 +64,7 @@ ABSL_NAMESPACE_BEGIN // `std::vector` for use cases where the vector's size is sufficiently small // that it can be inlined. If the inlined vector does grow beyond its estimated // capacity, it will trigger an initial allocation on the heap, and will behave -// as a `std:vector`. The API of the `absl::InlinedVector` within this file is +// as a `std::vector`. The API of the `absl::InlinedVector` within this file is // designed to cover the same API footprint as covered by `std::vector`. template > class InlinedVector { diff --git a/absl/flags/reflection.cc b/absl/flags/reflection.cc index 02b7c06a..1b025835 100644 --- a/absl/flags/reflection.cc +++ b/absl/flags/reflection.cc @@ -58,10 +58,6 @@ class FlagRegistry { // Will emit a warning if a 'retired' flag is specified. CommandLineFlag* FindFlagLocked(absl::string_view name); - // Returns the retired flag object for the specified name, or nullptr if not - // found or not retired. Does not emit a warning. - CommandLineFlag* FindRetiredFlagLocked(absl::string_view name); - static FlagRegistry& GlobalRegistry(); // returns a singleton registry private: @@ -88,14 +84,6 @@ CommandLineFlag* FlagRegistry::FindFlagLocked(absl::string_view name) { if (i == flags_.end()) { return nullptr; } - return i->second; -} - -CommandLineFlag* FlagRegistry::FindRetiredFlagLocked(absl::string_view name) { - FlagConstIterator i = flags_.find(name); - if (i == flags_.end() || !i->second->IsRetired()) { - return nullptr; - } return i->second; } diff --git a/absl/random/internal/BUILD.bazel b/absl/random/internal/BUILD.bazel index d81477ff..a0eba5e8 100644 --- a/absl/random/internal/BUILD.bazel +++ b/absl/random/internal/BUILD.bazel @@ -59,7 +59,10 @@ cc_library( ], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, - deps = ["//absl/base:config"], + deps = [ + "//absl/base:config", + "//absl/meta:type_traits", + ], ) cc_library( @@ -319,10 +322,6 @@ cc_library( "//absl:windows": [], "//conditions:default": ["-Wno-pass-failed"], }), - # copts in RANDEN_HWAES_COPTS can make this target unusable as a module - # leading to a Clang diagnostic. Furthermore, it only has a private header - # anyway and thus there wouldn't be any gain from using it as a module. - features = ["-header_modules"], linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":platform", diff --git a/absl/random/internal/fast_uniform_bits.h b/absl/random/internal/fast_uniform_bits.h index f13c8729..425aaf7d 100644 --- a/absl/random/internal/fast_uniform_bits.h +++ b/absl/random/internal/fast_uniform_bits.h @@ -21,6 +21,7 @@ #include #include "absl/base/config.h" +#include "absl/meta/type_traits.h" namespace absl { ABSL_NAMESPACE_BEGIN @@ -38,28 +39,17 @@ constexpr bool IsPowerOfTwoOrZero(UIntType n) { template constexpr typename URBG::result_type RangeSize() { using result_type = typename URBG::result_type; + static_assert((URBG::max)() != (URBG::min)(), "URBG range cannot be 0."); return ((URBG::max)() == (std::numeric_limits::max)() && (URBG::min)() == std::numeric_limits::lowest()) ? result_type{0} - : (URBG::max)() - (URBG::min)() + result_type{1}; -} - -template -constexpr UIntType LargestPowerOfTwoLessThanOrEqualTo(UIntType n) { - return n < 2 ? n : 2 * LargestPowerOfTwoLessThanOrEqualTo(n / 2); -} - -// Given a URBG generating values in the closed interval [Lo, Hi], returns the -// largest power of two less than or equal to `Hi - Lo + 1`. -template -constexpr typename URBG::result_type PowerOfTwoSubRangeSize() { - return LargestPowerOfTwoLessThanOrEqualTo(RangeSize()); + : ((URBG::max)() - (URBG::min)() + result_type{1}); } // Computes the floor of the log. (i.e., std::floor(std::log2(N)); template constexpr UIntType IntegerLog2(UIntType n) { - return (n <= 1) ? 0 : 1 + IntegerLog2(n / 2); + return (n <= 1) ? 0 : 1 + IntegerLog2(n >> 1); } // Returns the number of bits of randomness returned through @@ -68,18 +58,23 @@ template constexpr size_t NumBits() { return RangeSize() == 0 ? std::numeric_limits::digits - : IntegerLog2(PowerOfTwoSubRangeSize()); + : IntegerLog2(RangeSize()); } // Given a shift value `n`, constructs a mask with exactly the low `n` bits set. // If `n == 0`, all bits are set. template -constexpr UIntType MaskFromShift(UIntType n) { +constexpr UIntType MaskFromShift(size_t n) { return ((n % std::numeric_limits::digits) == 0) ? ~UIntType{0} : (UIntType{1} << n) - UIntType{1}; } +// Tags used to dispatch FastUniformBits::generate to the simple or more complex +// entropy extraction algorithm. +struct SimplifiedLoopTag {}; +struct RejectionLoopTag {}; + // FastUniformBits implements a fast path to acquire uniform independent bits // from a type which conforms to the [rand.req.urbg] concept. // Parameterized by: @@ -107,50 +102,16 @@ class FastUniformBits { "Class-template FastUniformBits<> must be parameterized using " "an unsigned type."); - // PowerOfTwoVariate() generates a single random variate, always returning a - // value in the half-open interval `[0, PowerOfTwoSubRangeSize())`. If - // the URBG already generates values in a power-of-two range, the generator - // itself is used. Otherwise, we use rejection sampling on the largest - // possible power-of-two-sized subrange. - struct PowerOfTwoTag {}; - struct RejectionSamplingTag {}; - template - static typename URBG::result_type PowerOfTwoVariate( - URBG& g) { // NOLINT(runtime/references) - using tag = - typename std::conditional()), - PowerOfTwoTag, RejectionSamplingTag>::type; - return PowerOfTwoVariate(g, tag{}); - } - - template - static typename URBG::result_type PowerOfTwoVariate( - URBG& g, // NOLINT(runtime/references) - PowerOfTwoTag) { - return g() - (URBG::min)(); - } - - template - static typename URBG::result_type PowerOfTwoVariate( - URBG& g, // NOLINT(runtime/references) - RejectionSamplingTag) { - // Use rejection sampling to ensure uniformity across the range. - typename URBG::result_type u; - do { - u = g() - (URBG::min)(); - } while (u >= PowerOfTwoSubRangeSize()); - return u; - } - // Generate() generates a random value, dispatched on whether - // the underlying URBG must loop over multiple calls or not. + // the underlying URBG must use rejection sampling to generate a value, + // or whether a simplified loop will suffice. template result_type Generate(URBG& g, // NOLINT(runtime/references) - std::true_type /* avoid_looping */); + SimplifiedLoopTag); template result_type Generate(URBG& g, // NOLINT(runtime/references) - std::false_type /* avoid_looping */); + RejectionLoopTag); }; template @@ -162,31 +123,47 @@ FastUniformBits::operator()(URBG& g) { // NOLINT(runtime/references) // Y = (2 ^ kRange) - 1 static_assert((URBG::max)() > (URBG::min)(), "URBG::max and URBG::min may not be equal."); - using urbg_result_type = typename URBG::result_type; - constexpr urbg_result_type kRangeMask = - RangeSize() == 0 - ? (std::numeric_limits::max)() - : static_cast(PowerOfTwoSubRangeSize() - 1); - return Generate(g, std::integral_constant= (max)())>{}); + + using tag = absl::conditional_t()), + SimplifiedLoopTag, RejectionLoopTag>; + return Generate(g, tag{}); } template template typename FastUniformBits::result_type FastUniformBits::Generate(URBG& g, // NOLINT(runtime/references) - std::true_type /* avoid_looping */) { - // The width of the result_type is less than than the width of the random bits - // provided by URBG. Thus, generate a single value and then simply mask off - // the required bits. + SimplifiedLoopTag) { + // The simplified version of FastUniformBits works only on URBGs that have + // a range that is a power of 2. In this case we simply loop and shift without + // attempting to balance the bits across calls. + static_assert(IsPowerOfTwoOrZero(RangeSize()), + "incorrect Generate tag for URBG instance"); + + static constexpr size_t kResultBits = + std::numeric_limits::digits; + static constexpr size_t kUrbgBits = NumBits(); + static constexpr size_t kIters = + (kResultBits / kUrbgBits) + (kResultBits % kUrbgBits != 0); + static constexpr size_t kShift = (kIters == 1) ? 0 : kUrbgBits; + static constexpr auto kMin = (URBG::min)(); - return PowerOfTwoVariate(g) & (max)(); + result_type r = static_cast(g() - kMin); + for (size_t n = 1; n < kIters; ++n) { + r = (r << kShift) + static_cast(g() - kMin); + } + return r; } template template typename FastUniformBits::result_type FastUniformBits::Generate(URBG& g, // NOLINT(runtime/references) - std::false_type /* avoid_looping */) { + RejectionLoopTag) { + static_assert(!IsPowerOfTwoOrZero(RangeSize()), + "incorrect Generate tag for URBG instance"); + using urbg_result_type = typename URBG::result_type; + // See [rand.adapt.ibits] for more details on the constants calculated below. // // It is preferable to use roughly the same number of bits from each generator @@ -199,21 +176,44 @@ FastUniformBits::Generate(URBG& g, // NOLINT(runtime/references) // `kSmallIters` and `kLargeIters` times respectively such // that // - // `kTotalWidth == kSmallIters * kSmallWidth - // + kLargeIters * kLargeWidth` + // `kResultBits == kSmallIters * kSmallBits + // + kLargeIters * kLargeBits` // - // where `kTotalWidth` is the total number of bits in `result_type`. + // where `kResultBits` is the total number of bits in `result_type`. // - constexpr size_t kTotalWidth = std::numeric_limits::digits; - constexpr size_t kUrbgWidth = NumBits(); - constexpr size_t kTotalIters = - kTotalWidth / kUrbgWidth + (kTotalWidth % kUrbgWidth != 0); - constexpr size_t kSmallWidth = kTotalWidth / kTotalIters; - constexpr size_t kLargeWidth = kSmallWidth + 1; + static constexpr size_t kResultBits = + std::numeric_limits::digits; // w + static constexpr urbg_result_type kUrbgRange = RangeSize(); // R + static constexpr size_t kUrbgBits = NumBits(); // m + + // compute the initial estimate of the bits used. + // [rand.adapt.ibits] 2 (c) + static constexpr size_t kA = // ceil(w/m) + (kResultBits / kUrbgBits) + ((kResultBits % kUrbgBits) != 0); // n' + + static constexpr size_t kABits = kResultBits / kA; // w0' + static constexpr urbg_result_type kARejection = + ((kUrbgRange >> kABits) << kABits); // y0' + + // refine the selection to reduce the rejection frequency. + static constexpr size_t kTotalIters = + ((kUrbgRange - kARejection) <= (kARejection / kA)) ? kA : (kA + 1); // n + + // [rand.adapt.ibits] 2 (b) + static constexpr size_t kSmallIters = + kTotalIters - (kResultBits % kTotalIters); // n0 + static constexpr size_t kSmallBits = kResultBits / kTotalIters; // w0 + static constexpr urbg_result_type kSmallRejection = + ((kUrbgRange >> kSmallBits) << kSmallBits); // y0 + + static constexpr size_t kLargeBits = kSmallBits + 1; // w0+1 + static constexpr urbg_result_type kLargeRejection = + ((kUrbgRange >> kLargeBits) << kLargeBits); // y1 + // - // Because `kLargeWidth == kSmallWidth + 1`, it follows that + // Because `kLargeBits == kSmallBits + 1`, it follows that // - // `kTotalWidth == kTotalIters * kSmallWidth + kLargeIters` + // `kResultBits == kSmallIters * kSmallBits + kLargeIters` // // and therefore // @@ -224,36 +224,40 @@ FastUniformBits::Generate(URBG& g, // NOLINT(runtime/references) // mentioned above, if the URBG width is a divisor of `kTotalWidth`, then // there would be no need for any large iterations (i.e., one loop would // suffice), and indeed, in this case, `kLargeIters` would be zero. - constexpr size_t kLargeIters = kTotalWidth % kSmallWidth; - constexpr size_t kSmallIters = - (kTotalWidth - (kLargeWidth * kLargeIters)) / kSmallWidth; + static_assert(kResultBits == kSmallIters * kSmallBits + + (kTotalIters - kSmallIters) * kLargeBits, + "Error in looping constant calculations."); - static_assert( - kTotalWidth == kSmallIters * kSmallWidth + kLargeIters * kLargeWidth, - "Error in looping constant calculations."); + // The small shift is essentially small bits, but due to the potential + // of generating a smaller result_type from a larger urbg type, the actual + // shift might be 0. + static constexpr size_t kSmallShift = kSmallBits % kResultBits; + static constexpr auto kSmallMask = + MaskFromShift(kSmallShift); + static constexpr size_t kLargeShift = kLargeBits % kResultBits; + static constexpr auto kLargeMask = + MaskFromShift(kLargeShift); - result_type s = 0; + static constexpr auto kMin = (URBG::min)(); - constexpr size_t kSmallShift = kSmallWidth % kTotalWidth; - constexpr result_type kSmallMask = MaskFromShift(result_type{kSmallShift}); + result_type s = 0; for (size_t n = 0; n < kSmallIters; ++n) { - s = (s << kSmallShift) + - (static_cast(PowerOfTwoVariate(g)) & kSmallMask); - } + urbg_result_type v; + do { + v = g() - kMin; + } while (v >= kSmallRejection); - constexpr size_t kLargeShift = kLargeWidth % kTotalWidth; - constexpr result_type kLargeMask = MaskFromShift(result_type{kLargeShift}); - for (size_t n = 0; n < kLargeIters; ++n) { - s = (s << kLargeShift) + - (static_cast(PowerOfTwoVariate(g)) & kLargeMask); + s = (s << kSmallShift) + static_cast(v & kSmallMask); } - static_assert( - kLargeShift == kSmallShift + 1 || - (kLargeShift == 0 && - kSmallShift == std::numeric_limits::digits - 1), - "Error in looping constant calculations"); + for (size_t n = kSmallIters; n < kTotalIters; ++n) { + urbg_result_type v; + do { + v = g() - kMin; + } while (v >= kLargeRejection); + s = (s << kLargeShift) + static_cast(v & kLargeMask); + } return s; } diff --git a/absl/random/internal/fast_uniform_bits_test.cc b/absl/random/internal/fast_uniform_bits_test.cc index f5b837e5..cee702df 100644 --- a/absl/random/internal/fast_uniform_bits_test.cc +++ b/absl/random/internal/fast_uniform_bits_test.cc @@ -34,8 +34,8 @@ TYPED_TEST(FastUniformBitsTypedTest, BasicTest) { using Limits = std::numeric_limits; using FastBits = FastUniformBits; - EXPECT_EQ(0, FastBits::min()); - EXPECT_EQ(Limits::max(), FastBits::max()); + EXPECT_EQ(0, (FastBits::min)()); + EXPECT_EQ((Limits::max)(), (FastBits::max)()); constexpr int kIters = 10000; std::random_device rd; @@ -43,8 +43,8 @@ TYPED_TEST(FastUniformBitsTypedTest, BasicTest) { FastBits fast; for (int i = 0; i < kIters; i++) { const auto v = fast(gen); - EXPECT_LE(v, FastBits::max()); - EXPECT_GE(v, FastBits::min()); + EXPECT_LE(v, (FastBits::max)()); + EXPECT_GE(v, (FastBits::min)()); } } @@ -52,21 +52,26 @@ template struct FakeUrbg { using result_type = UIntType; + FakeUrbg() = default; + explicit FakeUrbg(bool r) : reject(r) {} + static constexpr result_type(max)() { return Hi; } static constexpr result_type(min)() { return Lo; } - result_type operator()() { return Val; } -}; + result_type operator()() { + // when reject is set, return Hi half the time. + return ((++calls % 2) == 1 && reject) ? Hi : Val; + } -using UrngOddbits = FakeUrbg; -using Urng4bits = FakeUrbg; -using Urng31bits = FakeUrbg; -using Urng32bits = FakeUrbg; + bool reject = false; + size_t calls = 0; +}; TEST(FastUniformBitsTest, IsPowerOfTwoOrZero) { EXPECT_TRUE(IsPowerOfTwoOrZero(uint8_t{0})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint8_t{1})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint8_t{2})); EXPECT_FALSE(IsPowerOfTwoOrZero(uint8_t{3})); + EXPECT_TRUE(IsPowerOfTwoOrZero(uint8_t{4})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint8_t{16})); EXPECT_FALSE(IsPowerOfTwoOrZero(uint8_t{17})); EXPECT_FALSE(IsPowerOfTwoOrZero((std::numeric_limits::max)())); @@ -75,6 +80,7 @@ TEST(FastUniformBitsTest, IsPowerOfTwoOrZero) { EXPECT_TRUE(IsPowerOfTwoOrZero(uint16_t{1})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint16_t{2})); EXPECT_FALSE(IsPowerOfTwoOrZero(uint16_t{3})); + EXPECT_TRUE(IsPowerOfTwoOrZero(uint16_t{4})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint16_t{16})); EXPECT_FALSE(IsPowerOfTwoOrZero(uint16_t{17})); EXPECT_FALSE(IsPowerOfTwoOrZero((std::numeric_limits::max)())); @@ -91,181 +97,237 @@ TEST(FastUniformBitsTest, IsPowerOfTwoOrZero) { EXPECT_TRUE(IsPowerOfTwoOrZero(uint64_t{1})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint64_t{2})); EXPECT_FALSE(IsPowerOfTwoOrZero(uint64_t{3})); + EXPECT_TRUE(IsPowerOfTwoOrZero(uint64_t{4})); EXPECT_TRUE(IsPowerOfTwoOrZero(uint64_t{64})); EXPECT_FALSE(IsPowerOfTwoOrZero(uint64_t{17})); EXPECT_FALSE(IsPowerOfTwoOrZero((std::numeric_limits::max)())); } TEST(FastUniformBitsTest, IntegerLog2) { - EXPECT_EQ(IntegerLog2(uint16_t{0}), 0); - EXPECT_EQ(IntegerLog2(uint16_t{1}), 0); - EXPECT_EQ(IntegerLog2(uint16_t{2}), 1); - EXPECT_EQ(IntegerLog2(uint16_t{3}), 1); - EXPECT_EQ(IntegerLog2(uint16_t{4}), 2); - EXPECT_EQ(IntegerLog2(uint16_t{5}), 2); - EXPECT_EQ(IntegerLog2(std::numeric_limits::max()), 63); + EXPECT_EQ(0, IntegerLog2(uint16_t{0})); + EXPECT_EQ(0, IntegerLog2(uint16_t{1})); + EXPECT_EQ(1, IntegerLog2(uint16_t{2})); + EXPECT_EQ(1, IntegerLog2(uint16_t{3})); + EXPECT_EQ(2, IntegerLog2(uint16_t{4})); + EXPECT_EQ(2, IntegerLog2(uint16_t{5})); + EXPECT_EQ(2, IntegerLog2(uint16_t{7})); + EXPECT_EQ(3, IntegerLog2(uint16_t{8})); + EXPECT_EQ(63, IntegerLog2((std::numeric_limits::max)())); } TEST(FastUniformBitsTest, RangeSize) { - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 1); - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 5); - EXPECT_EQ((RangeSize>()), 9); + EXPECT_EQ(2, (RangeSize>())); + EXPECT_EQ(3, (RangeSize>())); + EXPECT_EQ(4, (RangeSize>())); + // EXPECT_EQ(0, (RangeSize>())); + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(5, (RangeSize>())); + EXPECT_EQ(9, (RangeSize>())); EXPECT_EQ( - (RangeSize::max()>>()), - 0); - - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 1); - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 5); - EXPECT_EQ((RangeSize>()), 18); - EXPECT_EQ((RangeSize< - FakeUrbg::max()>>()), - 0); - - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 1); - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 5); - EXPECT_EQ((RangeSize>()), 18); - EXPECT_EQ((RangeSize>()), 0); - EXPECT_EQ((RangeSize>()), 0xffffffff); - EXPECT_EQ((RangeSize>()), 0xfffffffe); - EXPECT_EQ((RangeSize>()), 0xfffffffd); - EXPECT_EQ((RangeSize< - FakeUrbg::max()>>()), - 0); - - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 1); - EXPECT_EQ((RangeSize>()), 4); - EXPECT_EQ((RangeSize>()), 5); - EXPECT_EQ((RangeSize>()), 18); - EXPECT_EQ((RangeSize>()), 0x100000000ull); - EXPECT_EQ((RangeSize>()), 0xffffffffull); - EXPECT_EQ((RangeSize>()), 0xfffffffeull); - EXPECT_EQ((RangeSize>()), 0xfffffffdull); - EXPECT_EQ((RangeSize>()), 0ull); - EXPECT_EQ((RangeSize>()), - 0xffffffffffffffffull); - EXPECT_EQ((RangeSize>()), - 0xfffffffffffffffeull); - EXPECT_EQ((RangeSize>()), - 0xfffffffffffffffdull); - EXPECT_EQ((RangeSize< - FakeUrbg::max()>>()), - 0); -} + 0, (RangeSize< + FakeUrbg::max)()>>())); -TEST(FastUniformBitsTest, PowerOfTwoSubRangeSize) { - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 1); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 8); - EXPECT_EQ((PowerOfTwoSubRangeSize< - FakeUrbg::max()>>()), - 0); - - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 1); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 16); - EXPECT_EQ((PowerOfTwoSubRangeSize< - FakeUrbg::max()>>()), - 0); - - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 1); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 16); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 0); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), - 0x80000000); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), - 0x80000000); - EXPECT_EQ((PowerOfTwoSubRangeSize< - FakeUrbg::max()>>()), - 0); - - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 1); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 4); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), 16); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), - 0x100000000ull); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), - 0x80000000ull); - EXPECT_EQ((PowerOfTwoSubRangeSize>()), - 0x80000000ull); + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(5, (RangeSize>())); + EXPECT_EQ(18, (RangeSize>())); EXPECT_EQ( - (PowerOfTwoSubRangeSize>()), - 0); + 0, (RangeSize< + FakeUrbg::max)()>>())); + + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(5, (RangeSize>())); + EXPECT_EQ(18, (RangeSize>())); + EXPECT_EQ(0, (RangeSize>())); + EXPECT_EQ(0xffffffff, (RangeSize>())); + EXPECT_EQ(0xfffffffe, (RangeSize>())); + EXPECT_EQ(0xfffffffd, (RangeSize>())); EXPECT_EQ( - (PowerOfTwoSubRangeSize>()), - 0x8000000000000000ull); + 0, (RangeSize< + FakeUrbg::max)()>>())); + + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(4, (RangeSize>())); + EXPECT_EQ(5, (RangeSize>())); + EXPECT_EQ(18, (RangeSize>())); + EXPECT_EQ(0x100000000, (RangeSize>())); + EXPECT_EQ(0xffffffff, (RangeSize>())); + EXPECT_EQ(0xfffffffe, (RangeSize>())); + EXPECT_EQ(0xfffffffd, (RangeSize>())); + EXPECT_EQ(0, (RangeSize>())); + EXPECT_EQ(0xffffffffffffffff, + (RangeSize>())); + EXPECT_EQ(0xfffffffffffffffe, + (RangeSize>())); + EXPECT_EQ(0xfffffffffffffffd, + (RangeSize>())); EXPECT_EQ( - (PowerOfTwoSubRangeSize>()), - 0x8000000000000000ull); - EXPECT_EQ((PowerOfTwoSubRangeSize< - FakeUrbg::max()>>()), - 0); + 0, (RangeSize< + FakeUrbg::max)()>>())); } -TEST(FastUniformBitsTest, Urng4_VariousOutputs) { +// The constants need to be choosen so that an infinite rejection loop doesn't +// happen... +using Urng1_5bit = FakeUrbg; // ~1.5 bits (range 3) +using Urng4bits = FakeUrbg; +using Urng22bits = FakeUrbg; +using Urng31bits = FakeUrbg; // ~31.9 bits +using Urng32bits = FakeUrbg; +using Urng33bits = + FakeUrbg; // ~32.9 bits +using Urng63bits = FakeUrbg; // ~63.9 bits +using Urng64bits = + FakeUrbg; + +TEST(FastUniformBitsTest, OutputsUpTo32Bits) { // Tests that how values are composed; the single-bit deltas should be spread // across each invocation. + Urng1_5bit urng1_5; Urng4bits urng4; + Urng22bits urng22; Urng31bits urng31; Urng32bits urng32; + Urng33bits urng33; + Urng63bits urng63; + Urng64bits urng64; // 8-bit types { FastUniformBits fast8; + EXPECT_EQ(0x0, fast8(urng1_5)); EXPECT_EQ(0x11, fast8(urng4)); + EXPECT_EQ(0x20, fast8(urng22)); EXPECT_EQ(0x2, fast8(urng31)); EXPECT_EQ(0x1, fast8(urng32)); + EXPECT_EQ(0x32, fast8(urng33)); + EXPECT_EQ(0x77, fast8(urng63)); + EXPECT_EQ(0xa9, fast8(urng64)); } // 16-bit types { FastUniformBits fast16; + EXPECT_EQ(0x0, fast16(urng1_5)); EXPECT_EQ(0x1111, fast16(urng4)); - EXPECT_EQ(0xf02, fast16(urng31)); - EXPECT_EQ(0xf01, fast16(urng32)); + EXPECT_EQ(0x1020, fast16(urng22)); + EXPECT_EQ(0x0f02, fast16(urng31)); + EXPECT_EQ(0x0f01, fast16(urng32)); + EXPECT_EQ(0x1032, fast16(urng33)); + EXPECT_EQ(0x5677, fast16(urng63)); + EXPECT_EQ(0xcba9, fast16(urng64)); } // 32-bit types { FastUniformBits fast32; + EXPECT_EQ(0x0, fast32(urng1_5)); EXPECT_EQ(0x11111111, fast32(urng4)); + EXPECT_EQ(0x08301020, fast32(urng22)); EXPECT_EQ(0x0f020f02, fast32(urng31)); EXPECT_EQ(0x74010f01, fast32(urng32)); + EXPECT_EQ(0x13301032, fast32(urng33)); + EXPECT_EQ(0x12345677, fast32(urng63)); + EXPECT_EQ(0x0fedcba9, fast32(urng64)); } +} + +TEST(FastUniformBitsTest, Outputs64Bits) { + // Tests that how values are composed; the single-bit deltas should be spread + // across each invocation. + FastUniformBits fast64; - // 64-bit types { - FastUniformBits fast64; + FakeUrbg urng0; + FakeUrbg urng1; + Urng4bits urng4; + Urng22bits urng22; + Urng31bits urng31; + Urng32bits urng32; + Urng33bits urng33; + Urng63bits urng63; + Urng64bits urng64; + + // somewhat degenerate cases only create a single bit. + EXPECT_EQ(0x0, fast64(urng0)); + EXPECT_EQ(64, urng0.calls); + EXPECT_EQ(0xffffffffffffffff, fast64(urng1)); + EXPECT_EQ(64, urng1.calls); + + // less degenerate cases. EXPECT_EQ(0x1111111111111111, fast64(urng4)); + EXPECT_EQ(16, urng4.calls); + EXPECT_EQ(0x01020c0408301020, fast64(urng22)); + EXPECT_EQ(3, urng22.calls); EXPECT_EQ(0x387811c3c0870f02, fast64(urng31)); + EXPECT_EQ(3, urng31.calls); EXPECT_EQ(0x74010f0174010f01, fast64(urng32)); + EXPECT_EQ(2, urng32.calls); + EXPECT_EQ(0x808194040cb01032, fast64(urng33)); + EXPECT_EQ(3, urng33.calls); + EXPECT_EQ(0x1234567712345677, fast64(urng63)); + EXPECT_EQ(2, urng63.calls); + EXPECT_EQ(0x123456780fedcba9, fast64(urng64)); + EXPECT_EQ(1, urng64.calls); + } + + // The 1.5 bit case is somewhat interesting in that the algorithm refinement + // causes one extra small sample. Comments here reference the names used in + // [rand.adapt.ibits] that correspond to this case. + { + Urng1_5bit urng1_5; + + // w = 64 + // R = 3 + // m = 1 + // n' = 64 + // w0' = 1 + // y0' = 2 + // n = (1 <= 0) > 64 : 65 = 65 + // n0 = 65 - (64%65) = 1 + // n1 = 64 + // w0 = 0 + // y0 = 3 + // w1 = 1 + // y1 = 2 + EXPECT_EQ(0x0, fast64(urng1_5)); + EXPECT_EQ(65, urng1_5.calls); + } + + // Validate rejections for non-power-of-2 cases. + { + Urng1_5bit urng1_5(true); + Urng31bits urng31(true); + Urng33bits urng33(true); + Urng63bits urng63(true); + + // For 1.5 bits, there would be 1+2*64, except the first + // value was accepted and shifted off the end. + EXPECT_EQ(0, fast64(urng1_5)); + EXPECT_EQ(128, urng1_5.calls); + EXPECT_EQ(0x387811c3c0870f02, fast64(urng31)); + EXPECT_EQ(6, urng31.calls); + EXPECT_EQ(0x808194040cb01032, fast64(urng33)); + EXPECT_EQ(6, urng33.calls); + EXPECT_EQ(0x1234567712345677, fast64(urng63)); + EXPECT_EQ(4, urng63.calls); } } TEST(FastUniformBitsTest, URBG32bitRegression) { // Validate with deterministic 32-bit std::minstd_rand // to ensure that operator() performs as expected. + + EXPECT_EQ(2147483646, RangeSize()); + EXPECT_EQ(30, IntegerLog2(RangeSize())); + std::minstd_rand gen(1); FastUniformBits fast64; - EXPECT_EQ(0x05e47095f847c122ull, fast64(gen)); - EXPECT_EQ(0x8f82c1ba30b64d22ull, fast64(gen)); - EXPECT_EQ(0x3b971a3558155039ull, fast64(gen)); + EXPECT_EQ(0x05e47095f8791f45, fast64(gen)); + EXPECT_EQ(0x028be17e3c07c122, fast64(gen)); + EXPECT_EQ(0x55d2847c1626e8c2, fast64(gen)); } } // namespace diff --git a/absl/synchronization/mutex.h b/absl/synchronization/mutex.h index 876698ca..52401fe3 100644 --- a/absl/synchronization/mutex.h +++ b/absl/synchronization/mutex.h @@ -685,6 +685,11 @@ class Condition { // return processed_ >= current; // }; // mu_.Await(Condition(&reached)); + // + // NOTE: never use "mu_.AssertHeld()" instead of "mu_.AssertReadHeld()" in the + // lambda as it may be called when the mutex is being unlocked from a scope + // holding only a reader lock, which will make the assertion not fulfilled and + // crash the binary. // See class comment for performance advice. In particular, if there // might be more than one waiter for the same condition, make sure diff --git a/absl/time/internal/cctz/src/time_zone_format.cc b/absl/time/internal/cctz/src/time_zone_format.cc index 2e02233c..d8cb0474 100644 --- a/absl/time/internal/cctz/src/time_zone_format.cc +++ b/absl/time/internal/cctz/src/time_zone_format.cc @@ -654,14 +654,23 @@ const char* ParseTM(const char* dp, const char* fmt, std::tm* tm) { } // Sets year, tm_mon and tm_mday given the year, week_num, and tm_wday, -// and the day on which weeks are defined to start. -void FromWeek(int week_num, weekday week_start, year_t* year, std::tm* tm) { +// and the day on which weeks are defined to start. Returns false if year +// would need to move outside its bounds. +bool FromWeek(int week_num, weekday week_start, year_t* year, std::tm* tm) { const civil_year y(*year % 400); civil_day cd = prev_weekday(y, week_start); // week 0 cd = next_weekday(cd - 1, FromTmWday(tm->tm_wday)) + (week_num * 7); - *year += cd.year() - y.year(); + if (const year_t shift = cd.year() - y.year()) { + if (shift > 0) { + if (*year > std::numeric_limits::max() - shift) return false; + } else { + if (*year < std::numeric_limits::min() - shift) return false; + } + *year += shift; + } tm->tm_mon = cd.month() - 1; tm->tm_mday = cd.day(); + return true; } } // namespace @@ -965,7 +974,12 @@ bool parse(const std::string& format, const std::string& input, } // Compute year, tm.tm_mon and tm.tm_mday if we parsed a week number. - if (week_num != -1) FromWeek(week_num, week_start, &year, &tm); + if (week_num != -1) { + if (!FromWeek(week_num, week_start, &year, &tm)) { + if (err != nullptr) *err = "Out-of-range field"; + return false; + } + } const int month = tm.tm_mon + 1; civil_second cs(year, month, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); diff --git a/absl/time/internal/cctz/src/time_zone_format_test.cc b/absl/time/internal/cctz/src/time_zone_format_test.cc index e625a839..a11f93e2 100644 --- a/absl/time/internal/cctz/src/time_zone_format_test.cc +++ b/absl/time/internal/cctz/src/time_zone_format_test.cc @@ -1481,6 +1481,11 @@ TEST(Parse, WeekYearShift) { EXPECT_EQ(exp, tp); EXPECT_TRUE(parse("%Y-%W-%w", "2020-52-5", utc, &tp)); EXPECT_EQ(exp, tp); + + // Slipping into the previous/following calendar years should fail when + // we're already at the extremes. + EXPECT_FALSE(parse("%Y-%U-%u", "-9223372036854775808-0-7", utc, &tp)); + EXPECT_FALSE(parse("%Y-%U-%u", "9223372036854775807-53-7", utc, &tp)); } TEST(Parse, MaxRange) { diff --git a/absl/time/internal/cctz/src/time_zone_libc.cc b/absl/time/internal/cctz/src/time_zone_libc.cc index 47cf84c6..3fcc75bd 100644 --- a/absl/time/internal/cctz/src/time_zone_libc.cc +++ b/absl/time/internal/cctz/src/time_zone_libc.cc @@ -223,11 +223,10 @@ time_zone::civil_lookup TimeZoneLibC::MakeTime(const civil_second& cs) const { civil_second() + ToUnixSeconds(time_point::min()); static const civil_second max_tp_cs = civil_second() + ToUnixSeconds(time_point::max()); - const time_point tp = - (cs < min_tp_cs) - ? time_point::min() - : (cs > max_tp_cs) ? time_point::max() - : FromUnixSeconds(cs - civil_second()); + const time_point tp = (cs < min_tp_cs) ? time_point::min() + : (cs > max_tp_cs) + ? time_point::max() + : FromUnixSeconds(cs - civil_second()); return {time_zone::civil_lookup::UNIQUE, tp, tp, tp}; } diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 269fa36c..659f84cf 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -108,15 +108,15 @@ struct tzhead { #ifndef TZ_MAX_TYPES /* This must be at least 17 for Europe/Samara and Europe/Vilnius. */ #define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ -#endif /* !defined TZ_MAX_TYPES */ +#endif /* !defined TZ_MAX_TYPES */ #ifndef TZ_MAX_CHARS #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ - /* (limited by what unsigned chars can hold) */ -#endif /* !defined TZ_MAX_CHARS */ +/* (limited by what unsigned chars can hold) */ +#endif /* !defined TZ_MAX_CHARS */ #ifndef TZ_MAX_LEAPS #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ -#endif /* !defined TZ_MAX_LEAPS */ +#endif /* !defined TZ_MAX_LEAPS */ #endif /* !defined TZFILE_H */ diff --git a/absl/types/CMakeLists.txt b/absl/types/CMakeLists.txt index 0dc0d2c7..3f99ad8a 100644 --- a/absl/types/CMakeLists.txt +++ b/absl/types/CMakeLists.txt @@ -259,7 +259,7 @@ absl_cc_library( absl::strings absl::utility gmock_main - PUBLIC + TESTONLY ) absl_cc_test( -- cgit v1.2.3 From 0bbebc85cd8dbd382b10698b3cefe9a01e88e76f Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 13 Nov 2020 08:47:54 -0800 Subject: Export of internal Abseil changes -- a1b28d83d60f96e14487f093566f12ba07f92732 by Mark Barolak : Import of CCTZ from GitHub. PiperOrigin-RevId: 342270204 -- 3d99c08b7e2ee23050f64965f09881b54821cdd0 by Mark Barolak : Fix a Windows DLL breakage that is causing all sub-libraries to be compiled as DLL dependencies instead of stand-alone DLLs. See https://github.com/abseil/abseil-cpp/issues/796 for the bug report. Import of https://github.com/abseil/abseil-cpp/pull/797 PiperOrigin-RevId: 341892182 GitOrigin-RevId: a1b28d83d60f96e14487f093566f12ba07f92732 Change-Id: I7d70f07492bfa9b657ec280a4f005c1ee893594c --- CMake/AbseilHelpers.cmake | 6 +++++- absl/time/internal/cctz/src/time_zone_libc.cc | 8 +++++++- absl/time/internal/cctz/src/tzfile.h | 8 ++++---- 3 files changed, 16 insertions(+), 6 deletions(-) (limited to 'absl/time/internal/cctz/src/tzfile.h') diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake index c8060709..e85deba8 100644 --- a/CMake/AbseilHelpers.cmake +++ b/CMake/AbseilHelpers.cmake @@ -122,7 +122,11 @@ function(absl_cc_library) # 4. "static" -- This target does not depend on the DLL and should be built # statically. if (${ABSL_BUILD_DLL}) - absl_internal_dll_contains(TARGET ${_NAME} OUTPUT _in_dll) + if(ABSL_ENABLE_INSTALL) + absl_internal_dll_contains(TARGET ${_NAME} OUTPUT _in_dll) + else() + absl_internal_dll_contains(TARGET ${ABSL_CC_LIB_NAME} OUTPUT _in_dll) + endif() if (${_in_dll}) # This target should be replaced by the DLL set(_build_type "dll") diff --git a/absl/time/internal/cctz/src/time_zone_libc.cc b/absl/time/internal/cctz/src/time_zone_libc.cc index a14982a9..887dd097 100644 --- a/absl/time/internal/cctz/src/time_zone_libc.cc +++ b/absl/time/internal/cctz/src/time_zone_libc.cc @@ -27,6 +27,12 @@ #include "absl/time/internal/cctz/include/cctz/civil_time.h" #include "absl/time/internal/cctz/include/cctz/time_zone.h" +#if defined(_AIX) +extern "C" { +extern long altzone; +} +#endif + namespace absl { ABSL_NAMESPACE_BEGIN namespace time_internal { @@ -44,7 +50,7 @@ auto tm_zone(const std::tm& tm) -> decltype(_tzname[0]) { const bool is_dst = tm.tm_isdst > 0; return _tzname[is_dst]; } -#elif defined(__sun) +#elif defined(__sun) || defined(_AIX) // Uses the globals: 'timezone', 'altzone' and 'tzname'. auto tm_gmtoff(const std::tm& tm) -> decltype(timezone) { const bool is_dst = tm.tm_isdst > 0; diff --git a/absl/time/internal/cctz/src/tzfile.h b/absl/time/internal/cctz/src/tzfile.h index 659f84cf..269fa36c 100644 --- a/absl/time/internal/cctz/src/tzfile.h +++ b/absl/time/internal/cctz/src/tzfile.h @@ -108,15 +108,15 @@ struct tzhead { #ifndef TZ_MAX_TYPES /* This must be at least 17 for Europe/Samara and Europe/Vilnius. */ #define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ -#endif /* !defined TZ_MAX_TYPES */ +#endif /* !defined TZ_MAX_TYPES */ #ifndef TZ_MAX_CHARS #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ -/* (limited by what unsigned chars can hold) */ -#endif /* !defined TZ_MAX_CHARS */ + /* (limited by what unsigned chars can hold) */ +#endif /* !defined TZ_MAX_CHARS */ #ifndef TZ_MAX_LEAPS #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ -#endif /* !defined TZ_MAX_LEAPS */ +#endif /* !defined TZ_MAX_LEAPS */ #endif /* !defined TZFILE_H */ -- cgit v1.2.3