diff options
author | manavrion <manavrion@yandex-team.ru> | 2022-02-10 16:49:16 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:16 +0300 |
commit | 29d0b2eeae154d04156e0698067c0c21a97ea61d (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /util | |
parent | 109de9f4c31b6caaa736ce29a61fce05851e7c02 (diff) | |
download | ydb-29d0b2eeae154d04156e0698067c0c21a97ea61d.tar.gz |
Restoring authorship annotation for <manavrion@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util')
-rw-r--r-- | util/string/split.h | 36 | ||||
-rw-r--r-- | util/string/vector.cpp | 10 | ||||
-rw-r--r-- | util/string/vector.h | 80 |
3 files changed, 63 insertions, 63 deletions
diff --git a/util/string/split.h b/util/string/split.h index 153f5c2ef3..bc46d9e64c 100644 --- a/util/string/split.h +++ b/util/string/split.h @@ -22,20 +22,20 @@ // NOTE: Check StringSplitter below to get more convenient split string interface. namespace NStringSplitPrivate { - - template <class T, class I, class = void> + + template <class T, class I, class = void> struct TIsConsumer: std::false_type {}; - - template <class T, class I> - struct TIsConsumer< - T, I, - TVoidT<decltype(std::declval<T>().Consume( - std::declval<I>(), std::declval<I>(), std::declval<I>()))>> - : std::true_type {}; - - template <class T, class I> - constexpr bool TIsConsumerV = TIsConsumer<T, I>::value; - + + template <class T, class I> + struct TIsConsumer< + T, I, + TVoidT<decltype(std::declval<T>().Consume( + std::declval<I>(), std::declval<I>(), std::declval<I>()))>> + : std::true_type {}; + + template <class T, class I> + constexpr bool TIsConsumerV = TIsConsumer<T, I>::value; + template <class T> T* Find(T* str, std::common_type_t<T> ch) { for (; *str; ++str) { @@ -47,11 +47,11 @@ namespace NStringSplitPrivate { return nullptr; } -} - +} + template <class I, class TDelim, class TConsumer> std::enable_if_t<::NStringSplitPrivate::TIsConsumerV<TConsumer, I>> -SplitString(I b, I e, const TDelim& d, TConsumer&& c) { +SplitString(I b, I e, const TDelim& d, TConsumer&& c) { I l, i; do { @@ -62,7 +62,7 @@ SplitString(I b, I e, const TDelim& d, TConsumer&& c) { template <class I, class TDelim, class TConsumer> std::enable_if_t<::NStringSplitPrivate::TIsConsumerV<TConsumer, I>> -SplitString(I b, const TDelim& d, TConsumer&& c) { +SplitString(I b, const TDelim& d, TConsumer&& c) { I l, i; do { @@ -404,7 +404,7 @@ static inline void Split(char* buf, char ch, T* res) { TCharDelimiter<char> delim(ch); TSimplePusher<T> pusher = {res}; - SplitString(buf, delim, pusher); + SplitString(buf, delim, pusher); } /// Split string into res vector. Res vector is cleared before split. diff --git a/util/string/vector.cpp b/util/string/vector.cpp index 8d668d8f3d..9ba401f0a2 100644 --- a/util/string/vector.cpp +++ b/util/string/vector.cpp @@ -46,7 +46,7 @@ static inline void DoSplit0(C* res, const TBasicStringBuf<TChr> str, TDelim& d, } template <typename TChr> -static void SplitStringImplT(TVector<std::conditional_t<std::is_same<TChr, wchar16>::value, TUtf16String, TString>>* res, +static void SplitStringImplT(TVector<std::conditional_t<std::is_same<TChr, wchar16>::value, TUtf16String, TString>>* res, const TBasicStringBuf<TChr> str, const TChr* delim, size_t maxFields, int options) { if (!*delim) { return; @@ -63,19 +63,19 @@ static void SplitStringImplT(TVector<std::conditional_t<std::is_same<TChr, wchar } } -void ::NPrivate::SplitStringImpl(TVector<TString>* res, const char* ptr, const char* delim, size_t maxFields, int options) { +void ::NPrivate::SplitStringImpl(TVector<TString>* res, const char* ptr, const char* delim, size_t maxFields, int options) { return SplitStringImplT<char>(res, TStringBuf(ptr), delim, maxFields, options); } -void ::NPrivate::SplitStringImpl(TVector<TString>* res, const char* ptr, size_t len, const char* delim, size_t maxFields, int options) { +void ::NPrivate::SplitStringImpl(TVector<TString>* res, const char* ptr, size_t len, const char* delim, size_t maxFields, int options) { return SplitStringImplT<char>(res, TStringBuf(ptr, len), delim, maxFields, options); } -void ::NPrivate::SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, const wchar16* delimiter, size_t maxFields, int options) { +void ::NPrivate::SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, const wchar16* delimiter, size_t maxFields, int options) { return SplitStringImplT<wchar16>(res, TWtringBuf(ptr), delimiter, maxFields, options); } -void ::NPrivate::SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, size_t len, const wchar16* delimiter, size_t maxFields, int options) { +void ::NPrivate::SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, size_t len, const wchar16* delimiter, size_t maxFields, int options) { return SplitStringImplT<wchar16>(res, TWtringBuf(ptr, len), delimiter, maxFields, options); } diff --git a/util/string/vector.h b/util/string/vector.h index 392c12cbb8..e36c348bbe 100644 --- a/util/string/vector.h +++ b/util/string/vector.h @@ -15,54 +15,54 @@ // // NOTE: Check StringSplitter below to get more convenient split string interface. -namespace NPrivate { - - void SplitStringImpl(TVector<TString>* res, const char* ptr, - const char* delimiter, size_t maxFields, int options); - void SplitStringImpl(TVector<TString>* res, const char* ptr, size_t len, - const char* delimiter, size_t maxFields, int options); - - void SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, - const wchar16* delimiter, size_t maxFields, int options); - void SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, size_t len, - const wchar16* delimiter, size_t maxFields, int options); - - template <typename C> - struct TStringDeducer; - - template <> - struct TStringDeducer<char> { - using type = TString; - }; - - template <> - struct TStringDeducer<wchar16> { - using type = TUtf16String; - }; -} - -template <typename C> -TVector<typename ::NPrivate::TStringDeducer<C>::type> -SplitString(const C* ptr, const C* delimiter, - size_t maxFields = 0, int options = 0) { - TVector<typename ::NPrivate::TStringDeducer<C>::type> res; +namespace NPrivate { + + void SplitStringImpl(TVector<TString>* res, const char* ptr, + const char* delimiter, size_t maxFields, int options); + void SplitStringImpl(TVector<TString>* res, const char* ptr, size_t len, + const char* delimiter, size_t maxFields, int options); + + void SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, + const wchar16* delimiter, size_t maxFields, int options); + void SplitStringImpl(TVector<TUtf16String>* res, const wchar16* ptr, size_t len, + const wchar16* delimiter, size_t maxFields, int options); + + template <typename C> + struct TStringDeducer; + + template <> + struct TStringDeducer<char> { + using type = TString; + }; + + template <> + struct TStringDeducer<wchar16> { + using type = TUtf16String; + }; +} + +template <typename C> +TVector<typename ::NPrivate::TStringDeducer<C>::type> +SplitString(const C* ptr, const C* delimiter, + size_t maxFields = 0, int options = 0) { + TVector<typename ::NPrivate::TStringDeducer<C>::type> res; ::NPrivate::SplitStringImpl(&res, ptr, delimiter, maxFields, options); return res; } -template <typename C> -TVector<typename ::NPrivate::TStringDeducer<C>::type> -SplitString(const C* ptr, size_t len, const C* delimiter, - size_t maxFields = 0, int options = 0) { - TVector<typename ::NPrivate::TStringDeducer<C>::type> res; +template <typename C> +TVector<typename ::NPrivate::TStringDeducer<C>::type> +SplitString(const C* ptr, size_t len, const C* delimiter, + size_t maxFields = 0, int options = 0) { + TVector<typename ::NPrivate::TStringDeducer<C>::type> res; ::NPrivate::SplitStringImpl(&res, ptr, len, delimiter, maxFields, options); return res; } -template <typename C> -TVector<typename ::NPrivate::TStringDeducer<C>::type> -SplitString(const typename ::NPrivate::TStringDeducer<C>::type& str, const C* delimiter, - size_t maxFields = 0, int options = 0) { +template <typename C> +TVector<typename ::NPrivate::TStringDeducer<C>::type> +SplitString(const typename ::NPrivate::TStringDeducer<C>::type& str, const C* delimiter, + size_t maxFields = 0, int options = 0) { return SplitString(str.data(), str.size(), delimiter, maxFields, options); } |