From b7a87bb6f98b96a853eea3b76abec7bdd4eaaeee Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 28 Jun 2015 21:56:20 -0700 Subject: [PATCH] Make StringValue noncopyable. Change-Id: I5b02cf988aaa15c467fa62c96c951d2891bc43db --- src/Storage.cpp | 2 +- src/Value.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Storage.cpp b/src/Storage.cpp index ba52eac3ae..47a467eecd 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -140,7 +140,7 @@ void Storage::SavePersistent(std::ostream& os) const { } case NT_STRING_ARRAY: { bool first = true; - for (auto elem : v.GetStringArray()) { + for (auto& elem : v.GetStringArray()) { if (!first) { os << ','; first = false; diff --git a/src/Value.h b/src/Value.h index d04c0978b2..b8b2049d9e 100644 --- a/src/Value.h +++ b/src/Value.h @@ -20,6 +20,9 @@ namespace ntimpl { class Storage; class Value; +/* + * C++ wrapper class around NT_String. + */ class StringValue : private NT_String { friend class Value; public: @@ -27,8 +30,14 @@ class StringValue : private NT_String { ~StringValue() { NT_DisposeString(this); } operator llvm::StringRef() const { return llvm::StringRef(str, len); } + + StringValue(const StringValue&) = delete; + StringValue& operator=(const StringValue&) = delete; }; +/* + * C++ wrapper class around NT_Value. + */ class Value : private NT_Value { friend class Storage; public: