aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/arenastring.h
diff options
context:
space:
mode:
authorAdam Cozzette <acozzette@gmail.com>2016-12-19 16:51:43 -0800
committerGitHub <noreply@github.com>2016-12-19 16:51:43 -0800
commitcdc2766a5d9f64e9ef8af4aa481f1bb0b30bd700 (patch)
treea53a194ca54485a8204bfb8a9825adf7c223356f /src/google/protobuf/arenastring.h
parentbb2c6b21a021e40fcb416572f1cd30b2774c771e (diff)
parent183d31cbdb5197b1a014893a91198e970379f656 (diff)
downloadprotobuf-cdc2766a5d9f64e9ef8af4aa481f1bb0b30bd700.tar.gz
protobuf-cdc2766a5d9f64e9ef8af4aa481f1bb0b30bd700.tar.bz2
protobuf-cdc2766a5d9f64e9ef8af4aa481f1bb0b30bd700.zip
Merge pull request #2506 from ckennelly/rvalue-setters
Add rvalue setters for non-arena strings on C++11.
Diffstat (limited to 'src/google/protobuf/arenastring.h')
-rwxr-xr-xsrc/google/protobuf/arenastring.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/google/protobuf/arenastring.h b/src/google/protobuf/arenastring.h
index 726c19d4..a7efb752 100755
--- a/src/google/protobuf/arenastring.h
+++ b/src/google/protobuf/arenastring.h
@@ -210,6 +210,16 @@ struct LIBPROTOBUF_EXPORT ArenaStringPtr {
}
}
+#if LANG_CXX11
+ void SetNoArena(const ::std::string* default_value, ::std::string&& value) {
+ if (IsDefault(default_value)) {
+ ptr_ = new ::std::string(std::move(value));
+ } else {
+ *ptr_ = std::move(value);
+ }
+ }
+#endif
+
void AssignWithDefault(const ::std::string* default_value, ArenaStringPtr value);
inline const ::std::string& GetNoArena() const { return *ptr_; }