Export of internal Abseil changes
-- c99f979ad34f155fbeeea69b88bdc7458d89a21c by Derek Mauro <dmauro@google.com>: Remove a floating point division by zero test. This isn't testing behavior related to the library, and MSVC warns about it in opt mode. PiperOrigin-RevId: 285220804 -- 68b015491f0dbf1ab547994673281abd1f34cd4b by Gennadiy Rozental <rogeeff@google.com>: This CL introduces following changes to the class FlagImpl: * We eliminate the CommandLineFlagLocks struct. Instead callback guard and callback function are combined into a single CallbackData struct, while primary data lock is stored separately. * CallbackData member of class FlagImpl is initially set to be nullptr and is only allocated and initialized when a flag's callback is being set. For most flags we do not pay for the extra space and extra absl::Mutex now. * Primary data guard is stored in data_guard_ data member. This is a properly aligned character buffer of necessary size. During initialization of the flag we construct absl::Mutex in this space using placement new call. * We now avoid extra value copy after successful attempt to parse value out of string. Instead we swap flag's current value with tentative value we just produced. PiperOrigin-RevId: 285132636 -- ed45d118fb818969eb13094cf7827c885dfc562c by Tom Manshreck <shreck@google.com>: Change null-term* (and nul-term*) to NUL-term* in comments PiperOrigin-RevId: 285036610 -- 729619017944db895ce8d6d29c1995aa2e5628a5 by Derek Mauro <dmauro@google.com>: Use the Posix implementation of thread identity on MinGW. Some versions of MinGW suffer from thread_local bugs. PiperOrigin-RevId: 285022920 -- 39a25493503c76885bc3254c28f66a251c5b5bb0 by Greg Falcon <gfalcon@google.com>: Implementation detail change. Add further ABSL_NAMESPACE_BEGIN and _END annotation macros to files in Abseil. PiperOrigin-RevId: 285012012 GitOrigin-RevId: c99f979ad34f155fbeeea69b88bdc7458d89a21c Change-Id: I4c85d3704e45d11a9ac50d562f39640a6adbedc1
This commit is contained in:
parent
1e39f8626a
commit
12bc53e031
339 changed files with 948 additions and 82 deletions
|
|
@ -35,7 +35,9 @@
|
|||
#include <string_view> // IWYU pragma: export
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
using std::string_view;
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#else // ABSL_USES_STD_STRING_VIEW
|
||||
|
|
@ -61,6 +63,7 @@ using std::string_view;
|
|||
#include "absl/base/port.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// absl::string_view
|
||||
//
|
||||
|
|
@ -109,10 +112,10 @@ namespace absl {
|
|||
// example, when splitting a string, `std::vector<absl::string_view>` is a
|
||||
// natural data type for the output.
|
||||
//
|
||||
// When constructed from a source which is nul-terminated, the `string_view`
|
||||
// itself will not include the nul-terminator unless a specific size (including
|
||||
// the nul) is passed to the constructor. As a result, common idioms that work
|
||||
// on nul-terminated strings do not work on `string_view` objects. If you write
|
||||
// When constructed from a source which is NUL-terminated, the `string_view`
|
||||
// itself will not include the NUL-terminator unless a specific size (including
|
||||
// the NUL) is passed to the constructor. As a result, common idioms that work
|
||||
// on NUL-terminated strings do not work on `string_view` objects. If you write
|
||||
// code that scans a `string_view`, you must check its length rather than test
|
||||
// for nul, for example. Note, however, that nuls may still be embedded within
|
||||
// a `string_view` explicitly.
|
||||
|
|
@ -179,7 +182,7 @@ class string_view {
|
|||
// doesn't need to be reevaluated after `ptr_` is set.
|
||||
: string_view(str.data(), str.size()) {}
|
||||
|
||||
// Implicit constructor of a `string_view` from nul-terminated `str`. When
|
||||
// Implicit constructor of a `string_view` from NUL-terminated `str`. When
|
||||
// accepting possibly null strings, use `absl::NullSafeStringView(str)`
|
||||
// instead (see below).
|
||||
constexpr string_view(const char* str) // NOLINT(runtime/explicit)
|
||||
|
|
@ -309,8 +312,8 @@ class string_view {
|
|||
//
|
||||
// Returns a pointer to the underlying character array (which is of course
|
||||
// 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
|
||||
// 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.
|
||||
constexpr const_pointer data() const noexcept { return ptr_; }
|
||||
|
||||
|
|
@ -577,6 +580,7 @@ constexpr bool operator>=(string_view x, string_view y) noexcept {
|
|||
// IO Insertion Operator
|
||||
std::ostream& operator<<(std::ostream& o, string_view piece);
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#undef ABSL_INTERNAL_STRING_VIEW_MEMCMP
|
||||
|
|
@ -584,6 +588,7 @@ std::ostream& operator<<(std::ostream& o, string_view piece);
|
|||
#endif // ABSL_USES_STD_STRING_VIEW
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// ClippedSubstr()
|
||||
//
|
||||
|
|
@ -604,6 +609,7 @@ inline string_view NullSafeStringView(const char* p) {
|
|||
return p ? string_view(p) : string_view();
|
||||
}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_STRINGS_STRING_VIEW_H_
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue