Commit c476da14 by Ashley Hedberg

Export of internal Abseil changes.

--
4e043a11b4c10a24e84046827ee16f47e11e35cc by Abseil Team <absl-team@google.com>:

Merge of https://github.com/abseil/abseil-cpp/pull/136

PiperOrigin-RevId: 218197648

--
e61f06e1e601061a443feaa8c5207c52437bd641 by Abseil Team <absl-team@google.com>:

Don't include <iostream> 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 <zhangxy@google.com>:

Fix MSVC compiler warnings on discarding return values of functions with 'nodiscard'
attribute.

PiperOrigin-RevId: 217883401

--
abf3e3a0f22bc4070df9dbc9a4ef4d883ed686bf by Tom Manshreck <shreck@google.com>:

Update public README to add new libraries

PiperOrigin-RevId: 217879399

--
43b3b420a4e861711abbfbd497b8f2b3de17ec8c by Abseil Team <absl-team@google.com>:

Import of CCTZ from GitHub.

PiperOrigin-RevId: 217780963

--
1c8831947ca6a65a63842e6bd5f37a7c102a4e1b by Abseil Team <absl-team@google.com>:

Fix typo in a comment (missing comma in usage example).

PiperOrigin-RevId: 217776645
GitOrigin-RevId: 4e043a11b4c10a24e84046827ee16f47e11e35cc
Change-Id: I8999ae928da7a0030b4ecfd8d13da8522fdd013a
parents 5fbde925 c16d5557
...@@ -63,10 +63,14 @@ Abseil contains the following C++ library components: ...@@ -63,10 +63,14 @@ Abseil contains the following C++ library components:
<br /> The `algorithm` library contains additions to the C++ `<algorithm>` <br /> The `algorithm` library contains additions to the C++ `<algorithm>`
library and container-based versions of such algorithms. library and container-based versions of such algorithms.
* [`container`](absl/container/) * [`container`](absl/container/)
<br /> The `container` library contains additional STL-style containers. <br /> The `container` library contains additional STL-style containers,
including Abseil's unordered "Swiss table" containers.
* [`debugging`](absl/debugging/) * [`debugging`](absl/debugging/)
<br /> The `debugging` library contains code useful for enabling leak <br /> The `debugging` library contains code useful for enabling leak
checks. Future updates will add stacktrace and symbolization utilities. checks, and stacktrace and symbolization utilities.
* [`hash`](absl/hash/)
<br /> The `hash` library contains the hashing framework and default hash
functor implementations for hashable types in Abseil.
* [`memory`](absl/memory/) * [`memory`](absl/memory/)
<br /> The `memory` library contains C++11-compatible versions of <br /> The `memory` library contains C++11-compatible versions of
`std::make_unique()` and related memory management facilities. `std::make_unique()` and related memory management facilities.
...@@ -90,6 +94,8 @@ Abseil contains the following C++ library components: ...@@ -90,6 +94,8 @@ Abseil contains the following C++ library components:
* [`types`](absl/types/) * [`types`](absl/types/)
<br /> The `types` library contains non-container utility types, like a <br /> The `types` library contains non-container utility types, like a
C++11-compatible version of the C++17 `std::optional` type. C++11-compatible version of the C++17 `std::optional` type.
* [`utility`](absl/utility/)
<br /> The `utility` library contains utility and helper code.
## License ## License
......
...@@ -48,11 +48,9 @@ list(APPEND CONTAINER_INTERNAL_HEADERS ...@@ -48,11 +48,9 @@ list(APPEND CONTAINER_INTERNAL_HEADERS
) )
absl_library( absl_header_library(
TARGET TARGET
absl_container absl_container
SOURCES
"internal/raw_hash_set.cc"
EXPORT_NAME EXPORT_NAME
container container
) )
...@@ -164,13 +162,3 @@ absl_test( ...@@ -164,13 +162,3 @@ absl_test(
PUBLIC_LIBRARIES PUBLIC_LIBRARIES
${TEST_INSTANCE_TRACKER_TEST_PUBLIC_LIBRARIES} ${TEST_INSTANCE_TRACKER_TEST_PUBLIC_LIBRARIES}
) )
absl_test(
TARGET
raw_hash_set_test
SOURCES
"internal/raw_hash_set_test.cc"
PUBLIC_LIBRARIES
absl::base absl::hash absl_throw_delegate test_instance_tracker_lib
)
...@@ -66,6 +66,3 @@ absl_test( ...@@ -66,6 +66,3 @@ absl_test(
PRIVATE_COMPILE_FLAGS PRIVATE_COMPILE_FLAGS
${ABSL_EXCEPTIONS_FLAG} ${ABSL_EXCEPTIONS_FLAG}
) )
...@@ -145,7 +145,7 @@ TEST(Make_UniqueTest, NotAmbiguousWithStdMakeUnique) { ...@@ -145,7 +145,7 @@ TEST(Make_UniqueTest, NotAmbiguousWithStdMakeUnique) {
explicit TakesStdType(const std::vector<int> &vec) {} explicit TakesStdType(const std::vector<int> &vec) {}
}; };
using absl::make_unique; using absl::make_unique;
make_unique<TakesStdType>(std::vector<int>()); (void)make_unique<TakesStdType>(std::vector<int>());
} }
#if 0 #if 0
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <stddef.h> #include <stddef.h>
#include <cassert> #include <cassert>
#include <iomanip> #include <iomanip>
#include <iostream> // NOLINT(readability/streams) #include <ostream> // NOLINT(readability/streams)
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <type_traits> #include <type_traits>
......
...@@ -460,4 +460,3 @@ absl_test( ...@@ -460,4 +460,3 @@ absl_test(
absl::base absl::base
) )
...@@ -151,7 +151,7 @@ void BM_find_string_view_len_one(benchmark::State& state) { ...@@ -151,7 +151,7 @@ void BM_find_string_view_len_one(benchmark::State& state) {
std::string haystack(state.range(0), '0'); std::string haystack(state.range(0), '0');
absl::string_view s(haystack); absl::string_view s(haystack);
for (auto _ : state) { for (auto _ : state) {
s.find("x"); // not present; length 1 benchmark::DoNotOptimize(s.find("x")); // not present; length 1
} }
} }
BENCHMARK(BM_find_string_view_len_one)->Range(1, 1 << 20); BENCHMARK(BM_find_string_view_len_one)->Range(1, 1 << 20);
...@@ -160,7 +160,7 @@ void BM_find_string_view_len_two(benchmark::State& state) { ...@@ -160,7 +160,7 @@ void BM_find_string_view_len_two(benchmark::State& state) {
std::string haystack(state.range(0), '0'); std::string haystack(state.range(0), '0');
absl::string_view s(haystack); absl::string_view s(haystack);
for (auto _ : state) { for (auto _ : state) {
s.find("xx"); // not present; length 2 benchmark::DoNotOptimize(s.find("xx")); // not present; length 2
} }
} }
BENCHMARK(BM_find_string_view_len_two)->Range(1, 1 << 20); BENCHMARK(BM_find_string_view_len_two)->Range(1, 1 << 20);
...@@ -169,7 +169,7 @@ void BM_find_one_char(benchmark::State& state) { ...@@ -169,7 +169,7 @@ void BM_find_one_char(benchmark::State& state) {
std::string haystack(state.range(0), '0'); std::string haystack(state.range(0), '0');
absl::string_view s(haystack); absl::string_view s(haystack);
for (auto _ : state) { for (auto _ : state) {
s.find('x'); // not present benchmark::DoNotOptimize(s.find('x')); // not present
} }
} }
BENCHMARK(BM_find_one_char)->Range(1, 1 << 20); BENCHMARK(BM_find_one_char)->Range(1, 1 << 20);
...@@ -178,7 +178,7 @@ void BM_rfind_one_char(benchmark::State& state) { ...@@ -178,7 +178,7 @@ void BM_rfind_one_char(benchmark::State& state) {
std::string haystack(state.range(0), '0'); std::string haystack(state.range(0), '0');
absl::string_view s(haystack); absl::string_view s(haystack);
for (auto _ : state) { for (auto _ : state) {
s.rfind('x'); // not present benchmark::DoNotOptimize(s.rfind('x')); // not present
} }
} }
BENCHMARK(BM_rfind_one_char)->Range(1, 1 << 20); BENCHMARK(BM_rfind_one_char)->Range(1, 1 << 20);
...@@ -193,7 +193,7 @@ void BM_worst_case_find_first_of(benchmark::State& state, int haystack_len) { ...@@ -193,7 +193,7 @@ void BM_worst_case_find_first_of(benchmark::State& state, int haystack_len) {
absl::string_view s(haystack); absl::string_view s(haystack);
for (auto _ : state) { for (auto _ : state) {
s.find_first_of(needle); benchmark::DoNotOptimize(s.find_first_of(needle));
} }
} }
......
...@@ -678,9 +678,9 @@ TEST(StringViewTest, STL2Substr) { ...@@ -678,9 +678,9 @@ TEST(StringViewTest, STL2Substr) {
EXPECT_EQ(a.substr(23, absl::string_view::npos), c); EXPECT_EQ(a.substr(23, absl::string_view::npos), c);
// throw exception // throw exception
#ifdef ABSL_HAVE_EXCEPTIONS #ifdef ABSL_HAVE_EXCEPTIONS
EXPECT_THROW(a.substr(99, 2), std::out_of_range); EXPECT_THROW((void)a.substr(99, 2), std::out_of_range);
#else #else
EXPECT_DEATH(a.substr(99, 2), "absl::string_view::substr"); EXPECT_DEATH((void)a.substr(99, 2), "absl::string_view::substr");
#endif #endif
} }
......
...@@ -342,7 +342,7 @@ using CivilYear = ...@@ -342,7 +342,7 @@ using CivilYear =
// //
// absl::CivilSecond cs = ...; // absl::CivilSecond cs = ...;
// absl::civil_year_t y = cs.year(); // absl::civil_year_t y = cs.year();
// cs = absl::CivilSecond(y, 1, 1, 0, 0 0); // CivilSecond(CivilYear(cs)) // cs = absl::CivilSecond(y, 1, 1, 0, 0, 0); // CivilSecond(CivilYear(cs))
// //
using civil_year_t = time_internal::cctz::year_t; using civil_year_t = time_internal::cctz::year_t;
......
/* Layout and location of TZif files. */
#ifndef TZFILE_H #ifndef TZFILE_H
#define TZFILE_H #define TZFILE_H
......
# tz zone descriptions # tzdb timezone descriptions
# #
# This file is in the public domain. # This file is in the public domain.
# #
# From Paul Eggert (2017-10-01): # From Paul Eggert (2018-06-27):
# This file contains a table where each row stands for a zone where # This file contains a table where each row stands for a timezone where
# civil time stamps have agreed since 1970. Columns are separated by # civil timestamps have agreed since 1970. Columns are separated by
# a single tab. Lines beginning with '#' are comments. All text uses # a single tab. Lines beginning with '#' are comments. All text uses
# UTF-8 encoding. The columns of the table are as follows: # UTF-8 encoding. The columns of the table are as follows:
# #
# 1. The countries that overlap the zone, as a comma-separated list # 1. The countries that overlap the timezone, as a comma-separated list
# of ISO 3166 2-character country codes. See the file 'iso3166.tab'. # of ISO 3166 2-character country codes. See the file 'iso3166.tab'.
# 2. Latitude and longitude of the zone's principal location # 2. Latitude and longitude of the timezone's principal location
# in ISO 6709 sign-degrees-minutes-seconds format, # in ISO 6709 sign-degrees-minutes-seconds format,
# either ±DDMM±DDDMM or ±DDMMSS±DDDMMSS, # either ±DDMM±DDDMM or ±DDMMSS±DDDMMSS,
# first latitude (+ is north), then longitude (+ is east). # first latitude (+ is north), then longitude (+ is east).
# 3. Zone name used in value of TZ environment variable. # 3. Timezone name used in value of TZ environment variable.
# Please see the theory.html file for how zone names are chosen. # Please see the theory.html file for how these names are chosen.
# If multiple zones overlap a country, each has a row in the # If multiple timezones overlap a country, each has a row in the
# table, with each column 1 containing the country code. # table, with each column 1 containing the country code.
# 4. Comments; present if and only if a country has multiple zones. # 4. Comments; present if and only if a country has multiple timezones.
# #
# If a zone covers multiple countries, the most-populous city is used, # If a timezone covers multiple countries, the most-populous city is used,
# and that country is listed first in column 1; any other countries # and that country is listed first in column 1; any other countries
# are listed alphabetically by country code. The table is sorted # are listed alphabetically by country code. The table is sorted
# first by country code, then (if possible) by an order within the # first by country code, then (if possible) by an order within the
# country that (1) makes some geographical sense, and (2) puts the # country that (1) makes some geographical sense, and (2) puts the
# most populous zones first, where that does not contradict (1). # most populous timezones first, where that does not contradict (1).
# #
# This table is intended as an aid for users, to help them select time # This table is intended as an aid for users, to help them select timezones
# zone data entries appropriate for their practical needs. It is not # appropriate for their practical needs. It is not intended to take or
# intended to take or endorse any position on legal or territorial claims. # endorse any position on legal or territorial claims.
# #
#country- #country-
#codes coordinates TZ comments #codes coordinates TZ comments
...@@ -231,7 +231,7 @@ MM +1647+09610 Asia/Yangon ...@@ -231,7 +231,7 @@ MM +1647+09610 Asia/Yangon
MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas) MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas)
MN +4801+09139 Asia/Hovd Bayan-Ölgii, Govi-Altai, Hovd, Uvs, Zavkhan MN +4801+09139 Asia/Hovd Bayan-Ölgii, Govi-Altai, Hovd, Uvs, Zavkhan
MN +4804+11430 Asia/Choibalsan Dornod, Sükhbaatar MN +4804+11430 Asia/Choibalsan Dornod, Sükhbaatar
MO +2214+11335 Asia/Macau MO +221150+1133230 Asia/Macau
MQ +1436-06105 America/Martinique MQ +1436-06105 America/Martinique
MT +3554+01431 Europe/Malta MT +3554+01431 Europe/Malta
MU -2010+05730 Indian/Mauritius MU -2010+05730 Indian/Mauritius
......
...@@ -1042,9 +1042,9 @@ TEST(optionalTest, Value) { ...@@ -1042,9 +1042,9 @@ TEST(optionalTest, Value) {
// test exception throw on value() // test exception throw on value()
absl::optional<int> empty; absl::optional<int> empty;
#ifdef ABSL_HAVE_EXCEPTIONS #ifdef ABSL_HAVE_EXCEPTIONS
EXPECT_THROW(empty.value(), absl::bad_optional_access); EXPECT_THROW((void)empty.value(), absl::bad_optional_access);
#else #else
EXPECT_DEATH(empty.value(), "Bad optional access"); EXPECT_DEATH((void)empty.value(), "Bad optional access");
#endif #endif
// test constexpr value() // test constexpr value()
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
#endif // ABSL_HAVE_EXCEPTIONS #endif // ABSL_HAVE_EXCEPTIONS
#define ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(...) \ #define ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(...) \
ABSL_VARIANT_TEST_EXPECT_FAIL((__VA_ARGS__), absl::bad_variant_access, \ ABSL_VARIANT_TEST_EXPECT_FAIL((void)(__VA_ARGS__), absl::bad_variant_access, \
"Bad variant access") "Bad variant access")
struct Hashable {}; struct Hashable {};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment