Index: ipc/ipc_message_utils.h |
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h |
index 58d6aa26da34fb125d45bd9f2ddd3f767a2f7313..82dcdb092669ec5d059063d8f544f597c28943a2 100644 |
--- a/ipc/ipc_message_utils.h |
+++ b/ipc/ipc_message_utils.h |
@@ -307,6 +307,37 @@ struct IPC_EXPORT ParamTraits<double> { |
static void Log(const param_type& p, std::string* l); |
}; |
+template <class P, size_t Size> |
+struct ParamTraits<P[Size]> { |
+ using param_type = P[Size]; |
+ static void GetSize(base::PickleSizer* sizer, const param_type& p) { |
+ for (const P& element : p) |
+ GetParamSize(sizer, element); |
+ } |
+ static void Write(base::Pickle* m, const param_type& p) { |
+ for (const P& element : p) |
+ WriteParam(m, element); |
+ } |
+ static bool Read(const base::Pickle* m, |
+ base::PickleIterator* iter, |
+ param_type* r) { |
+ for (P& element : *r) { |
+ if (!ReadParam(m, iter, &element)) |
+ return false; |
+ } |
+ return true; |
+ } |
+ static void Log(const param_type& p, std::string* l) { |
+ l->append("["); |
+ for (size_t i = 0; i < Size; ++i) { |
ericrk
2017/02/09 22:02:08
Didn't move to range-based-for here, as it makes i
Tom Sepez
2017/02/09 22:39:07
This is fine, but for future reference, I believe
ericrk
2017/02/10 00:15:28
makes sense, done.
|
+ if (i != 0) |
+ l->append(" "); |
+ LogParam((p[i]), l); |
+ } |
+ l->append("]"); |
+ } |
+}; |
+ |
// STL ParamTraits ------------------------------------------------------------- |
template <> |