You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2018/08/07 03:06:13 UTC
[mesos] 03/03: Added ref-qualified addition operations to
`Resources`.
This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 8132c64502717e10277297f4958f5f78a7b96093
Author: Meng Zhu <mz...@mesosphere.io>
AuthorDate: Mon Aug 6 19:30:55 2018 -0700
Added ref-qualified addition operations to `Resources`.
This patch futher adds move support for `Resources`
addition operations when the lhs is an rvalue reference.
Review: https://reviews.apache.org/r/68248/
---
include/mesos/resources.hpp | 17 ++++++++++-------
include/mesos/v1/resources.hpp | 17 ++++++++++-------
src/common/resources.cpp | 40 ++++++++++++++++++++++++++++++++++++----
src/v1/resources.cpp | 40 ++++++++++++++++++++++++++++++++++++----
4 files changed, 92 insertions(+), 22 deletions(-)
diff --git a/include/mesos/resources.hpp b/include/mesos/resources.hpp
index dc0a562..6d81d0e 100644
--- a/include/mesos/resources.hpp
+++ b/include/mesos/resources.hpp
@@ -618,17 +618,20 @@ public:
// doing subtraction), the semantics is as though the second operand
// was actually just an empty resource (as though you didn't do the
// operation at all).
- //
- // TODO(mzhu): Add overloading for addition operations where lhs is (also)
- // an rvalue reference.
- Resources operator+(const Resource& that) const;
- Resources operator+(Resource&& that) const;
+ Resources operator+(const Resource& that) const &;
+ Resources operator+(const Resource& that) &&;
+
+ Resources operator+(Resource&& that) const &;
+ Resources operator+(Resource&& that) &&;
Resources& operator+=(const Resource& that);
Resources& operator+=(Resource&& that);
- Resources operator+(const Resources& that) const;
- Resources operator+(Resources&& that) const;
+ Resources operator+(const Resources& that) const &;
+ Resources operator+(const Resources& that) &&;
+
+ Resources operator+(Resources&& that) const &;
+ Resources operator+(Resources&& that) &&;
Resources& operator+=(const Resources& that);
Resources& operator+=(Resources&& that);
diff --git a/include/mesos/v1/resources.hpp b/include/mesos/v1/resources.hpp
index 2d50123..f34f38f 100644
--- a/include/mesos/v1/resources.hpp
+++ b/include/mesos/v1/resources.hpp
@@ -612,17 +612,20 @@ public:
// doing subtraction), the semantics is as though the second operand
// was actually just an empty resource (as though you didn't do the
// operation at all).
- //
- // TODO(mzhu): Add overloading for addition operations where lhs is (also)
- // an rvalue reference.
- Resources operator+(const Resource& that) const;
- Resources operator+(Resource&& that) const;
+ Resources operator+(const Resource& that) const &;
+ Resources operator+(const Resource& that) &&;
+
+ Resources operator+(Resource&& that) const &;
+ Resources operator+(Resource&& that) &&;
Resources& operator+=(const Resource& that);
Resources& operator+=(Resource&& that);
- Resources operator+(const Resources& that) const;
- Resources operator+(Resources&& that) const;
+ Resources operator+(const Resources& that) const &;
+ Resources operator+(const Resources& that) &&;
+
+ Resources operator+(Resources&& that) const &;
+ Resources operator+(Resources&& that) &&;
Resources& operator+=(const Resources& that);
Resources& operator+=(Resources&& that);
diff --git a/src/common/resources.cpp b/src/common/resources.cpp
index 599bda2..cef2acd 100644
--- a/src/common/resources.cpp
+++ b/src/common/resources.cpp
@@ -2019,7 +2019,7 @@ Resources Resources::operator+(Resource_&& that) const
}
-Resources Resources::operator+(const Resource& that) const
+Resources Resources::operator+(const Resource& that) const &
{
Resources result = *this;
result += that;
@@ -2027,7 +2027,15 @@ Resources Resources::operator+(const Resource& that) const
}
-Resources Resources::operator+(Resource&& that) const
+Resources Resources::operator+(const Resource& that) &&
+{
+ Resources result = std::move(*this);
+ result += that;
+ return result;
+}
+
+
+Resources Resources::operator+(Resource&& that) const &
{
Resources result = *this;
result += std::move(that);
@@ -2035,7 +2043,15 @@ Resources Resources::operator+(Resource&& that) const
}
-Resources Resources::operator+(const Resources& that) const
+Resources Resources::operator+(Resource&& that) &&
+{
+ Resources result = std::move(*this);
+ result += std::move(that);
+ return result;
+}
+
+
+Resources Resources::operator+(const Resources& that) const &
{
Resources result = *this;
result += that;
@@ -2043,7 +2059,15 @@ Resources Resources::operator+(const Resources& that) const
}
-Resources Resources::operator+(Resources&& that) const
+Resources Resources::operator+(const Resources& that) &&
+{
+ Resources result = std::move(*this);
+ result += that;
+ return result;
+}
+
+
+Resources Resources::operator+(Resources&& that) const &
{
Resources result = std::move(that);
result += *this;
@@ -2051,6 +2075,14 @@ Resources Resources::operator+(Resources&& that) const
}
+Resources Resources::operator+(Resources&& that) &&
+{
+ Resources result = std::move(*this);
+ result += std::move(that);
+ return result;
+}
+
+
void Resources::add(const Resource_& that)
{
if (that.isEmpty()) {
diff --git a/src/v1/resources.cpp b/src/v1/resources.cpp
index be4a0cc..aa775bd 100644
--- a/src/v1/resources.cpp
+++ b/src/v1/resources.cpp
@@ -2026,7 +2026,7 @@ Resources Resources::operator+(Resource_&& that) const
}
-Resources Resources::operator+(const Resource& that) const
+Resources Resources::operator+(const Resource& that) const &
{
Resources result = *this;
result += that;
@@ -2034,7 +2034,15 @@ Resources Resources::operator+(const Resource& that) const
}
-Resources Resources::operator+(Resource&& that) const
+Resources Resources::operator+(const Resource& that) &&
+{
+ Resources result = std::move(*this);
+ result += that;
+ return result;
+}
+
+
+Resources Resources::operator+(Resource&& that) const &
{
Resources result = *this;
result += std::move(that);
@@ -2042,7 +2050,15 @@ Resources Resources::operator+(Resource&& that) const
}
-Resources Resources::operator+(const Resources& that) const
+Resources Resources::operator+(Resource&& that) &&
+{
+ Resources result = std::move(*this);
+ result += std::move(that);
+ return result;
+}
+
+
+Resources Resources::operator+(const Resources& that) const &
{
Resources result = *this;
result += that;
@@ -2050,7 +2066,15 @@ Resources Resources::operator+(const Resources& that) const
}
-Resources Resources::operator+(Resources&& that) const
+Resources Resources::operator+(const Resources& that) &&
+{
+ Resources result = std::move(*this);
+ result += that;
+ return result;
+}
+
+
+Resources Resources::operator+(Resources&& that) const &
{
Resources result = std::move(that);
result += *this;
@@ -2058,6 +2082,14 @@ Resources Resources::operator+(Resources&& that) const
}
+Resources Resources::operator+(Resources&& that) &&
+{
+ Resources result = std::move(*this);
+ result += std::move(that);
+ return result;
+}
+
+
void Resources::add(const Resource_& that)
{
if (that.isEmpty()) {