You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mp...@apache.org on 2016/01/04 11:43:22 UTC
[2/5] mesos git commit: Cleaned up STL I/O includes in public headers
(including v1).
Cleaned up STL I/O includes in public headers (including v1).
Where possible moved `operator<<` definitions and functions using
streams to implementation files and included <iosfwd> in headers.
Also removed unused I/O includes, added necessary includes, and
cleaned up `std::` prefixes and blank lines.
Review: https://reviews.apache.org/r/41511/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/820640de
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/820640de
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/820640de
Branch: refs/heads/master
Commit: 820640de06f527ecca43785117f2b76541513c47
Parents: e8d3ab1
Author: Alexander Rukletsov <ru...@gmail.com>
Authored: Mon Jan 4 02:25:33 2016 -0800
Committer: Michael Park <mp...@apache.org>
Committed: Mon Jan 4 02:37:22 2016 -0800
----------------------------------------------------------------------
include/mesos/resources.hpp | 13 ++--
include/mesos/type_utils.hpp | 134 ++++++++----------------------------
include/mesos/v1/mesos.hpp | 134 ++++++++----------------------------
include/mesos/v1/resources.hpp | 13 ++--
include/mesos/v1/values.hpp | 2 +
include/mesos/values.hpp | 2 +
src/common/resources.cpp | 11 +++
src/common/type_utils.cpp | 133 +++++++++++++++++++++++++++++++++++
src/v1/mesos.cpp | 131 +++++++++++++++++++++++++++++++++++
src/v1/resources.cpp | 11 +++
10 files changed, 358 insertions(+), 226 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/include/mesos/resources.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/resources.hpp b/include/mesos/resources.hpp
index 9c8bfb0..cc8fef9 100644
--- a/include/mesos/resources.hpp
+++ b/include/mesos/resources.hpp
@@ -18,11 +18,13 @@
#define __RESOURCES_HPP__
#include <map>
-#include <iostream>
+#include <iosfwd>
#include <set>
#include <string>
#include <vector>
+#include <google/protobuf/repeated_field.h>
+
#include <mesos/mesos.hpp>
#include <mesos/type_utils.hpp>
#include <mesos/values.hpp>
@@ -369,15 +371,14 @@ private:
std::ostream& operator<<(std::ostream& stream, const Resource& resource);
+
+
std::ostream& operator<<(std::ostream& stream, const Resources& resources);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const google::protobuf::RepeatedPtrField<Resource>& resources)
-{
- return stream << Resources(resources);
-}
+ const google::protobuf::RepeatedPtrField<Resource>& resources);
inline Resources operator+(
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/include/mesos/type_utils.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/type_utils.hpp b/include/mesos/type_utils.hpp
index b370b51..efe2b1d 100644
--- a/include/mesos/type_utils.hpp
+++ b/include/mesos/type_utils.hpp
@@ -17,10 +17,14 @@
#ifndef __MESOS_TYPE_UTILS_H__
#define __MESOS_TYPE_UTILS_H__
-#include <ostream>
+#include <iosfwd>
+#include <string>
+#include <vector>
#include <boost/functional/hash.hpp>
+#include <google/protobuf/repeated_field.h>
+
#include <mesos/mesos.hpp>
#include <mesos/module/module.hpp>
@@ -246,141 +250,61 @@ inline bool operator<(const TaskID& left, const TaskID& right)
}
-inline std::ostream& operator<<(
- std::ostream& stream,
- const ContainerID& containerId)
-{
- return stream << containerId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const ContainerID& containerId);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const ContainerInfo& containerInfo)
-{
- return stream << containerInfo.DebugString();
-}
+ const ContainerInfo& containerInfo);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const ExecutorID& executorId)
-{
- return stream << executorId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const ExecutorID& executorId);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const ExecutorInfo& executor)
-{
- return stream << executor.DebugString();
-}
-
+std::ostream& operator<<(std::ostream& stream, const ExecutorInfo& executor);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const FrameworkID& frameworkId)
-{
- return stream << frameworkId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const FrameworkID& frameworkId);
-inline std::ostream& operator<<(std::ostream& stream, const MasterInfo& master)
-{
- return stream << master.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const MasterInfo& master);
-inline std::ostream& operator<<(std::ostream& stream, const OfferID& offerId)
-{
- return stream << offerId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const OfferID& offerId);
-inline std::ostream& operator<<(std::ostream& stream, const RateLimits& limits)
-{
- return stream << limits.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const RateLimits& limits);
-inline std::ostream& operator<<(std::ostream& stream, const SlaveID& slaveId)
-{
- return stream << slaveId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const SlaveID& slaveId);
-inline std::ostream& operator<<(std::ostream& stream, const SlaveInfo& slave)
-{
- return stream << slave.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const SlaveInfo& slave);
-inline std::ostream& operator<<(std::ostream& stream, const TaskID& taskId)
-{
- return stream << taskId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const TaskID& taskId);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const MachineID& machineId)
-{
- if (machineId.has_hostname() && machineId.has_ip()) {
- return stream << machineId.hostname() << " (" << machineId.ip() << ")";
- }
- // If only a hostname is present.
- if (machineId.has_hostname()) {
- return stream << machineId.hostname();
- } else { // If there is no hostname, then there is an IP.
- return stream << "(" << machineId.ip() << ")";
- }
-}
+std::ostream& operator<<(std::ostream& stream, const MachineID& machineId);
-inline std::ostream& operator<<(std::ostream& stream, const TaskInfo& task)
-{
- return stream << task.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const TaskInfo& task);
-inline std::ostream& operator<<(std::ostream& stream, const TaskState& state)
-{
- return stream << TaskState_Name(state);
-}
+std::ostream& operator<<(std::ostream& stream, const TaskState& state);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const std::vector<TaskID>& taskIds)
-{
- stream << "[ ";
- for (auto it = taskIds.begin(); it != taskIds.end(); ++it) {
- if (it != taskIds.begin()) {
- stream << ", ";
- }
- stream << *it;
- }
- stream << " ]";
- return stream;
-}
+ const std::vector<TaskID>& taskIds);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const FrameworkInfo::Capability& capability)
-{
- return stream << FrameworkInfo::Capability::Type_Name(capability.type());
-}
+ const FrameworkInfo::Capability& capability);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const Image::Type& imageType)
-{
- return stream << Image::Type_Name(imageType);
-}
+std::ostream& operator<<(std::ostream& stream, const Image::Type& imageType);
template <typename T>
@@ -400,13 +324,9 @@ inline std::ostream& operator<<(
}
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const hashmap<std::string, std::string>& map)
-{
- stream << stringify(map);
- return stream;
-}
+ const hashmap<std::string, std::string>& map);
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/include/mesos/v1/mesos.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/v1/mesos.hpp b/include/mesos/v1/mesos.hpp
index 80e7604..961042d 100644
--- a/include/mesos/v1/mesos.hpp
+++ b/include/mesos/v1/mesos.hpp
@@ -17,10 +17,14 @@
#ifndef __MESOS_V1_HPP__
#define __MESOS_V1_HPP__
-#include <ostream>
+#include <iosfwd>
+#include <string>
+#include <vector>
#include <boost/functional/hash.hpp>
+#include <google/protobuf/repeated_field.h>
+
#include <mesos/v1/mesos.pb.h> // ONLY USEFUL AFTER RUNNING PROTOC.
#include <stout/strings.hpp>
@@ -240,141 +244,61 @@ inline bool operator<(const TaskID& left, const TaskID& right)
}
-inline std::ostream& operator<<(
- std::ostream& stream,
- const ContainerID& containerId)
-{
- return stream << containerId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const ContainerID& containerId);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const ContainerInfo& containerInfo)
-{
- return stream << containerInfo.DebugString();
-}
+ const ContainerInfo& containerInfo);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const ExecutorID& executorId)
-{
- return stream << executorId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const ExecutorID& executorId);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const ExecutorInfo& executor)
-{
- return stream << executor.DebugString();
-}
-
+std::ostream& operator<<(std::ostream& stream, const ExecutorInfo& executor);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const FrameworkID& frameworkId)
-{
- return stream << frameworkId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const FrameworkID& frameworkId);
-inline std::ostream& operator<<(std::ostream& stream, const MasterInfo& master)
-{
- return stream << master.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const MasterInfo& master);
-inline std::ostream& operator<<(std::ostream& stream, const OfferID& offerId)
-{
- return stream << offerId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const OfferID& offerId);
-inline std::ostream& operator<<(std::ostream& stream, const RateLimits& limits)
-{
- return stream << limits.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const RateLimits& limits);
-inline std::ostream& operator<<(std::ostream& stream, const AgentID& agentId)
-{
- return stream << agentId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const AgentID& agentId);
-inline std::ostream& operator<<(std::ostream& stream, const AgentInfo& agent)
-{
- return stream << agent.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const AgentInfo& agent);
-inline std::ostream& operator<<(std::ostream& stream, const TaskID& taskId)
-{
- return stream << taskId.value();
-}
+std::ostream& operator<<(std::ostream& stream, const TaskID& taskId);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const MachineID& machineId)
-{
- if (machineId.has_hostname() && machineId.has_ip()) {
- return stream << machineId.hostname() << " (" << machineId.ip() << ")";
- }
- // If only a hostname is present.
- if (machineId.has_hostname()) {
- return stream << machineId.hostname();
- } else { // If there is no hostname, then there is an IP.
- return stream << "(" << machineId.ip() << ")";
- }
-}
+std::ostream& operator<<(std::ostream& stream, const MachineID& machineId);
-inline std::ostream& operator<<(std::ostream& stream, const TaskInfo& task)
-{
- return stream << task.DebugString();
-}
+std::ostream& operator<<(std::ostream& stream, const TaskInfo& task);
-inline std::ostream& operator<<(std::ostream& stream, const TaskState& state)
-{
- return stream << TaskState_Name(state);
-}
+std::ostream& operator<<(std::ostream& stream, const TaskState& state);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const std::vector<TaskID>& taskIds)
-{
- stream << "[ ";
- for (auto it = taskIds.begin(); it != taskIds.end(); ++it) {
- if (it != taskIds.begin()) {
- stream << ", ";
- }
- stream << *it;
- }
- stream << " ]";
- return stream;
-}
+ const std::vector<TaskID>& taskIds);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const FrameworkInfo::Capability& capability)
-{
- return stream << FrameworkInfo::Capability::Type_Name(capability.type());
-}
+ const FrameworkInfo::Capability& capability);
-inline std::ostream& operator<<(
- std::ostream& stream,
- const Image::Type& imageType)
-{
- return stream << Image::Type_Name(imageType);
-}
+std::ostream& operator<<(std::ostream& stream, const Image::Type& imageType);
template <typename T>
@@ -394,13 +318,9 @@ inline std::ostream& operator<<(
}
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const hashmap<std::string, std::string>& map)
-{
- stream << stringify(map);
- return stream;
-}
+ const hashmap<std::string, std::string>& map);
} // namespace v1 {
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/include/mesos/v1/resources.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/v1/resources.hpp b/include/mesos/v1/resources.hpp
index db87c99..f489297 100644
--- a/include/mesos/v1/resources.hpp
+++ b/include/mesos/v1/resources.hpp
@@ -18,11 +18,13 @@
#define __MESOS_V1_RESOURCES_HPP__
#include <map>
-#include <iostream>
+#include <iosfwd>
#include <set>
#include <string>
#include <vector>
+#include <google/protobuf/repeated_field.h>
+
#include <mesos/v1/mesos.hpp>
#include <mesos/v1/values.hpp>
@@ -369,15 +371,14 @@ private:
std::ostream& operator<<(std::ostream& stream, const Resource& resource);
+
+
std::ostream& operator<<(std::ostream& stream, const Resources& resources);
-inline std::ostream& operator<<(
+std::ostream& operator<<(
std::ostream& stream,
- const google::protobuf::RepeatedPtrField<Resource>& resources)
-{
- return stream << Resources(resources);
-}
+ const google::protobuf::RepeatedPtrField<Resource>& resources);
inline Resources operator+(
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/include/mesos/v1/values.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/v1/values.hpp b/include/mesos/v1/values.hpp
index a160bd4..03a19ee 100644
--- a/include/mesos/v1/values.hpp
+++ b/include/mesos/v1/values.hpp
@@ -17,6 +17,8 @@
#ifndef __MESOS_V1_VALUES_HPP__
#define __MESOS_V1_VALUES_HPP__
+#include <iosfwd>
+
#include <mesos/v1/mesos.hpp>
#include <stout/try.hpp>
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/include/mesos/values.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/values.hpp b/include/mesos/values.hpp
index 58af972..0d09729 100644
--- a/include/mesos/values.hpp
+++ b/include/mesos/values.hpp
@@ -17,6 +17,8 @@
#ifndef __VALUES_HPP__
#define __VALUES_HPP__
+#include <iosfwd>
+
#include <mesos/mesos.hpp>
#include <stout/try.hpp>
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/src/common/resources.cpp
----------------------------------------------------------------------
diff --git a/src/common/resources.cpp b/src/common/resources.cpp
index b9d31ae..6afd2df 100644
--- a/src/common/resources.cpp
+++ b/src/common/resources.cpp
@@ -16,12 +16,15 @@
#include <stdint.h>
+#include <ostream>
#include <set>
#include <string>
#include <vector>
#include <glog/logging.h>
+#include <google/protobuf/repeated_field.h>
+
#include <mesos/resources.hpp>
#include <mesos/values.hpp>
#include <mesos/type_utils.hpp>
@@ -1392,4 +1395,12 @@ ostream& operator<<(ostream& stream, const Resources& resources)
return stream;
}
+
+ostream& operator<<(
+ ostream& stream,
+ const google::protobuf::RepeatedPtrField<Resource>& resources)
+{
+ return stream << Resources(resources);
+}
+
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/src/common/type_utils.cpp
----------------------------------------------------------------------
diff --git a/src/common/type_utils.cpp b/src/common/type_utils.cpp
index c6c9ba7..76f48f6 100644
--- a/src/common/type_utils.cpp
+++ b/src/common/type_utils.cpp
@@ -14,6 +14,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+#include <ostream>
+
#include <mesos/attributes.hpp>
#include <mesos/mesos.hpp>
#include <mesos/resources.hpp>
@@ -21,6 +23,10 @@
#include "messages/messages.hpp"
+using std::ostream;
+using std::string;
+using std::vector;
+
namespace mesos {
// TODO(vinod): Ensure that these operators do not go out of sync
@@ -360,4 +366,131 @@ bool operator!=(const TaskStatus& left, const TaskStatus& right)
return !(left == right);
}
+
+ostream& operator<<(ostream& stream, const ContainerID& containerId)
+{
+ return stream << containerId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const ContainerInfo& containerInfo)
+{
+ return stream << containerInfo.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const ExecutorID& executorId)
+{
+ return stream << executorId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const ExecutorInfo& executor)
+{
+ return stream << executor.DebugString();
+}
+
+
+ostream& operator<<(std::ostream& stream, const FrameworkID& frameworkId)
+{
+ return stream << frameworkId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const MasterInfo& master)
+{
+ return stream << master.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const OfferID& offerId)
+{
+ return stream << offerId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const RateLimits& limits)
+{
+ return stream << limits.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const SlaveID& slaveId)
+{
+ return stream << slaveId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const SlaveInfo& slave)
+{
+ return stream << slave.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const TaskID& taskId)
+{
+ return stream << taskId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const MachineID& machineId)
+{
+ if (machineId.has_hostname() && machineId.has_ip()) {
+ return stream << machineId.hostname() << " (" << machineId.ip() << ")";
+ }
+
+ // If only a hostname is present.
+ if (machineId.has_hostname()) {
+ return stream << machineId.hostname();
+ } else { // If there is no hostname, then there is an IP.
+ return stream << "(" << machineId.ip() << ")";
+ }
+}
+
+
+ostream& operator<<(ostream& stream, const TaskInfo& task)
+{
+ return stream << task.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const TaskState& state)
+{
+ return stream << TaskState_Name(state);
+}
+
+
+ostream& operator<<(ostream& stream, const vector<TaskID>& taskIds)
+{
+ stream << "[ ";
+ for (auto it = taskIds.begin(); it != taskIds.end(); ++it) {
+ if (it != taskIds.begin()) {
+ stream << ", ";
+ }
+ stream << *it;
+ }
+ stream << " ]";
+ return stream;
+}
+
+
+ostream& operator<<(
+ ostream& stream,
+ const FrameworkInfo::Capability& capability)
+{
+ return stream << FrameworkInfo::Capability::Type_Name(capability.type());
+}
+
+
+ostream& operator<<(ostream& stream, const Image::Type& imageType)
+{
+ return stream << Image::Type_Name(imageType);
+}
+
+
+ostream& operator<<(ostream& stream, const hashmap<string, string>& map)
+{
+ return stream << stringify(map);
+}
+
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/src/v1/mesos.cpp
----------------------------------------------------------------------
diff --git a/src/v1/mesos.cpp b/src/v1/mesos.cpp
index 13a58ba..9264752 100644
--- a/src/v1/mesos.cpp
+++ b/src/v1/mesos.cpp
@@ -14,10 +14,16 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+#include <ostream>
+
#include <mesos/v1/attributes.hpp>
#include <mesos/v1/mesos.hpp>
#include <mesos/v1/resources.hpp>
+using std::ostream;
+using std::string;
+using std::vector;
+
namespace mesos {
namespace v1 {
@@ -356,6 +362,131 @@ bool operator!=(const TaskStatus& left, const TaskStatus& right)
return !(left == right);
}
+ostream& operator<<(ostream& stream, const ContainerID& containerId)
+{
+ return stream << containerId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const ContainerInfo& containerInfo)
+{
+ return stream << containerInfo.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const ExecutorID& executorId)
+{
+ return stream << executorId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const ExecutorInfo& executor)
+{
+ return stream << executor.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const FrameworkID& frameworkId)
+{
+ return stream << frameworkId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const MasterInfo& master)
+{
+ return stream << master.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const OfferID& offerId)
+{
+ return stream << offerId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const RateLimits& limits)
+{
+ return stream << limits.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const AgentID& agentId)
+{
+ return stream << agentId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const AgentInfo& agent)
+{
+ return stream << agent.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const TaskID& taskId)
+{
+ return stream << taskId.value();
+}
+
+
+ostream& operator<<(ostream& stream, const MachineID& machineId)
+{
+ if (machineId.has_hostname() && machineId.has_ip()) {
+ return stream << machineId.hostname() << " (" << machineId.ip() << ")";
+ }
+
+ // If only a hostname is present.
+ if (machineId.has_hostname()) {
+ return stream << machineId.hostname();
+ } else { // If there is no hostname, then there is an IP.
+ return stream << "(" << machineId.ip() << ")";
+ }
+}
+
+
+ostream& operator<<(ostream& stream, const TaskInfo& task)
+{
+ return stream << task.DebugString();
+}
+
+
+ostream& operator<<(ostream& stream, const TaskState& state)
+{
+ return stream << TaskState_Name(state);
+}
+
+
+ostream& operator<<(ostream& stream, const vector<TaskID>& taskIds)
+{
+ stream << "[ ";
+ for (auto it = taskIds.begin(); it != taskIds.end(); ++it) {
+ if (it != taskIds.begin()) {
+ stream << ", ";
+ }
+ stream << *it;
+ }
+ stream << " ]";
+ return stream;
+}
+
+
+ostream& operator<<(
+ ostream& stream,
+ const FrameworkInfo::Capability& capability)
+{
+ return stream << FrameworkInfo::Capability::Type_Name(capability.type());
+}
+
+
+ostream& operator<<(ostream& stream, const Image::Type& imageType)
+{
+ return stream << Image::Type_Name(imageType);
+}
+
+
+ostream& operator<<(ostream& stream, const hashmap<string, string>& map)
+{
+ return stream << stringify(map);
+}
} // namespace v1 {
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/820640de/src/v1/resources.cpp
----------------------------------------------------------------------
diff --git a/src/v1/resources.cpp b/src/v1/resources.cpp
index 0c0eee6..8de6672 100644
--- a/src/v1/resources.cpp
+++ b/src/v1/resources.cpp
@@ -16,12 +16,15 @@
#include <stdint.h>
+#include <ostream>
#include <set>
#include <string>
#include <vector>
#include <glog/logging.h>
+#include <google/protobuf/repeated_field.h>
+
#include <mesos/v1/mesos.hpp>
#include <mesos/v1/resources.hpp>
#include <mesos/v1/values.hpp>
@@ -1394,5 +1397,13 @@ ostream& operator<<(ostream& stream, const Resources& resources)
return stream;
}
+
+ostream& operator<<(
+ ostream& stream,
+ const google::protobuf::RepeatedPtrField<Resource>& resources)
+{
+ return stream << Resources(resources);
+}
+
} // namespace v1 {
} // namespace mesos {