abseil-cpp/absl/strings/str_cat.h
Go to the documentation of this file.
1 //
2 // Copyright 2017 The Abseil Authors.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // https://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 // -----------------------------------------------------------------------------
17 // File: str_cat.h
18 // -----------------------------------------------------------------------------
19 //
20 // This package contains functions for efficiently concatenating and appending
21 // strings: `StrCat()` and `StrAppend()`. Most of the work within these routines
22 // is actually handled through use of a special AlphaNum type, which was
23 // designed to be used as a parameter type that efficiently manages conversion
24 // to strings and avoids copies in the above operations.
25 //
26 // Any routine accepting either a string or a number may accept `AlphaNum`.
27 // The basic idea is that by accepting a `const AlphaNum &` as an argument
28 // to your function, your callers will automagically convert bools, integers,
29 // and floating point values to strings for you.
30 //
31 // NOTE: Use of `AlphaNum` outside of the //absl/strings package is unsupported
32 // except for the specific case of function parameters of type `AlphaNum` or
33 // `const AlphaNum &`. In particular, instantiating `AlphaNum` directly as a
34 // stack variable is not supported.
35 //
36 // Conversion from 8-bit values is not accepted because, if it were, then an
37 // attempt to pass ':' instead of ":" might result in a 58 ending up in your
38 // result.
39 //
40 // Bools convert to "0" or "1". Pointers to types other than `char *` are not
41 // valid inputs. No output is generated for null `char *` pointers.
42 //
43 // Floating point numbers are formatted with six-digit precision, which is
44 // the default for "std::cout <<" or printf "%g" (the same as "%.6g").
45 //
46 // You can convert to hexadecimal output rather than decimal output using the
47 // `Hex` type contained here. To do so, pass `Hex(my_int)` as a parameter to
48 // `StrCat()` or `StrAppend()`. You may specify a minimum hex field width using
49 // a `PadSpec` enum.
50 //
51 // -----------------------------------------------------------------------------
52 
53 #ifndef ABSL_STRINGS_STR_CAT_H_
54 #define ABSL_STRINGS_STR_CAT_H_
55 
56 #include <array>
57 #include <cstdint>
58 #include <string>
59 #include <type_traits>
60 #include <vector>
61 
62 #include "absl/base/port.h"
63 #include "absl/strings/numbers.h"
64 #include "absl/strings/string_view.h"
65 
66 namespace absl {
68 
69 namespace strings_internal {
70 // AlphaNumBuffer allows a way to pass a string to StrCat without having to do
71 // memory allocation. It is simply a pair of a fixed-size character array, and
72 // a size. Please don't use outside of absl, yet.
73 template <size_t max_size>
75  std::array<char, max_size> data;
76  size_t size;
77 };
78 
79 } // namespace strings_internal
80 
81 // Enum that specifies the number of significant digits to return in a `Hex` or
82 // `Dec` conversion and fill character to use. A `kZeroPad2` value, for example,
83 // would produce hexadecimal strings such as "0a","0f" and a 'kSpacePad5' value
84 // would produce hexadecimal strings such as " a"," f".
85 enum PadSpec : uint8_t {
86  kNoPad = 1,
106 
126 };
127 
128 // -----------------------------------------------------------------------------
129 // Hex
130 // -----------------------------------------------------------------------------
131 //
132 // `Hex` stores a set of hexadecimal string conversion parameters for use
133 // within `AlphaNum` string conversions.
134 struct Hex {
137  char fill;
138 
139  template <typename Int>
140  explicit Hex(
142  typename std::enable_if<sizeof(Int) == 1 &&
143  !std::is_pointer<Int>::value>::type* = nullptr)
144  : Hex(spec, static_cast<uint8_t>(v)) {}
145  template <typename Int>
146  explicit Hex(
148  typename std::enable_if<sizeof(Int) == 2 &&
149  !std::is_pointer<Int>::value>::type* = nullptr)
150  : Hex(spec, static_cast<uint16_t>(v)) {}
151  template <typename Int>
152  explicit Hex(
154  typename std::enable_if<sizeof(Int) == 4 &&
155  !std::is_pointer<Int>::value>::type* = nullptr)
156  : Hex(spec, static_cast<uint32_t>(v)) {}
157  template <typename Int>
158  explicit Hex(
160  typename std::enable_if<sizeof(Int) == 8 &&
161  !std::is_pointer<Int>::value>::type* = nullptr)
162  : Hex(spec, static_cast<uint64_t>(v)) {}
163  template <typename Pointee>
165  : Hex(spec, reinterpret_cast<uintptr_t>(v)) {}
166 
167  private:
169  : value(v),
170  width(spec == absl::kNoPad
171  ? 1
172  : spec >= absl::kSpacePad2 ? spec - absl::kSpacePad2 + 2
173  : spec - absl::kZeroPad2 + 2),
174  fill(spec >= absl::kSpacePad2 ? ' ' : '0') {}
175 };
176 
177 // -----------------------------------------------------------------------------
178 // Dec
179 // -----------------------------------------------------------------------------
180 //
181 // `Dec` stores a set of decimal string conversion parameters for use
182 // within `AlphaNum` string conversions. Dec is slower than the default
183 // integer conversion, so use it only if you need padding.
184 struct Dec {
187  char fill;
188  bool neg;
189 
190  template <typename Int>
192  typename std::enable_if<(sizeof(Int) <= 8)>::type* = nullptr)
193  : value(v >= 0 ? static_cast<uint64_t>(v)
194  : uint64_t{0} - static_cast<uint64_t>(v)),
196  ? 1
198  : spec - absl::kZeroPad2 + 2),
199  fill(spec >= absl::kSpacePad2 ? ' ' : '0'),
200  neg(v < 0) {}
201 };
202 
203 // -----------------------------------------------------------------------------
204 // AlphaNum
205 // -----------------------------------------------------------------------------
206 //
207 // The `AlphaNum` class acts as the main parameter type for `StrCat()` and
208 // `StrAppend()`, providing efficient conversion of numeric, boolean, and
209 // hexadecimal values (through the `Hex` type) into strings.
210 
211 class AlphaNum {
212  public:
213  // No bool ctor -- bools convert to an integral type.
214  // A bool ctor would also convert incoming pointers (bletch).
215 
216  AlphaNum(int x) // NOLINT(runtime/explicit)
217  : piece_(digits_, static_cast<size_t>(
218  numbers_internal::FastIntToBuffer(x, digits_) -
219  &digits_[0])) {}
220  AlphaNum(unsigned int x) // NOLINT(runtime/explicit)
221  : piece_(digits_, static_cast<size_t>(
222  numbers_internal::FastIntToBuffer(x, digits_) -
223  &digits_[0])) {}
224  AlphaNum(long x) // NOLINT(*)
225  : piece_(digits_, static_cast<size_t>(
226  numbers_internal::FastIntToBuffer(x, digits_) -
227  &digits_[0])) {}
228  AlphaNum(unsigned long x) // NOLINT(*)
229  : piece_(digits_, static_cast<size_t>(
230  numbers_internal::FastIntToBuffer(x, digits_) -
231  &digits_[0])) {}
232  AlphaNum(long long x) // NOLINT(*)
233  : piece_(digits_, static_cast<size_t>(
234  numbers_internal::FastIntToBuffer(x, digits_) -
235  &digits_[0])) {}
236  AlphaNum(unsigned long long x) // NOLINT(*)
237  : piece_(digits_, static_cast<size_t>(
238  numbers_internal::FastIntToBuffer(x, digits_) -
239  &digits_[0])) {}
240 
241  AlphaNum(float f) // NOLINT(runtime/explicit)
242  : piece_(digits_, numbers_internal::SixDigitsToBuffer(f, digits_)) {}
243  AlphaNum(double f) // NOLINT(runtime/explicit)
244  : piece_(digits_, numbers_internal::SixDigitsToBuffer(f, digits_)) {}
245 
246  AlphaNum(Hex hex); // NOLINT(runtime/explicit)
247  AlphaNum(Dec dec); // NOLINT(runtime/explicit)
248 
249  template <size_t size>
250  AlphaNum( // NOLINT(runtime/explicit)
252  : piece_(&buf.data[0], buf.size) {}
253 
254  AlphaNum(const char* c_str) // NOLINT(runtime/explicit)
255  : piece_(NullSafeStringView(c_str)) {} // NOLINT(runtime/explicit)
256  AlphaNum(absl::string_view pc) : piece_(pc) {} // NOLINT(runtime/explicit)
257 
258  template <typename Allocator>
259  AlphaNum( // NOLINT(runtime/explicit)
260  const std::basic_string<char, std::char_traits<char>, Allocator>& str)
261  : piece_(str) {}
262 
263  // Use string literals ":" instead of character literals ':'.
264  AlphaNum(char c) = delete; // NOLINT(runtime/explicit)
265 
266  AlphaNum(const AlphaNum&) = delete;
267  AlphaNum& operator=(const AlphaNum&) = delete;
268 
270  const char* data() const { return piece_.data(); }
271  absl::string_view Piece() const { return piece_; }
272 
273  // Normal enums are already handled by the integer formatters.
274  // This overload matches only scoped enums.
275  template <typename T,
276  typename = typename std::enable_if<
277  std::is_enum<T>{} && !std::is_convertible<T, int>{}>::type>
278  AlphaNum(T e) // NOLINT(runtime/explicit)
279  : AlphaNum(static_cast<typename std::underlying_type<T>::type>(e)) {}
280 
281  // vector<bool>::reference and const_reference require special help to
282  // convert to `AlphaNum` because it requires two user defined conversions.
283  template <
284  typename T,
285  typename std::enable_if<
287  (std::is_same<T, std::vector<bool>::reference>::value ||
289  nullptr>
290  AlphaNum(T e) : AlphaNum(static_cast<bool>(e)) {} // NOLINT(runtime/explicit)
291 
292  private:
295 };
296 
297 // -----------------------------------------------------------------------------
298 // StrCat()
299 // -----------------------------------------------------------------------------
300 //
301 // Merges given strings or numbers, using no delimiter(s), returning the merged
302 // result as a string.
303 //
304 // `StrCat()` is designed to be the fastest possible way to construct a string
305 // out of a mix of raw C strings, string_views, strings, bool values,
306 // and numeric values.
307 //
308 // Don't use `StrCat()` for user-visible strings. The localization process
309 // works poorly on strings built up out of fragments.
310 //
311 // For clarity and performance, don't use `StrCat()` when appending to a
312 // string. Use `StrAppend()` instead. In particular, avoid using any of these
313 // (anti-)patterns:
314 //
315 // str.append(StrCat(...))
316 // str += StrCat(...)
317 // str = StrCat(str, ...)
318 //
319 // The last case is the worst, with a potential to change a loop
320 // from a linear time operation with O(1) dynamic allocations into a
321 // quadratic time operation with O(n) dynamic allocations.
322 //
323 // See `StrAppend()` below for more information.
324 
325 namespace strings_internal {
326 
327 // Do not call directly - this is not part of the public API.
328 std::string CatPieces(std::initializer_list<absl::string_view> pieces);
330  std::initializer_list<absl::string_view> pieces);
331 
332 } // namespace strings_internal
333 
335 
337  return std::string(a.data(), a.size());
338 }
339 
340 ABSL_MUST_USE_RESULT std::string StrCat(const AlphaNum& a, const AlphaNum& b);
341 ABSL_MUST_USE_RESULT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
342  const AlphaNum& c);
343 ABSL_MUST_USE_RESULT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
344  const AlphaNum& c, const AlphaNum& d);
345 
346 // Support 5 or more arguments
347 template <typename... AV>
349  const AlphaNum& a, const AlphaNum& b, const AlphaNum& c, const AlphaNum& d,
350  const AlphaNum& e, const AV&... args) {
352  {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
353  static_cast<const AlphaNum&>(args).Piece()...});
354 }
355 
356 // -----------------------------------------------------------------------------
357 // StrAppend()
358 // -----------------------------------------------------------------------------
359 //
360 // Appends a string or set of strings to an existing string, in a similar
361 // fashion to `StrCat()`.
362 //
363 // WARNING: `StrAppend(&str, a, b, c, ...)` requires that none of the
364 // a, b, c, parameters be a reference into str. For speed, `StrAppend()` does
365 // not try to check each of its input arguments to be sure that they are not
366 // a subset of the string being appended to. That is, while this will work:
367 //
368 // std::string s = "foo";
369 // s += s;
370 //
371 // This output is undefined:
372 //
373 // std::string s = "foo";
374 // StrAppend(&s, s);
375 //
376 // This output is undefined as well, since `absl::string_view` does not own its
377 // data:
378 //
379 // std::string s = "foobar";
380 // absl::string_view p = s;
381 // StrAppend(&s, p);
382 
383 inline void StrAppend(std::string*) {}
384 void StrAppend(std::string* dest, const AlphaNum& a);
385 void StrAppend(std::string* dest, const AlphaNum& a, const AlphaNum& b);
386 void StrAppend(std::string* dest, const AlphaNum& a, const AlphaNum& b,
387  const AlphaNum& c);
388 void StrAppend(std::string* dest, const AlphaNum& a, const AlphaNum& b,
389  const AlphaNum& c, const AlphaNum& d);
390 
391 // Support 5 or more arguments
392 template <typename... AV>
393 inline void StrAppend(std::string* dest, const AlphaNum& a, const AlphaNum& b,
394  const AlphaNum& c, const AlphaNum& d, const AlphaNum& e,
395  const AV&... args) {
397  dest, {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
398  static_cast<const AlphaNum&>(args).Piece()...});
399 }
400 
401 // Helper function for the future StrCat default floating-point format, %.6g
402 // This is fast.
403 inline strings_internal::AlphaNumBuffer<
405 SixDigits(double d) {
407  result;
409  return result;
410 }
411 
413 } // namespace absl
414 
415 #endif // ABSL_STRINGS_STR_CAT_H_
xds_interop_client.str
str
Definition: xds_interop_client.py:487
_gevent_test_main.result
result
Definition: _gevent_test_main.py:96
absl::AlphaNum::AlphaNum
AlphaNum(unsigned long x)
Definition: abseil-cpp/absl/strings/str_cat.h:228
absl::kZeroPad6
@ kZeroPad6
Definition: abseil-cpp/absl/strings/str_cat.h:91
testing::Pointee
internal::PointeeMatcher< InnerMatcher > Pointee(const InnerMatcher &inner_matcher)
Definition: cares/cares/test/gmock-1.8.0/gmock/gmock.h:8691
absl::Hex::Hex
Hex(Int v, PadSpec spec=absl::kNoPad, typename std::enable_if< sizeof(Int)==2 &&!std::is_pointer< Int >::value >::type *=nullptr)
Definition: abseil-cpp/absl/strings/str_cat.h:146
absl::Hex::width
uint8_t width
Definition: abseil-cpp/absl/strings/str_cat.h:136
absl::StrAppend
void StrAppend(std::string *dest, const AlphaNum &a)
Definition: abseil-cpp/absl/strings/str_cat.cc:193
absl::strings_internal::AppendPieces
void AppendPieces(std::string *dest, std::initializer_list< absl::string_view > pieces)
Definition: abseil-cpp/absl/strings/str_cat.cc:169
absl::StrCat
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
Definition: abseil-cpp/absl/strings/str_cat.cc:98
absl::kNoPad
@ kNoPad
Definition: abseil-cpp/absl/strings/str_cat.h:86
absl::Hex::Hex
Hex(Int v, PadSpec spec=absl::kNoPad, typename std::enable_if< sizeof(Int)==1 &&!std::is_pointer< Int >::value >::type *=nullptr)
Definition: abseil-cpp/absl/strings/str_cat.h:140
absl::kZeroPad7
@ kZeroPad7
Definition: abseil-cpp/absl/strings/str_cat.h:92
absl::kZeroPad15
@ kZeroPad15
Definition: abseil-cpp/absl/strings/str_cat.h:100
uint16_t
unsigned short uint16_t
Definition: stdint-msvc2008.h:79
absl::kSpacePad12
@ kSpacePad12
Definition: abseil-cpp/absl/strings/str_cat.h:117
absl::kSpacePad11
@ kSpacePad11
Definition: abseil-cpp/absl/strings/str_cat.h:116
absl::kSpacePad13
@ kSpacePad13
Definition: abseil-cpp/absl/strings/str_cat.h:118
buf
voidpf void * buf
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
absl::kSpacePad10
@ kSpacePad10
Definition: abseil-cpp/absl/strings/str_cat.h:115
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
absl::Dec::value
uint64_t value
Definition: abseil-cpp/absl/strings/str_cat.h:185
absl::kZeroPad11
@ kZeroPad11
Definition: abseil-cpp/absl/strings/str_cat.h:96
absl::kSpacePad8
@ kSpacePad8
Definition: abseil-cpp/absl/strings/str_cat.h:113
absl::numbers_internal::SixDigitsToBuffer
size_t SixDigitsToBuffer(double d, char *buffer)
Definition: abseil-cpp/absl/strings/numbers.cc:486
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
absl::strings_internal::CatPieces
std::string CatPieces(std::initializer_list< absl::string_view > pieces)
Definition: abseil-cpp/absl/strings/str_cat.cc:141
absl::AlphaNum::AlphaNum
AlphaNum(float f)
Definition: abseil-cpp/absl/strings/str_cat.h:241
absl::AlphaNum::AlphaNum
AlphaNum(long long x)
Definition: abseil-cpp/absl/strings/str_cat.h:232
ABSL_NAMESPACE_END
#define ABSL_NAMESPACE_END
Definition: third_party/abseil-cpp/absl/base/config.h:171
absl::kZeroPad12
@ kZeroPad12
Definition: abseil-cpp/absl/strings/str_cat.h:97
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
absl::AlphaNum::AlphaNum
AlphaNum(long x)
Definition: abseil-cpp/absl/strings/str_cat.h:224
run_interop_tests.spec
def spec
Definition: run_interop_tests.py:1394
absl::AlphaNum::AlphaNum
AlphaNum(unsigned long long x)
Definition: abseil-cpp/absl/strings/str_cat.h:236
T
#define T(upbtypeconst, upbtype, ctype, default_value)
absl::AlphaNum::data
const char * data() const
Definition: abseil-cpp/absl/strings/str_cat.h:270
absl::NullSafeStringView
constexpr string_view NullSafeStringView(const char *p)
Definition: abseil-cpp/absl/strings/string_view.h:704
absl::strings_internal::AlphaNumBuffer::data
std::array< char, max_size > data
Definition: abseil-cpp/absl/strings/str_cat.h:75
absl::kZeroPad16
@ kZeroPad16
Definition: abseil-cpp/absl/strings/str_cat.h:101
absl::kSpacePad7
@ kSpacePad7
Definition: abseil-cpp/absl/strings/str_cat.h:112
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
absl::AlphaNum::size
absl::string_view::size_type size() const
Definition: abseil-cpp/absl/strings/str_cat.h:269
ABSL_MUST_USE_RESULT
#define ABSL_MUST_USE_RESULT
Definition: abseil-cpp/absl/base/attributes.h:441
absl::Hex
Definition: abseil-cpp/absl/strings/str_cat.h:134
absl::AlphaNum::AlphaNum
AlphaNum(absl::string_view pc)
Definition: abseil-cpp/absl/strings/str_cat.h:256
absl::FormatConversionChar::e
@ e
ABSL_NAMESPACE_BEGIN
#define ABSL_NAMESPACE_BEGIN
Definition: third_party/abseil-cpp/absl/base/config.h:170
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
absl::kZeroPad13
@ kZeroPad13
Definition: abseil-cpp/absl/strings/str_cat.h:98
absl::kZeroPad20
@ kZeroPad20
Definition: abseil-cpp/absl/strings/str_cat.h:105
absl::strings_internal::AlphaNumBuffer::size
size_t size
Definition: abseil-cpp/absl/strings/str_cat.h:76
absl::AlphaNum::AlphaNum
AlphaNum(int x)
Definition: abseil-cpp/absl/strings/str_cat.h:216
absl::Hex::Hex
Hex(Int v, PadSpec spec=absl::kNoPad, typename std::enable_if< sizeof(Int)==8 &&!std::is_pointer< Int >::value >::type *=nullptr)
Definition: abseil-cpp/absl/strings/str_cat.h:158
absl::string_view::size
constexpr size_type size() const noexcept
Definition: abseil-cpp/absl/strings/string_view.h:277
absl::kSpacePad18
@ kSpacePad18
Definition: abseil-cpp/absl/strings/str_cat.h:123
gen_stats_data.c_str
def c_str(s, encoding='ascii')
Definition: gen_stats_data.py:38
absl::AlphaNum
Definition: abseil-cpp/absl/strings/str_cat.h:211
absl::Dec::neg
bool neg
Definition: abseil-cpp/absl/strings/str_cat.h:188
absl::kSpacePad14
@ kSpacePad14
Definition: abseil-cpp/absl/strings/str_cat.h:119
absl::kSpacePad15
@ kSpacePad15
Definition: abseil-cpp/absl/strings/str_cat.h:120
setup.v
v
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:42
absl::kZeroPad3
@ kZeroPad3
Definition: abseil-cpp/absl/strings/str_cat.h:88
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
absl::AlphaNum::digits_
char digits_[numbers_internal::kFastToBufferSize]
Definition: abseil-cpp/absl/strings/str_cat.h:294
absl::Dec::fill
char fill
Definition: abseil-cpp/absl/strings/str_cat.h:187
absl::AlphaNum::Piece
absl::string_view Piece() const
Definition: abseil-cpp/absl/strings/str_cat.h:271
absl::kSpacePad20
@ kSpacePad20
Definition: abseil-cpp/absl/strings/str_cat.h:125
absl::kSpacePad4
@ kSpacePad4
Definition: abseil-cpp/absl/strings/str_cat.h:109
x
int x
Definition: bloaty/third_party/googletest/googlemock/test/gmock-matchers_test.cc:3610
absl::Hex::fill
char fill
Definition: abseil-cpp/absl/strings/str_cat.h:137
absl::kZeroPad5
@ kZeroPad5
Definition: abseil-cpp/absl/strings/str_cat.h:90
absl::kZeroPad4
@ kZeroPad4
Definition: abseil-cpp/absl/strings/str_cat.h:89
uintptr_t
_W64 unsigned int uintptr_t
Definition: stdint-msvc2008.h:119
absl::AlphaNum::AlphaNum
AlphaNum(double f)
Definition: abseil-cpp/absl/strings/str_cat.h:243
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
absl::kSpacePad5
@ kSpacePad5
Definition: abseil-cpp/absl/strings/str_cat.h:110
absl::Hex::value
uint64_t value
Definition: abseil-cpp/absl/strings/str_cat.h:135
absl::SixDigits
strings_internal::AlphaNumBuffer< numbers_internal::kSixDigitsToBufferSize > SixDigits(double d)
Definition: abseil-cpp/absl/strings/str_cat.h:405
Json::Int
int Int
Definition: third_party/bloaty/third_party/protobuf/conformance/third_party/jsoncpp/json.h:228
absl::Hex::Hex
Hex(PadSpec spec, uint64_t v)
Definition: abseil-cpp/absl/strings/str_cat.h:168
absl::kSpacePad3
@ kSpacePad3
Definition: abseil-cpp/absl/strings/str_cat.h:108
tests.qps.qps_worker.dest
dest
Definition: qps_worker.py:45
absl::kSpacePad2
@ kSpacePad2
Definition: abseil-cpp/absl/strings/str_cat.h:107
absl::kZeroPad9
@ kZeroPad9
Definition: abseil-cpp/absl/strings/str_cat.h:94
absl::string_view::size_type
size_t size_type
Definition: abseil-cpp/absl/strings/string_view.h:179
absl::Dec::width
uint8_t width
Definition: abseil-cpp/absl/strings/str_cat.h:186
value
const char * value
Definition: hpack_parser_table.cc:165
absl::AlphaNum::AlphaNum
AlphaNum(const char *c_str)
Definition: abseil-cpp/absl/strings/str_cat.h:254
absl::Hex::Hex
Hex(Int v, PadSpec spec=absl::kNoPad, typename std::enable_if< sizeof(Int)==4 &&!std::is_pointer< Int >::value >::type *=nullptr)
Definition: abseil-cpp/absl/strings/str_cat.h:152
absl::AlphaNum::piece_
absl::string_view piece_
Definition: abseil-cpp/absl/strings/str_cat.h:293
absl::kZeroPad17
@ kZeroPad17
Definition: abseil-cpp/absl/strings/str_cat.h:102
absl::kZeroPad2
@ kZeroPad2
Definition: abseil-cpp/absl/strings/str_cat.h:87
absl::kSpacePad17
@ kSpacePad17
Definition: abseil-cpp/absl/strings/str_cat.h:122
std
Definition: grpcpp/impl/codegen/async_unary_call.h:407
absl::AlphaNum::AlphaNum
AlphaNum(const std::basic_string< char, std::char_traits< char >, Allocator > &str)
Definition: abseil-cpp/absl/strings/str_cat.h:259
absl::kZeroPad19
@ kZeroPad19
Definition: abseil-cpp/absl/strings/str_cat.h:104
absl::numbers_internal::kFastToBufferSize
static const int kFastToBufferSize
Definition: abseil-cpp/absl/strings/numbers.h:153
absl::Dec::Dec
Dec(Int v, PadSpec spec=absl::kNoPad, typename std::enable_if<(sizeof(Int)<=8)>::type *=nullptr)
Definition: abseil-cpp/absl/strings/str_cat.h:191
absl::numbers_internal::kSixDigitsToBufferSize
static const int kSixDigitsToBufferSize
Definition: abseil-cpp/absl/strings/numbers.h:154
absl::AlphaNum::AlphaNum
AlphaNum(T e)
Definition: abseil-cpp/absl/strings/str_cat.h:278
absl::kSpacePad19
@ kSpacePad19
Definition: abseil-cpp/absl/strings/str_cat.h:124
absl::kSpacePad9
@ kSpacePad9
Definition: abseil-cpp/absl/strings/str_cat.h:114
absl
Definition: abseil-cpp/absl/algorithm/algorithm.h:31
absl::Dec
Definition: abseil-cpp/absl/strings/str_cat.h:184
absl::kSpacePad16
@ kSpacePad16
Definition: abseil-cpp/absl/strings/str_cat.h:121
asyncio_get_stats.type
type
Definition: asyncio_get_stats.py:37
absl::PadSpec
PadSpec
Definition: abseil-cpp/absl/strings/str_cat.h:85
absl::kZeroPad10
@ kZeroPad10
Definition: abseil-cpp/absl/strings/str_cat.h:95
absl::numbers_internal::FastIntToBuffer
char * FastIntToBuffer(int32_t, char *)
Definition: abseil-cpp/absl/strings/numbers.cc:217
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
absl::AlphaNum::AlphaNum
AlphaNum(const strings_internal::AlphaNumBuffer< size > &buf)
Definition: abseil-cpp/absl/strings/str_cat.h:250
absl::AlphaNum::operator=
AlphaNum & operator=(const AlphaNum &)=delete
absl::AlphaNum::AlphaNum
AlphaNum(unsigned int x)
Definition: abseil-cpp/absl/strings/str_cat.h:220
absl::kZeroPad14
@ kZeroPad14
Definition: abseil-cpp/absl/strings/str_cat.h:99
absl::string_view::data
constexpr const_pointer data() const noexcept
Definition: abseil-cpp/absl/strings/string_view.h:336
const_reference
const typedef T & const_reference
Definition: cxa_demangle.cpp:4831
absl::kZeroPad18
@ kZeroPad18
Definition: abseil-cpp/absl/strings/str_cat.h:103
absl::strings_internal::AlphaNumBuffer
Definition: abseil-cpp/absl/strings/str_cat.h:74
absl::kZeroPad8
@ kZeroPad8
Definition: abseil-cpp/absl/strings/str_cat.h:93
absl::Hex::Hex
Hex(Pointee *v, PadSpec spec=absl::kNoPad)
Definition: abseil-cpp/absl/strings/str_cat.h:164
absl::kSpacePad6
@ kSpacePad6
Definition: abseil-cpp/absl/strings/str_cat.h:111


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:19