summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2016-11-06 11:49:10 -0800
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2016-11-06 11:49:10 -0800
commitaa117cce42d75d58e47c8d584fec7ace5693df48 (patch)
tree1ae021c96c50047dd08a767089fb670239dddc13 /src
parentb3fc28d177dc1d5bcf937d3e7add77caff5a34f8 (diff)
Refactor move semantics support detection
Do it in one place and set PUGIXML_HAS_MOVE if it's available.
Diffstat (limited to 'src')
-rw-r--r--src/pugixml.cpp8
-rw-r--r--src/pugixml.hpp16
2 files changed, 17 insertions, 7 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp
index 4ae10b4..ccf8c4c 100644
--- a/src/pugixml.cpp
+++ b/src/pugixml.cpp
@@ -11923,7 +11923,7 @@ namespace pugi
}
}
-#if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+#ifdef PUGIXML_HAS_MOVE
PUGI__FN void xpath_node_set::_move(xpath_node_set& rhs)
{
_type = rhs._type;
@@ -11966,7 +11966,7 @@ namespace pugi
return *this;
}
-#if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+#ifdef PUGIXML_HAS_MOVE
PUGI__FN xpath_node_set::xpath_node_set(xpath_node_set&& rhs): _type(type_unsorted), _begin(&_storage), _end(&_storage)
{
_move(rhs);
@@ -12166,7 +12166,7 @@ namespace pugi
return *this;
}
-#if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+#ifdef PUGIXML_HAS_MOVE
PUGI__FN xpath_variable_set::xpath_variable_set(xpath_variable_set&& rhs)
{
for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i)
@@ -12360,7 +12360,7 @@ namespace pugi
impl::xpath_query_impl::destroy(static_cast<impl::xpath_query_impl*>(_impl));
}
-#if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+#ifdef PUGIXML_HAS_MOVE
PUGI__FN xpath_query::xpath_query(xpath_query&& rhs)
{
_impl = rhs._impl;
diff --git a/src/pugixml.hpp b/src/pugixml.hpp
index 44ad066..795b391 100644
--- a/src/pugixml.hpp
+++ b/src/pugixml.hpp
@@ -72,6 +72,16 @@
# endif
#endif
+// If the platform is known to have move semantics support, compile move ctor/operator implementation
+#ifndef PUGIXML_HAS_MOVE
+# if __cplusplus >= 201103
+# define PUGIXML_HAS_MOVE
+# elif defined(_MSC_VER) && _MSC_VER >= 1800
+# define PUGIXML_HAS_MOVE
+# endif
+#endif
+
+
// If C++ is 2011 or higher, add 'override' qualifiers
#ifndef PUGIXML_OVERRIDE
# if __cplusplus >= 201103
@@ -1117,7 +1127,7 @@ namespace pugi
xpath_variable_set(const xpath_variable_set& rhs);
xpath_variable_set& operator=(const xpath_variable_set& rhs);
- #if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+ #ifdef PUGIXML_HAS_MOVE
// Move semantics support
xpath_variable_set(xpath_variable_set&& rhs);
xpath_variable_set& operator=(xpath_variable_set&& rhs);
@@ -1161,7 +1171,7 @@ namespace pugi
// Destructor
~xpath_query();
- #if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+ #ifdef PUGIXML_HAS_MOVE
// Move semantics support
xpath_query(xpath_query&& rhs);
xpath_query& operator=(xpath_query&& rhs);
@@ -1302,7 +1312,7 @@ namespace pugi
xpath_node_set(const xpath_node_set& ns);
xpath_node_set& operator=(const xpath_node_set& ns);
- #if __cplusplus >= 201103 || (defined(_MSC_VER) && _MSC_VER >= 1800)
+ #ifdef PUGIXML_HAS_MOVE
// Move semantics support
xpath_node_set(xpath_node_set&& rhs);
xpath_node_set& operator=(xpath_node_set&& rhs);