Export of internal Abseil changes.
-- 821196cfb2a3b943ffdc4c9e75daec92d7ffb28b by Abseil Team <absl-team@google.com>: Performance improvements PiperOrigin-RevId: 212668992 -- 704858e2e767016bad27d53eec01d9d48e546b23 by Abseil Team <absl-team@google.com>: Low-level Portability enchancements for Abseil Mutex on WebAssembly. Emscripten Pthreads do not use signals, so remove use of pthread_sigmask or other async-signal-safe related handling code. PiperOrigin-RevId: 212527958 -- be3e38cb4d493b755132d20c8c2d1a51e45d5449 by Jon Cohen <cohenjon@google.com>: Internal change. PiperOrigin-RevId: 212523797 GitOrigin-RevId: 821196cfb2a3b943ffdc4c9e75daec92d7ffb28b Change-Id: I5694e23e4e09364a15dd6fc4e2e3f15e38835687
This commit is contained in:
parent
02451914b9
commit
8ff1374008
9 changed files with 198 additions and 170 deletions
|
@ -112,7 +112,7 @@ class ConvertedIntInfo {
|
|||
// Note: 'o' conversions do not have a base indicator, it's just that
|
||||
// the '#' flag is specified to modify the precision for 'o' conversions.
|
||||
string_view BaseIndicator(const ConvertedIntInfo &info,
|
||||
const ConversionSpec &conv) {
|
||||
const ConversionSpec conv) {
|
||||
bool alt = conv.flags().alt;
|
||||
int radix = conv.conv().radix();
|
||||
if (conv.conv().id() == ConversionChar::p)
|
||||
|
@ -127,7 +127,7 @@ string_view BaseIndicator(const ConvertedIntInfo &info,
|
|||
return {};
|
||||
}
|
||||
|
||||
string_view SignColumn(bool neg, const ConversionSpec &conv) {
|
||||
string_view SignColumn(bool neg, const ConversionSpec conv) {
|
||||
if (conv.conv().is_signed()) {
|
||||
if (neg) return "-";
|
||||
if (conv.flags().show_pos) return "+";
|
||||
|
@ -136,7 +136,7 @@ string_view SignColumn(bool neg, const ConversionSpec &conv) {
|
|||
return {};
|
||||
}
|
||||
|
||||
bool ConvertCharImpl(unsigned char v, const ConversionSpec &conv,
|
||||
bool ConvertCharImpl(unsigned char v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
size_t fill = 0;
|
||||
if (conv.width() >= 0) fill = conv.width();
|
||||
|
@ -148,7 +148,7 @@ bool ConvertCharImpl(unsigned char v, const ConversionSpec &conv,
|
|||
}
|
||||
|
||||
bool ConvertIntImplInner(const ConvertedIntInfo &info,
|
||||
const ConversionSpec &conv, FormatSinkImpl *sink) {
|
||||
const ConversionSpec conv, FormatSinkImpl *sink) {
|
||||
// Print as a sequence of Substrings:
|
||||
// [left_spaces][sign][base_indicator][zeroes][formatted][right_spaces]
|
||||
size_t fill = 0;
|
||||
|
@ -202,8 +202,7 @@ bool ConvertIntImplInner(const ConvertedIntInfo &info,
|
|||
}
|
||||
|
||||
template <typename T>
|
||||
bool ConvertIntImplInner(T v, const ConversionSpec &conv,
|
||||
FormatSinkImpl *sink) {
|
||||
bool ConvertIntImplInner(T v, const ConversionSpec conv, FormatSinkImpl *sink) {
|
||||
ConvertedIntInfo info(v, conv.conv());
|
||||
if (conv.flags().basic && conv.conv().id() != ConversionChar::p) {
|
||||
if (info.is_neg()) sink->Append(1, '-');
|
||||
|
@ -218,7 +217,7 @@ bool ConvertIntImplInner(T v, const ConversionSpec &conv,
|
|||
}
|
||||
|
||||
template <typename T>
|
||||
bool ConvertIntArg(T v, const ConversionSpec &conv, FormatSinkImpl *sink) {
|
||||
bool ConvertIntArg(T v, const ConversionSpec conv, FormatSinkImpl *sink) {
|
||||
if (conv.conv().is_float()) {
|
||||
return FormatConvertImpl(static_cast<double>(v), conv, sink).value;
|
||||
}
|
||||
|
@ -234,11 +233,11 @@ bool ConvertIntArg(T v, const ConversionSpec &conv, FormatSinkImpl *sink) {
|
|||
}
|
||||
|
||||
template <typename T>
|
||||
bool ConvertFloatArg(T v, const ConversionSpec &conv, FormatSinkImpl *sink) {
|
||||
bool ConvertFloatArg(T v, const ConversionSpec conv, FormatSinkImpl *sink) {
|
||||
return conv.conv().is_float() && ConvertFloatImpl(v, conv, sink);
|
||||
}
|
||||
|
||||
inline bool ConvertStringArg(string_view v, const ConversionSpec &conv,
|
||||
inline bool ConvertStringArg(string_view v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
if (conv.conv().id() != ConversionChar::s)
|
||||
return false;
|
||||
|
@ -254,19 +253,19 @@ inline bool ConvertStringArg(string_view v, const ConversionSpec &conv,
|
|||
|
||||
// ==================== Strings ====================
|
||||
ConvertResult<Conv::s> FormatConvertImpl(const std::string &v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertStringArg(v, conv, sink)};
|
||||
}
|
||||
|
||||
ConvertResult<Conv::s> FormatConvertImpl(string_view v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertStringArg(v, conv, sink)};
|
||||
}
|
||||
|
||||
ConvertResult<Conv::s | Conv::p> FormatConvertImpl(const char *v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
if (conv.conv().id() == ConversionChar::p)
|
||||
return {FormatConvertImpl(VoidPtr(v), conv, sink).value};
|
||||
|
@ -283,7 +282,7 @@ ConvertResult<Conv::s | Conv::p> FormatConvertImpl(const char *v,
|
|||
}
|
||||
|
||||
// ==================== Raw pointers ====================
|
||||
ConvertResult<Conv::p> FormatConvertImpl(VoidPtr v, const ConversionSpec &conv,
|
||||
ConvertResult<Conv::p> FormatConvertImpl(VoidPtr v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
if (conv.conv().id() != ConversionChar::p)
|
||||
return {false};
|
||||
|
@ -295,104 +294,83 @@ ConvertResult<Conv::p> FormatConvertImpl(VoidPtr v, const ConversionSpec &conv,
|
|||
}
|
||||
|
||||
// ==================== Floats ====================
|
||||
FloatingConvertResult FormatConvertImpl(float v, const ConversionSpec &conv,
|
||||
FloatingConvertResult FormatConvertImpl(float v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertFloatArg(v, conv, sink)};
|
||||
}
|
||||
FloatingConvertResult FormatConvertImpl(double v, const ConversionSpec &conv,
|
||||
FloatingConvertResult FormatConvertImpl(double v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertFloatArg(v, conv, sink)};
|
||||
}
|
||||
FloatingConvertResult FormatConvertImpl(long double v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertFloatArg(v, conv, sink)};
|
||||
}
|
||||
|
||||
// ==================== Chars ====================
|
||||
IntegralConvertResult FormatConvertImpl(char v, const ConversionSpec &conv,
|
||||
IntegralConvertResult FormatConvertImpl(char v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(signed char v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(unsigned char v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
|
||||
// ==================== Ints ====================
|
||||
IntegralConvertResult FormatConvertImpl(short v, // NOLINT
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(unsigned short v, // NOLINT
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(int v, const ConversionSpec &conv,
|
||||
IntegralConvertResult FormatConvertImpl(int v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(unsigned v, const ConversionSpec &conv,
|
||||
IntegralConvertResult FormatConvertImpl(unsigned v, const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(long v, // NOLINT
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(unsigned long v, // NOLINT
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(long long v, // NOLINT
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(unsigned long long v, // NOLINT
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
IntegralConvertResult FormatConvertImpl(absl::uint128 v,
|
||||
const ConversionSpec &conv,
|
||||
const ConversionSpec conv,
|
||||
FormatSinkImpl *sink) {
|
||||
return {ConvertIntArg(v, conv, sink)};
|
||||
}
|
||||
|
||||
template struct FormatArgImpl::TypedVTable<str_format_internal::VoidPtr>;
|
||||
ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_();
|
||||
|
||||
template struct FormatArgImpl::TypedVTable<bool>;
|
||||
template struct FormatArgImpl::TypedVTable<char>;
|
||||
template struct FormatArgImpl::TypedVTable<signed char>;
|
||||
template struct FormatArgImpl::TypedVTable<unsigned char>;
|
||||
template struct FormatArgImpl::TypedVTable<short>; // NOLINT
|
||||
template struct FormatArgImpl::TypedVTable<unsigned short>; // NOLINT
|
||||
template struct FormatArgImpl::TypedVTable<int>;
|
||||
template struct FormatArgImpl::TypedVTable<unsigned>;
|
||||
template struct FormatArgImpl::TypedVTable<long>; // NOLINT
|
||||
template struct FormatArgImpl::TypedVTable<unsigned long>; // NOLINT
|
||||
template struct FormatArgImpl::TypedVTable<long long>; // NOLINT
|
||||
template struct FormatArgImpl::TypedVTable<unsigned long long>; // NOLINT
|
||||
template struct FormatArgImpl::TypedVTable<absl::uint128>;
|
||||
|
||||
template struct FormatArgImpl::TypedVTable<float>;
|
||||
template struct FormatArgImpl::TypedVTable<double>;
|
||||
template struct FormatArgImpl::TypedVTable<long double>;
|
||||
|
||||
template struct FormatArgImpl::TypedVTable<const char *>;
|
||||
template struct FormatArgImpl::TypedVTable<std::string>;
|
||||
template struct FormatArgImpl::TypedVTable<string_view>;
|
||||
|
||||
} // namespace str_format_internal
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue