about summary refs log tree commit diff
path: root/absl/strings
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2019-06-13T16·14-0700
committerGennadiy Civil <misterg@google.com>2019-06-13T18·14-0400
commit8f11724067248acc330b4d1f12f0c76d03f2cfb1 (patch)
treed7f7886de8a135636cf1d47956b0b5c8645db81c /absl/strings
parentb1dd425423380126f6441ce4fbb6f8f6c75b793a (diff)
Export of internal Abseil changes.
--
fc61fc3822d414a1abda906a81208d2667195de3 by Abseil Team <absl-team@google.com>:

Clarify documentation relating to the output of the various
printing functions.

PiperOrigin-RevId: 253041344

--
06cb414d1006cd89e38b381d52763b048909d69a by Jorg Brown <jorg@google.com>:

Change absl::container_internal::CompressedTuple to instantiate its
internal Storage class with the name of the type it's holding, rather
than the name of the Tuple.  This is not an externally-visible change,
other than less compiler memory is used and less debug information is
generated.

PiperOrigin-RevId: 252940185

--
33b3f3ed6037eac7d1b7989a3641370e92beaeb9 by Jorg Brown <jorg@google.com>:

Change absl::container_internal::CompressedTuple to instantiate its
internal Storage class with the name of the type it's holding, rather
than the name of the Tuple.  This is not an externally-visible change,
other than less compiler memory is used and less debug information is
generated.

PiperOrigin-RevId: 252902091

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

Unset thread_local/__thread support for Emscripten.

PiperOrigin-RevId: 252706297

--
cabd1715d873dc457271940335c764e62defb952 by Derek Mauro <dmauro@google.com>:

Rollback LLVM and Bazel version due to
intermittent network failures downloading from GitHub

PiperOrigin-RevId: 252661245
GitOrigin-RevId: fc61fc3822d414a1abda906a81208d2667195de3
Change-Id: I4c30995a2db7acef19415ad519259131584db261
Diffstat (limited to 'absl/strings')
-rw-r--r--absl/strings/str_cat.h3
-rw-r--r--absl/strings/str_format.h11
-rw-r--r--absl/strings/substitute.h7
3 files changed, 16 insertions, 5 deletions
diff --git a/absl/strings/str_cat.h b/absl/strings/str_cat.h
index 559ee0aa5294..a99aac01ebbf 100644
--- a/absl/strings/str_cat.h
+++ b/absl/strings/str_cat.h
@@ -37,7 +37,8 @@
 // attempt to pass ':' instead of ":" might result in a 58 ending up in your
 // result.
 //
-// Bools convert to "0" or "1".
+// Bools convert to "0" or "1". Pointers to types other than `char *` are not
+// valid inputs. No output is generated for null `char *` pointers.
 //
 // Floating point numbers are formatted with six-digit precision, which is
 // the default for "std::cout <<" or printf "%g" (the same as "%.6g").
diff --git a/absl/strings/str_format.h b/absl/strings/str_format.h
index da3208e10303..0b93c28856e7 100644
--- a/absl/strings/str_format.h
+++ b/absl/strings/str_format.h
@@ -20,7 +20,8 @@
 // The `str_format` library is a typesafe replacement for the family of
 // `printf()` string formatting routines within the `<cstdio>` standard library
 // header. Like the `printf` family, the `str_format` uses a "format string" to
-// perform argument substitutions based on types.
+// perform argument substitutions based on types. See the `FormatSpec` section
+// below for format string documentation.
 //
 // Example:
 //
@@ -67,6 +68,7 @@
 // In addition, the `str_format` library provides extension points for
 // augmenting formatting to new types. These extensions are fully documented
 // within the `str_format_extension.h` header file.
+
 #ifndef ABSL_STRINGS_STR_FORMAT_H_
 #define ABSL_STRINGS_STR_FORMAT_H_
 
@@ -211,6 +213,11 @@ class FormatCountCapture {
 //     written to this point. The resulting value must be captured within an
 //     `absl::FormatCountCapture` type.
 //
+// Implementation-defined behavior:
+//   * A null pointer provided to "%s" or "%p" is output as "(nil)".
+//   * A non-null pointer provided to "%p" is output in hex as if by %#x or
+//     %#lx.
+//
 // NOTE: `o`, `x\X` and `u` will convert signed values to their unsigned
 // counterpart before formatting.
 //
@@ -226,7 +233,7 @@ class FormatCountCapture {
 //     "%e", .01                -> "1.00000e-2"
 //     "%a", -3.0               -> "-0x1.8p+1"
 //     "%g", .01                -> "1e-2"
-//     "%p", *int               -> "0x7ffdeb6ad2a4"
+//     "%p", (void*)&value      -> "0x7ffdeb6ad2a4"
 //
 //     int n = 0;
 //     std::string s = absl::StrFormat(
diff --git a/absl/strings/substitute.h b/absl/strings/substitute.h
index 32dec30b63a0..233e9dcf9386 100644
--- a/absl/strings/substitute.h
+++ b/absl/strings/substitute.h
@@ -35,10 +35,13 @@
 // and single digit positional ids to indicate which substitution arguments to
 // use at that location within the format string.
 //
+// A '$$' sequence in the format string causes a literal '$' character to be
+// output.
+//
 // Example 1:
-//   std::string s = Substitute("$1 purchased $0 $2. Thanks $1!",
+//   std::string s = Substitute("$1 purchased $0 $2 for $$10. Thanks $1!",
 //                              5, "Bob", "Apples");
-//   EXPECT_EQ("Bob purchased 5 Apples. Thanks Bob!", s);
+//   EXPECT_EQ("Bob purchased 5 Apples for $10. Thanks Bob!", s);
 //
 // Example 2:
 //   std::string s = "Hi. ";