Commit 46e16963 authored by Philipp A. Hartmann's avatar Philipp A. Hartmann

add free inline `swap` functions

parent 0ebe16e1
...@@ -660,6 +660,8 @@ public: ...@@ -660,6 +660,8 @@ public:
return *this; return *this;
} }
friend inline void swap(GenericValue& a, GenericValue& b) RAPIDJSON_NOEXCEPT { a.Swap(b); }
//! Prepare Value for move semantics //! Prepare Value for move semantics
/*! \return *this */ /*! \return *this */
GenericValue& Move() RAPIDJSON_NOEXCEPT { return *this; } GenericValue& Move() RAPIDJSON_NOEXCEPT { return *this; }
...@@ -1818,6 +1820,8 @@ public: ...@@ -1818,6 +1820,8 @@ public:
return *this; return *this;
} }
friend inline void swap(GenericDocument& a, GenericDocument& b) RAPIDJSON_NOEXCEPT { a.Swap(b); }
//!@name Parse from stream //!@name Parse from stream
//!@{ //!@{
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "rapidjson/encodedstream.h" #include "rapidjson/encodedstream.h"
#include "rapidjson/stringbuffer.h" #include "rapidjson/stringbuffer.h"
#include <sstream> #include <sstream>
#include <algorithm>
using namespace rapidjson; using namespace rapidjson;
...@@ -223,6 +224,17 @@ TEST(Document, Swap) { ...@@ -223,6 +224,17 @@ TEST(Document, Swap) {
Document().Swap(d2); Document().Swap(d2);
EXPECT_TRUE(d2.IsNull()); EXPECT_TRUE(d2.IsNull());
EXPECT_NE(&d2.GetAllocator(), &a); EXPECT_NE(&d2.GetAllocator(), &a);
// testing std::swap compatibility
d1.SetBool(true);
using std::swap;
swap(d1, d2);
EXPECT_TRUE(d1.IsNull());
EXPECT_TRUE(d2.IsTrue());
swap(o, d2);
EXPECT_TRUE(o.IsTrue());
EXPECT_TRUE(d2.IsArray());
} }
......
...@@ -272,6 +272,12 @@ TEST(Value, Swap) { ...@@ -272,6 +272,12 @@ TEST(Value, Swap) {
EXPECT_TRUE(v1.IsObject()); EXPECT_TRUE(v1.IsObject());
EXPECT_TRUE(v2.IsInt()); EXPECT_TRUE(v2.IsInt());
EXPECT_EQ(1234, v2.GetInt()); EXPECT_EQ(1234, v2.GetInt());
// testing std::swap compatibility
using std::swap;
swap(v1, v2);
EXPECT_TRUE(v1.IsInt());
EXPECT_TRUE(v2.IsObject());
} }
TEST(Value, Null) { TEST(Value, Null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment