Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: content/common/content_param_traits.h

Issue 157003005: Replace std::map with base::SmallMap in ui::LatencyInfo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | ui/events/latency_info.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file is used to define IPC::ParamTraits<> specializations for a number 5 // This file is used to define IPC::ParamTraits<> specializations for a number
6 // of types so that they can be serialized over IPC. IPC::ParamTraits<> 6 // of types so that they can be serialized over IPC. IPC::ParamTraits<>
7 // specializations for basic types (like int and std::string) and types in the 7 // specializations for basic types (like int and std::string) and types in the
8 // 'base' project can be found in ipc/ipc_message_utils.h. This file contains 8 // 'base' project can be found in ipc/ipc_message_utils.h. This file contains
9 // specializations for types that are used by the content code, and which need 9 // specializations for types that are used by the content code, and which need
10 // manual serialization code. This is usually because they're not structs with 10 // manual serialization code. This is usually because they're not structs with
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 typedef const blink::WebInputEvent* WebInputEventPointer; 61 typedef const blink::WebInputEvent* WebInputEventPointer;
62 template <> 62 template <>
63 struct ParamTraits<WebInputEventPointer> { 63 struct ParamTraits<WebInputEventPointer> {
64 typedef WebInputEventPointer param_type; 64 typedef WebInputEventPointer param_type;
65 static void Write(Message* m, const param_type& p); 65 static void Write(Message* m, const param_type& p);
66 // Note: upon read, the event has the lifetime of the message. 66 // Note: upon read, the event has the lifetime of the message.
67 static bool Read(const Message* m, PickleIterator* iter, param_type* r); 67 static bool Read(const Message* m, PickleIterator* iter, param_type* r);
68 static void Log(const param_type& p, std::string* l); 68 static void Log(const param_type& p, std::string* l);
69 }; 69 };
70 70
71 template <typename NormalMap,
72 int kArraySize,
73 typename EqualKey,
74 typename MapInit>
75 struct ParamTraits<base::SmallMap<NormalMap, kArraySize, EqualKey, MapInit> > {
76 typedef base::SmallMap<NormalMap, kArraySize, EqualKey, MapInit> param_type;
jdduke (slow) 2014/02/13 20:48:43 Hmm, this should probably live in common_param_tra
77 typedef typename param_type::key_type K;
78 typedef typename param_type::data_type V;
79 static void Write(Message* m, const param_type& p) {
80 WriteParam(m, static_cast<int>(p.size()));
81 typename param_type::const_iterator iter;
82 for (iter = p.begin(); iter != p.end(); ++iter) {
83 WriteParam(m, iter->first);
84 WriteParam(m, iter->second);
85 }
86 }
87 static bool Read(const Message* m, PickleIterator* iter, param_type* r) {
88 int size;
89 if (!ReadParam(m, iter, &size) || size < 0)
90 return false;
91 for (int i = 0; i < size; ++i) {
92 K k;
93 if (!ReadParam(m, iter, &k))
94 return false;
95 V& value = (*r)[k];
96 if (!ReadParam(m, iter, &value))
97 return false;
98 }
99 return true;
100 }
101 static void Log(const param_type& p, std::string* l) {
102 l->append("<base::SmallMap>");
103 }
104 };
105
71 } // namespace IPC 106 } // namespace IPC
72 107
73 #endif // CONTENT_COMMON_CONTENT_PARAM_TRAITS_H_ 108 #endif // CONTENT_COMMON_CONTENT_PARAM_TRAITS_H_
OLDNEW
« no previous file with comments | « no previous file | ui/events/latency_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698