diff options
author | vadim-xd <vadim-xd@yandex-team.com> | 2024-10-29 23:26:02 +0300 |
---|---|---|
committer | vadim-xd <vadim-xd@yandex-team.com> | 2024-10-29 23:37:18 +0300 |
commit | c0831b65c047f0894f63562b9da3024dfa779baf (patch) | |
tree | 81aded4973d6396774de89e8c5bc0796307628d5 /contrib/libs/protobuf/src | |
parent | fa653f89746744964114f44dce53c0f6ffb6deba (diff) | |
download | ydb-c0831b65c047f0894f63562b9da3024dfa779baf.tar.gz |
[protobuf] Restore methods with std::string_view
commit_hash:abb56697e948fac46777acec62a62b40767ea74d
Diffstat (limited to 'contrib/libs/protobuf/src')
-rw-r--r-- | contrib/libs/protobuf/src/google/protobuf/arenastring.cc | 5 | ||||
-rw-r--r-- | contrib/libs/protobuf/src/google/protobuf/arenastring.h | 19 |
2 files changed, 19 insertions, 5 deletions
diff --git a/contrib/libs/protobuf/src/google/protobuf/arenastring.cc b/contrib/libs/protobuf/src/google/protobuf/arenastring.cc index 4c4eb75da1..f466d542d9 100644 --- a/contrib/libs/protobuf/src/google/protobuf/arenastring.cc +++ b/contrib/libs/protobuf/src/google/protobuf/arenastring.cc @@ -96,7 +96,8 @@ class ScopedCheckPtrInvariants { #endif // NDEBUG || !GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL // Creates a heap allocated TProtoStringType value. -inline TaggedStringPtr CreateString(const TProtoStringType& value) { +template <typename TArg> +inline TaggedStringPtr CreateString(const TArg& value) { TaggedStringPtr res; res.SetAllocated(new TProtoStringType(value)); return res; @@ -115,7 +116,7 @@ TaggedStringPtr CreateArenaString(Arena& arena, y_absl::string_view s) { } // namespace -void ArenaStringPtr::Set(const TProtoStringType& value, Arena* arena) { +void ArenaStringPtr::Set(y_absl::string_view value, Arena* arena) { ScopedCheckPtrInvariants check(&tagged_ptr_); if (IsDefault()) { // If we're not on an arena, skip straight to a true string to avoid diff --git a/contrib/libs/protobuf/src/google/protobuf/arenastring.h b/contrib/libs/protobuf/src/google/protobuf/arenastring.h index 62a1ae3d4a..edee6ef4cb 100644 --- a/contrib/libs/protobuf/src/google/protobuf/arenastring.h +++ b/contrib/libs/protobuf/src/google/protobuf/arenastring.h @@ -259,19 +259,28 @@ struct PROTOBUF_EXPORT ArenaStringPtr { // instance known to not carry any heap allocated value. inline void InitAllocated(TProtoStringType* str, Arena* arena); - void Set(const TProtoStringType& value, Arena* arena); + void Set(y_absl::string_view value, Arena* arena); void Set(TProtoStringType&& value, Arena* arena); template <typename... OverloadDisambiguator> void Set(const TProtoStringType& value, Arena* arena); void Set(const char* s, Arena* arena); void Set(const char* s, size_t n, Arena* arena); + void Set(std::string&& value, Arena* arena) { + return Set(TProtoStringType(std::move(value)), arena); + } + + void SetBytes(y_absl::string_view value, Arena* arena); void SetBytes(TProtoStringType&& value, Arena* arena); template <typename... OverloadDisambiguator> void SetBytes(const TProtoStringType& value, Arena* arena); void SetBytes(const char* s, Arena* arena); void SetBytes(const void* p, size_t n, Arena* arena); + void SetBytes(std::string&& value, Arena* arena) { + return SetBytes(TProtoStringType(std::move(value)), arena); + } + template <typename RefWrappedType> void Set(std::reference_wrapper<RefWrappedType> const_string_ref, ::google::protobuf::Arena* arena) { @@ -413,7 +422,11 @@ inline void ArenaStringPtr::Set(const char* s, Arena* arena) { } inline void ArenaStringPtr::Set(const char* s, size_t n, Arena* arena) { - Set(TProtoStringType(s, s + n), arena); + Set(y_absl::string_view{s, n}, arena); +} + +inline void ArenaStringPtr::SetBytes(y_absl::string_view value, Arena* arena) { + Set(value, arena); } template <> @@ -434,7 +447,7 @@ inline void ArenaStringPtr::SetBytes(const char* s, Arena* arena) { } inline void ArenaStringPtr::SetBytes(const void* p, size_t n, Arena* arena) { - Set(TProtoStringType(static_cast<const char*>(p), static_cast<const char*>(p) + n), arena); + Set(y_absl::string_view{static_cast<const char*>(p), n}, arena); } // Make sure rhs_arena allocated rhs, and lhs_arena allocated lhs. |