summaryrefslogtreecommitdiffstats
path: root/util/string/join.h
diff options
context:
space:
mode:
authorthegeorg <[email protected]>2022-02-10 16:45:12 +0300
committerDaniil Cherednik <[email protected]>2022-02-10 16:45:12 +0300
commit49116032d905455a7b1c994e4a696afc885c1e71 (patch)
treebe835aa92c6248212e705f25388ebafcf84bc7a1 /util/string/join.h
parent4e839db24a3bbc9f1c610c43d6faaaa99824dcca (diff)
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'util/string/join.h')
-rw-r--r--util/string/join.h180
1 files changed, 90 insertions, 90 deletions
diff --git a/util/string/join.h b/util/string/join.h
index c96dc5132a9..b166fad1f3b 100644
--- a/util/string/join.h
+++ b/util/string/join.h
@@ -19,26 +19,26 @@
* For standard types (strings of all kinds and arithmetic types) we don't use a temporary TString in AppendToString().
*/
-template <typename TCharType, typename T>
+template <typename TCharType, typename T>
inline std::enable_if_t<!std::is_arithmetic<std::remove_cv_t<T>>::value, void>
-AppendToString(TBasicString<TCharType>& dst, const T& t) {
+AppendToString(TBasicString<TCharType>& dst, const T& t) {
dst.AppendNoAlias(ToString(t));
}
-template <typename TCharType, typename T>
+template <typename TCharType, typename T>
inline std::enable_if_t<std::is_arithmetic<std::remove_cv_t<T>>::value, void>
-AppendToString(TBasicString<TCharType>& dst, const T& t) {
+AppendToString(TBasicString<TCharType>& dst, const T& t) {
char buf[512];
dst.append(buf, ToString<std::remove_cv_t<T>>(t, buf, sizeof(buf)));
}
-template <typename TCharType>
-inline void AppendToString(TBasicString<TCharType>& dst, const TCharType* t) {
+template <typename TCharType>
+inline void AppendToString(TBasicString<TCharType>& dst, const TCharType* t) {
dst.append(t);
}
-template <typename TCharType>
-inline void AppendToString(TBasicString<TCharType>& dst, TBasicStringBuf<TCharType> t) {
+template <typename TCharType>
+inline void AppendToString(TBasicString<TCharType>& dst, TBasicStringBuf<TCharType> t) {
dst.append(t);
}
@@ -75,12 +75,12 @@ namespace NPrivate {
}
}
-template <typename TCharType>
-inline void AppendJoinNoReserve(TBasicString<TCharType>&, TBasicStringBuf<TCharType>) {
+template <typename TCharType>
+inline void AppendJoinNoReserve(TBasicString<TCharType>&, TBasicStringBuf<TCharType>) {
}
-template <typename TCharType, typename TFirst, typename... TRest>
-inline void AppendJoinNoReserve(TBasicString<TCharType>& dst, TBasicStringBuf<TCharType> delim, const TFirst& f, const TRest&... r) {
+template <typename TCharType, typename TFirst, typename... TRest>
+inline void AppendJoinNoReserve(TBasicString<TCharType>& dst, TBasicStringBuf<TCharType> delim, const TFirst& f, const TRest&... r) {
AppendToString(dst, delim);
AppendToString(dst, f);
AppendJoinNoReserve(dst, delim, r...);
@@ -110,93 +110,93 @@ inline TString Join(char cdelim, const TValues&... v) {
return Join(TStringBuf(&cdelim, 1), v...);
}
-namespace NPrivate {
- template <typename TCharType, typename TIter>
- inline TBasicString<TCharType> JoinRange(TBasicStringBuf<TCharType> delim, const TIter beg, const TIter end) {
- TBasicString<TCharType> out;
- if (beg != end) {
- size_t total = ::NPrivate::GetLength(*beg);
- for (TIter pos = beg; ++pos != end;) {
- total += delim.length() + ::NPrivate::GetLength(*pos);
- }
- if (total > 0) {
- out.reserve(total);
- }
-
- AppendToString(out, *beg);
- for (TIter pos = beg; ++pos != end;) {
- AppendJoinNoReserve(out, delim, *pos);
- }
+namespace NPrivate {
+ template <typename TCharType, typename TIter>
+ inline TBasicString<TCharType> JoinRange(TBasicStringBuf<TCharType> delim, const TIter beg, const TIter end) {
+ TBasicString<TCharType> out;
+ if (beg != end) {
+ size_t total = ::NPrivate::GetLength(*beg);
+ for (TIter pos = beg; ++pos != end;) {
+ total += delim.length() + ::NPrivate::GetLength(*pos);
+ }
+ if (total > 0) {
+ out.reserve(total);
+ }
+
+ AppendToString(out, *beg);
+ for (TIter pos = beg; ++pos != end;) {
+ AppendJoinNoReserve(out, delim, *pos);
+ }
}
- return out;
+ return out;
}
-} // namespace NPrivate
-
-template <typename TIter>
-TString JoinRange(std::string_view delim, const TIter beg, const TIter end) {
- return ::NPrivate::JoinRange<char>(delim, beg, end);
-}
-
-template <typename TIter>
-TString JoinRange(char delim, const TIter beg, const TIter end) {
- TStringBuf delimBuf(&delim, 1);
- return ::NPrivate::JoinRange<char>(delimBuf, beg, end);
-}
-
-template <typename TIter>
-TUtf16String JoinRange(std::u16string_view delim, const TIter beg, const TIter end) {
- return ::NPrivate::JoinRange<wchar16>(delim, beg, end);
-}
-
-template <typename TIter>
-TUtf16String JoinRange(wchar16 delim, const TIter beg, const TIter end) {
- TWtringBuf delimBuf(&delim, 1);
- return ::NPrivate::JoinRange<wchar16>(delimBuf, beg, end);
-}
-
-template <typename TIter>
-TUtf32String JoinRange(std::u32string_view delim, const TIter beg, const TIter end) {
- return ::NPrivate::JoinRange<wchar32>(delim, beg, end);
-}
-
-template <typename TIter>
-TUtf32String JoinRange(wchar32 delim, const TIter beg, const TIter end) {
- TUtf32StringBuf delimBuf(&delim, 1);
- return ::NPrivate::JoinRange<wchar32>(delimBuf, beg, end);
-}
-
-template <typename TCharType, typename TContainer>
-inline TBasicString<TCharType> JoinSeq(std::basic_string_view<TCharType> delim, const TContainer& data) {
+} // namespace NPrivate
+
+template <typename TIter>
+TString JoinRange(std::string_view delim, const TIter beg, const TIter end) {
+ return ::NPrivate::JoinRange<char>(delim, beg, end);
+}
+
+template <typename TIter>
+TString JoinRange(char delim, const TIter beg, const TIter end) {
+ TStringBuf delimBuf(&delim, 1);
+ return ::NPrivate::JoinRange<char>(delimBuf, beg, end);
+}
+
+template <typename TIter>
+TUtf16String JoinRange(std::u16string_view delim, const TIter beg, const TIter end) {
+ return ::NPrivate::JoinRange<wchar16>(delim, beg, end);
+}
+
+template <typename TIter>
+TUtf16String JoinRange(wchar16 delim, const TIter beg, const TIter end) {
+ TWtringBuf delimBuf(&delim, 1);
+ return ::NPrivate::JoinRange<wchar16>(delimBuf, beg, end);
+}
+
+template <typename TIter>
+TUtf32String JoinRange(std::u32string_view delim, const TIter beg, const TIter end) {
+ return ::NPrivate::JoinRange<wchar32>(delim, beg, end);
+}
+
+template <typename TIter>
+TUtf32String JoinRange(wchar32 delim, const TIter beg, const TIter end) {
+ TUtf32StringBuf delimBuf(&delim, 1);
+ return ::NPrivate::JoinRange<wchar32>(delimBuf, beg, end);
+}
+
+template <typename TCharType, typename TContainer>
+inline TBasicString<TCharType> JoinSeq(std::basic_string_view<TCharType> delim, const TContainer& data) {
using std::begin;
using std::end;
return JoinRange(delim, begin(data), end(data));
}
-template <typename TCharType, typename TContainer>
-inline TBasicString<TCharType> JoinSeq(const TCharType* delim, const TContainer& data) {
- TBasicStringBuf<TCharType> delimBuf = delim;
- return JoinSeq(delimBuf, data);
-}
-
-template <typename TCharType, typename TContainer>
-inline TBasicString<TCharType> JoinSeq(const TBasicString<TCharType>& delim, const TContainer& data) {
- TBasicStringBuf<TCharType> delimBuf = delim;
- return JoinSeq(delimBuf, data);
-}
-
-template <typename TCharType, typename TContainer>
-inline std::enable_if_t<
- std::is_same_v<TCharType, char> ||
- std::is_same_v<TCharType, char16_t> ||
- std::is_same_v<TCharType, char32_t>,
- TBasicString<TCharType>>
-JoinSeq(TCharType delim, const TContainer& data) {
- TBasicStringBuf<TCharType> delimBuf(&delim, 1);
- return JoinSeq(delimBuf, data);
-}
-
+template <typename TCharType, typename TContainer>
+inline TBasicString<TCharType> JoinSeq(const TCharType* delim, const TContainer& data) {
+ TBasicStringBuf<TCharType> delimBuf = delim;
+ return JoinSeq(delimBuf, data);
+}
+
+template <typename TCharType, typename TContainer>
+inline TBasicString<TCharType> JoinSeq(const TBasicString<TCharType>& delim, const TContainer& data) {
+ TBasicStringBuf<TCharType> delimBuf = delim;
+ return JoinSeq(delimBuf, data);
+}
+
+template <typename TCharType, typename TContainer>
+inline std::enable_if_t<
+ std::is_same_v<TCharType, char> ||
+ std::is_same_v<TCharType, char16_t> ||
+ std::is_same_v<TCharType, char32_t>,
+ TBasicString<TCharType>>
+JoinSeq(TCharType delim, const TContainer& data) {
+ TBasicStringBuf<TCharType> delimBuf(&delim, 1);
+ return JoinSeq(delimBuf, data);
+}
+
/** \brief Functor for streaming iterative objects from TIterB e to TIterE b, separated with delim.
* Difference from JoinSeq, JoinRange, Join is the lack of TString object - all depends on operator<< for the type and
* realization of IOutputStream