aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/memory/ref.cpp
diff options
context:
space:
mode:
authorbabenko <babenko@yandex-team.com>2024-11-11 17:25:31 +0300
committerbabenko <babenko@yandex-team.com>2024-11-11 17:38:41 +0300
commit79ac4ed959d879107eba1105fa7dad95567b08b7 (patch)
treeb3b2cdb0645d6d44f1d9c73f1027735c8cf2b865 /library/cpp/yt/memory/ref.cpp
parent89676eb0165121e856d0cc1a82c62691daeb8ac3 (diff)
downloadydb-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.cpp19
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);