diff options
author | babenko <babenko@yandex-team.com> | 2024-11-11 17:25:31 +0300 |
---|---|---|
committer | babenko <babenko@yandex-team.com> | 2024-11-11 17:38:41 +0300 |
commit | 79ac4ed959d879107eba1105fa7dad95567b08b7 (patch) | |
tree | b3b2cdb0645d6d44f1d9c73f1027735c8cf2b865 /library/cpp/yt/memory/ref.cpp | |
parent | 89676eb0165121e856d0cc1a82c62691daeb8ac3 (diff) | |
download | ydb-79ac4ed959d879107eba1105fa7dad95567b08b7.tar.gz |
Add TSharedRef::FromString overloads for std::string
commit_hash:2edff041e77ead18a6bb7efeb13c8163d85c0750
Diffstat (limited to 'library/cpp/yt/memory/ref.cpp')
-rw-r--r-- | library/cpp/yt/memory/ref.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/library/cpp/yt/memory/ref.cpp b/library/cpp/yt/memory/ref.cpp index 4d02ef6875..de04a83870 100644 --- a/library/cpp/yt/memory/ref.cpp +++ b/library/cpp/yt/memory/ref.cpp @@ -46,6 +46,7 @@ private: //////////////////////////////////////////////////////////////////////////////// +template <class TString> class TStringHolder : public TSharedRangeHolder { @@ -232,11 +233,27 @@ TMutableRef TMutableRef::FromBlob(TBlob& blob) TSharedRef TSharedRef::FromString(TString str, TRefCountedTypeCookie tagCookie) { - auto holder = New<TStringHolder>(std::move(str), tagCookie); + return FromStringImpl(std::move(str), tagCookie); +} + +TSharedRef TSharedRef::FromString(std::string str, TRefCountedTypeCookie tagCookie) +{ + return FromStringImpl(std::move(str), tagCookie); +} + +template <class TString> +TSharedRef TSharedRef::FromStringImpl(TString str, TRefCountedTypeCookie tagCookie) +{ + auto holder = New<TStringHolder<TString>>(std::move(str), tagCookie); auto ref = TRef::FromString(holder->String()); return TSharedRef(ref, std::move(holder)); } +TSharedRef TSharedRef::FromString(const char* str) +{ + return FromString(std::string(str)); +} + TSharedRef TSharedRef::FromBlob(TBlob&& blob) { auto ref = TRef::FromBlob(blob); |