Export of internal Abseil changes
--
990253454819ce26ff1dda9ab4bbc145b61d01e4 by Xiaoyi Zhang <zhangxy@google.com>:
Import github PR https://github.com/abseil/abseil-cpp/pull/645
PiperOrigin-RevId: 303119797
--
5ac845cb7929b7d1eaf59a309afd811db5001175 by Abseil Team <absl-team@google.com>:
Fix internal exception spec compatibility error
PiperOrigin-RevId: 303104081
--
3290595dd866eecab3c7044e2e3ca0adb74f1bf5 by Gennadiy Rozental <rogeeff@google.com>:
Use FlagValue<T> to represent the value of a flag. Place it directly after
FlagImpl and use a computed offset refer to it.
The offset is computed based on the assumption that the `value_` data member
is placed directly after the impl_ data member in Flag<T>.
This change will allow us to migrate to `T`-specific storage in the generic case.
This change decreases the overhead for int flags by 32 bytes.
PiperOrigin-RevId: 303038099
--
f2b37722cd7a6d3a60ef9713f0d2bbff56f3ddbf by Derek Mauro <dmauro@google.com>:
Minor correctness fix for an ABSL_HAVE_BUILTIN conditional
PiperOrigin-RevId: 302980666
--
39c079a6141ae1c5728af8bf33a39c8aff9deb9f by Abseil Team <absl-team@google.com>:
Use ABSL_HARDENING_ASSERT in b-tree and SwissTable iterators.
PiperOrigin-RevId: 302970075
--
9668a044e080c789df32bcaa1ffb5100831cd9fa by Benjamin Barenblat <bbaren@google.com>:
Correct `add_subdirectory` line in CMake googletest support
Commit bcefbdcdf6 added support for building with CMake against a local googletest checkout, but I missed a line when constructing the diff. Change the `add_subdirectory` line to reference the correct directories.
PiperOrigin-RevId: 302947488
--
0a3c10fabf80a43ca69ab8b1570030e55f2be741 by Andy Soffer <asoffer@google.com>:
Remove unused distribution format traits.
PiperOrigin-RevId: 302896176
--
0478f2f6270e5ed64c0e28ec09556ca90b2d46a9 by Samuel Benzaquen <sbenza@google.com>:
Fix for CWG:2310.
PiperOrigin-RevId: 302734089
--
3cb978dda5cae5905affdc0914dcc2d27671ed11 by Samuel Benzaquen <sbenza@google.com>:
Fix the Allocate/Deallocate functions to use the same underlying allocator type.
PiperOrigin-RevId: 302721804
--
ae38d3984fb68b4e3ddc165fa8d5c24d5936be52 by Matthew Brown <matthewbr@google.com>:
Internal Change
PiperOrigin-RevId: 302717314
--
7357cf7abd03cc60b6e82b5f28a8e34935c3b4dc by Andy Getzendanner <durandal@google.com>:
Fix typo: s/ABSL_HARDENED_ASSERT/ABSL_HARDENING_ASSERT/
PiperOrigin-RevId: 302532164
GitOrigin-RevId: 990253454819ce26ff1dda9ab4bbc145b61d01e4
Change-Id: Ie595a221c16e1e7e1255ad42e029b646c5f3e11d
			
			
This commit is contained in:
		
							parent
							
								
									132d791b40
								
							
						
					
					
						commit
						79e0dc1151
					
				
					 29 changed files with 387 additions and 607 deletions
				
			
		|  | @ -33,7 +33,7 @@ bool FallbackToSnprintf(const Float v, const ConversionSpec &conv, | |||
|     if (std::is_same<long double, Float>()) { | ||||
|       *fp++ = 'L'; | ||||
|     } | ||||
|     *fp++ = FormatConversionCharToChar(conv.conv()); | ||||
|     *fp++ = FormatConversionCharToChar(conv.conversion_char()); | ||||
|     *fp = 0; | ||||
|     assert(fp < fmt + sizeof(fmt)); | ||||
|   } | ||||
|  | @ -100,17 +100,19 @@ bool ConvertNonNumericFloats(char sign_char, Float v, | |||
|   char text[4], *ptr = text; | ||||
|   if (sign_char) *ptr++ = sign_char; | ||||
|   if (std::isnan(v)) { | ||||
|     ptr = std::copy_n(FormatConversionCharIsUpper(conv.conv()) ? "NAN" : "nan", | ||||
|                       3, ptr); | ||||
|     ptr = std::copy_n( | ||||
|         FormatConversionCharIsUpper(conv.conversion_char()) ? "NAN" : "nan", 3, | ||||
|         ptr); | ||||
|   } else if (std::isinf(v)) { | ||||
|     ptr = std::copy_n(FormatConversionCharIsUpper(conv.conv()) ? "INF" : "inf", | ||||
|                       3, ptr); | ||||
|     ptr = std::copy_n( | ||||
|         FormatConversionCharIsUpper(conv.conversion_char()) ? "INF" : "inf", 3, | ||||
|         ptr); | ||||
|   } else { | ||||
|     return false; | ||||
|   } | ||||
| 
 | ||||
|   return sink->PutPaddedString(string_view(text, ptr - text), conv.width(), -1, | ||||
|                                conv.flags().left); | ||||
|                                conv.has_left_flag()); | ||||
| } | ||||
| 
 | ||||
| // Round up the last digit of the value.
 | ||||
|  | @ -358,9 +360,9 @@ void WriteBufferToSink(char sign_char, string_view str, | |||
|                                        static_cast<int>(sign_char != 0), | ||||
|                                    0) | ||||
|                         : 0; | ||||
|   if (conv.flags().left) { | ||||
|   if (conv.has_left_flag()) { | ||||
|     right_spaces = missing_chars; | ||||
|   } else if (conv.flags().zero) { | ||||
|   } else if (conv.has_zero_flag()) { | ||||
|     zeros = missing_chars; | ||||
|   } else { | ||||
|     left_spaces = missing_chars; | ||||
|  | @ -382,9 +384,9 @@ bool FloatToSink(const Float v, const ConversionSpec &conv, | |||
|   if (std::signbit(abs_v)) { | ||||
|     sign_char = '-'; | ||||
|     abs_v = -abs_v; | ||||
|   } else if (conv.flags().show_pos) { | ||||
|   } else if (conv.has_show_pos_flag()) { | ||||
|     sign_char = '+'; | ||||
|   } else if (conv.flags().sign_col) { | ||||
|   } else if (conv.has_sign_col_flag()) { | ||||
|     sign_char = ' '; | ||||
|   } | ||||
| 
 | ||||
|  | @ -401,14 +403,14 @@ bool FloatToSink(const Float v, const ConversionSpec &conv, | |||
| 
 | ||||
|   Buffer buffer; | ||||
| 
 | ||||
|   switch (conv.conv()) { | ||||
|   switch (conv.conversion_char()) { | ||||
|     case ConversionChar::f: | ||||
|     case ConversionChar::F: | ||||
|       if (!FloatToBuffer<FormatStyle::Fixed>(decomposed, precision, &buffer, | ||||
|                                              nullptr)) { | ||||
|         return FallbackToSnprintf(v, conv, sink); | ||||
|       } | ||||
|       if (!conv.flags().alt && buffer.back() == '.') buffer.pop_back(); | ||||
|       if (!conv.has_alt_flag() && buffer.back() == '.') buffer.pop_back(); | ||||
|       break; | ||||
| 
 | ||||
|     case ConversionChar::e: | ||||
|  | @ -417,9 +419,10 @@ bool FloatToSink(const Float v, const ConversionSpec &conv, | |||
|                                                  &exp)) { | ||||
|         return FallbackToSnprintf(v, conv, sink); | ||||
|       } | ||||
|       if (!conv.flags().alt && buffer.back() == '.') buffer.pop_back(); | ||||
|       PrintExponent(exp, FormatConversionCharIsUpper(conv.conv()) ? 'E' : 'e', | ||||
|                     &buffer); | ||||
|       if (!conv.has_alt_flag() && buffer.back() == '.') buffer.pop_back(); | ||||
|       PrintExponent( | ||||
|           exp, FormatConversionCharIsUpper(conv.conversion_char()) ? 'E' : 'e', | ||||
|           &buffer); | ||||
|       break; | ||||
| 
 | ||||
|     case ConversionChar::g: | ||||
|  | @ -446,13 +449,15 @@ bool FloatToSink(const Float v, const ConversionSpec &conv, | |||
|         } | ||||
|         exp = 0; | ||||
|       } | ||||
|       if (!conv.flags().alt) { | ||||
|       if (!conv.has_alt_flag()) { | ||||
|         while (buffer.back() == '0') buffer.pop_back(); | ||||
|         if (buffer.back() == '.') buffer.pop_back(); | ||||
|       } | ||||
|       if (exp) { | ||||
|         PrintExponent(exp, FormatConversionCharIsUpper(conv.conv()) ? 'E' : 'e', | ||||
|                       &buffer); | ||||
|         PrintExponent( | ||||
|             exp, | ||||
|             FormatConversionCharIsUpper(conv.conversion_char()) ? 'E' : 'e', | ||||
|             &buffer); | ||||
|       } | ||||
|       break; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue