Go to the documentation of this file.
31 #ifndef ABSL_STRINGS_INTERNAL_STR_JOIN_INTERNAL_H_
32 #define ABSL_STRINGS_INTERNAL_STR_JOIN_INTERNAL_H_
38 #include <type_traits>
41 #include "absl/strings/internal/ostringstream.h"
42 #include "absl/strings/internal/resize_uninitialized.h"
43 #include "absl/strings/str_cat.h"
47 namespace strings_internal {
96 std::unique_ptr<strings_internal::OStringStream>
strm_;
101 template <
typename F1,
typename F2>
107 template <
typename T>
114 template <
typename T>
130 template <
typename Formatter>
137 template <
typename T>
142 template <
typename T>
158 template <
typename ValueType>
178 template <
typename ValueType>
184 template <
typename ValueType>
195 template <
typename Iterator,
typename Formatter>
224 typename =
typename std::enable_if<std::is_convertible<
225 typename std::iterator_traits<Iterator>::iterator_category,
232 auto&& start_value = *
start;
233 size_t result_size = start_value.size();
235 result_size +=
s.size();
236 result_size += (*it).size();
239 if (result_size > 0) {
243 char* result_buf = &*
result.begin();
245 memcpy(result_buf, start_value.data(), start_value.size());
246 result_buf += start_value.size();
248 memcpy(result_buf,
s.data(),
s.size());
249 result_buf +=
s.size();
252 result_buf +=
value.size();
265 template <
size_t I,
size_t N>
267 template <
typename Tup,
typename Formatter>
270 if (
I > 0)
out->append(
sep.data(),
sep.size());
271 fmt(
out, std::get<I>(tup));
277 template <
typename Tup,
typename Formatter>
289 template <
typename Iterator>
298 template <
typename Range,
typename Formatter>
306 template <
typename Range>
317 #endif // ABSL_STRINGS_INTERNAL_STR_JOIN_INTERNAL_H_
void StrAppend(std::string *dest, const AlphaNum &a)
void operator()(std::string *out, const Tup &tup, absl::string_view sep, Formatter &&fmt)
#define ABSL_NAMESPACE_END
#define T(upbtypeconst, upbtype, ctype, default_value)
std::string JoinRange(Iterator first, Iterator last, absl::string_view separator)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
#define ABSL_NAMESPACE_BEGIN
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
void operator()(std::string *, const Tup &, absl::string_view, Formatter &&)
std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s, Formatter &&f)
ValueType
Type of the value held by a Value object.
GTEST_API_ const char * fmt
void STLStringResizeUninitialized(string_type *s, size_t new_size)
constexpr T && forward(absl::remove_reference_t< T > &t) noexcept
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:20