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

Side by Side Diff: ipc/ipc_message_impl_macros.h

Issue 3018045: FBTF: Allow forward declaration of classes passed to sync IPC messages. (Closed)
Patch Set: Fix linkage problems with previous patch. Created 10 years, 4 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 | « chrome/renderer/render_view.cc ('k') | ipc/ipc_message_macros.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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // The file ipc_messsage_macros.h defines the classes for individual 5 // The file ipc_messsage_macros.h defines the classes for individual
6 // messages. This file works similarly, except that it defines the 6 // messages. This file works similarly, except that it defines the
7 // implementations of the constructors and the logging methods. (These only 7 // implementations of the constructors and the logging methods. (These only
8 // have to be generated once). It is meant to be included in a XXX_messages.cc 8 // have to be generated once). It is meant to be included in a XXX_messages.cc
9 // file. 9 // file.
10 // 10
11 // Unlike ipc_message_macros.h, this file is only included once; it uses one
12 // pass. But we *still* can't use normal include guards because we still need
13 // to use the MESSAGES_INTERNAL_FILE dispatch system. Because that #define is
14 // unset, we use the different name MESSAGES_INTERNAL_IMPL_FILE to tell this
15 // file what to do.
16 #ifndef IPC_IPC_MESSAGE_IMPL_MACROS_H_ 11 #ifndef IPC_IPC_MESSAGE_IMPL_MACROS_H_
17 #define IPC_IPC_MESSAGE_IMPL_MACROS_H_ 12 #define IPC_IPC_MESSAGE_IMPL_MACROS_H_
18 13
19 #include "ipc/ipc_message_utils.h" 14 #include "ipc/ipc_message_utils.h"
20 #include "ipc/ipc_message_utils_impl.h" 15 #include "ipc/ipc_message_utils_impl.h"
21 16
22 #ifndef MESSAGES_INTERNAL_IMPL_FILE 17 #ifndef MESSAGES_INTERNAL_IMPL_FILE
23 #error This file should only be included by X_messages.cc, which needs to define MESSAGES_INTERNAL_IMPL_FILE first. 18 #error This file should only be included by X_messages.cc, which needs to define MESSAGES_INTERNAL_IMPL_FILE first.
24 #endif 19 #endif
25 20
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 #undef IPC_SYNC_MESSAGE_ROUTED4_3 85 #undef IPC_SYNC_MESSAGE_ROUTED4_3
91 #undef IPC_SYNC_MESSAGE_ROUTED5_0 86 #undef IPC_SYNC_MESSAGE_ROUTED5_0
92 #undef IPC_SYNC_MESSAGE_ROUTED5_1 87 #undef IPC_SYNC_MESSAGE_ROUTED5_1
93 #undef IPC_SYNC_MESSAGE_ROUTED5_2 88 #undef IPC_SYNC_MESSAGE_ROUTED5_2
94 #undef IPC_SYNC_MESSAGE_ROUTED5_3 89 #undef IPC_SYNC_MESSAGE_ROUTED5_3
95 90
96 // These don't do anything during this pass. 91 // These don't do anything during this pass.
97 #define IPC_BEGIN_MESSAGES(label) 92 #define IPC_BEGIN_MESSAGES(label)
98 #define IPC_END_MESSAGES(label) 93 #define IPC_END_MESSAGES(label)
99 94
95 // Every class must include a destructor and a log method that is keyed to the
96 // specific types.
97 #define IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) \
98 msg_class::~msg_class() {} \
99 \
100 void msg_class::Log(const Message* msg, std::wstring* l) { \
101 Param p; \
102 if (Read(msg, &p)) \
103 IPC::LogParam(p, l); \
104 }
105
100 // This derives from IPC::Message and thus doesn't need us to keep the 106 // This derives from IPC::Message and thus doesn't need us to keep the
101 // implementations in this impl file. 107 // implementations in this impl file.
102 #define IPC_MESSAGE_CONTROL0(msg_class) 108 #define IPC_MESSAGE_CONTROL0(msg_class)
103 109
104 #define IPC_MESSAGE_CONTROL1(msg_class, type1) \ 110 #define IPC_MESSAGE_CONTROL1(msg_class, type1) \
105 msg_class::msg_class(const type1& arg1) \ 111 msg_class::msg_class(const type1& arg1) \
106 : IPC::MessageWithTuple< Tuple1<type1> >( \ 112 : IPC::MessageWithTuple< Tuple1<type1> >( \
107 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1)) {} \ 113 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1)) {} \
108 \ 114 \
109 msg_class::~msg_class() {} \ 115 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
110 \
111 void msg_class::Log(const Message* msg, std::wstring* l) { \
112 Param p; \
113 if (Read(msg, &p)) \
114 IPC::LogParam(p, l); \
115 }
116 116
117 #define IPC_MESSAGE_CONTROL2(msg_class, type1, type2) \ 117 #define IPC_MESSAGE_CONTROL2(msg_class, type1, type2) \
118 msg_class::msg_class(const type1& arg1, const type2& arg2) \ 118 msg_class::msg_class(const type1& arg1, const type2& arg2) \
119 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \ 119 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \
120 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2)) {} \ 120 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2)) {} \
121 \ 121 \
122 msg_class::~msg_class() {} \ 122 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
123 \
124 void msg_class::Log(const Message* msg, std::wstring* l) { \
125 Param p; \
126 if (Read(msg, &p)) \
127 IPC::LogParam(p, l); \
128 }
129 123
130 #define IPC_MESSAGE_CONTROL3(msg_class, type1, type2, type3) \ 124 #define IPC_MESSAGE_CONTROL3(msg_class, type1, type2, type3) \
131 msg_class::msg_class(const type1& arg1, const type2& arg2, \ 125 msg_class::msg_class(const type1& arg1, const type2& arg2, \
132 const type3& arg3) \ 126 const type3& arg3) \
133 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \ 127 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \
134 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3)) {} \ 128 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3)) {} \
135 \ 129 \
136 msg_class::~msg_class() {} \ 130 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
137 \
138 void msg_class::Log(const Message* msg, std::wstring* l) { \
139 Param p; \
140 if (Read(msg, &p)) \
141 IPC::LogParam(p, l); \
142 }
143 131
144 #define IPC_MESSAGE_CONTROL4(msg_class, type1, type2, type3, type4) \ 132 #define IPC_MESSAGE_CONTROL4(msg_class, type1, type2, type3, type4) \
145 msg_class::msg_class(const type1& arg1, const type2& arg2, \ 133 msg_class::msg_class(const type1& arg1, const type2& arg2, \
146 const type3& arg3, const type4& arg4) \ 134 const type3& arg3, const type4& arg4) \
147 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \ 135 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \
148 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \ 136 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \
149 \ 137 \
150 msg_class::~msg_class() {} \ 138 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
151 \
152 void msg_class::Log(const Message* msg, std::wstring* l) { \
153 Param p; \
154 if (Read(msg, &p)) \
155 IPC::LogParam(p, l); \
156 }
157 139
158 #define IPC_MESSAGE_CONTROL5(msg_class, type1, type2, type3, type4, type5) \ 140 #define IPC_MESSAGE_CONTROL5(msg_class, type1, type2, type3, type4, type5) \
159 msg_class::msg_class(const type1& arg1, const type2& arg2, \ 141 msg_class::msg_class(const type1& arg1, const type2& arg2, \
160 const type3& arg3, const type4& arg4, \ 142 const type3& arg3, const type4& arg4, \
161 const type5& arg5) \ 143 const type5& arg5) \
162 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \ 144 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \
163 MSG_ROUTING_CONTROL, ID, \ 145 MSG_ROUTING_CONTROL, ID, \
164 MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \ 146 MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \
165 \ 147 \
166 msg_class::~msg_class() {} \ 148 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
167 \
168 void msg_class::Log(const Message* msg, std::wstring* l) { \
169 Param p; \
170 if (Read(msg, &p)) \
171 IPC::LogParam(p, l); \
172 }
173 149
174 // This derives from IPC::Message and thus doesn't need us to keep the 150 // This derives from IPC::Message and thus doesn't need us to keep the
175 // implementations in this impl file. 151 // implementations in this impl file.
176 #define IPC_MESSAGE_ROUTED0(msg_class) 152 #define IPC_MESSAGE_ROUTED0(msg_class)
177 153
178 #define IPC_MESSAGE_ROUTED1(msg_class, type1) \ 154 #define IPC_MESSAGE_ROUTED1(msg_class, type1) \
179 msg_class::msg_class(int32 routing_id, const type1& arg1) \ 155 msg_class::msg_class(int32 routing_id, const type1& arg1) \
180 : IPC::MessageWithTuple< Tuple1<type1> >( \ 156 : IPC::MessageWithTuple< Tuple1<type1> >( \
181 routing_id, ID, MakeRefTuple(arg1)) {} \ 157 routing_id, ID, MakeRefTuple(arg1)) {} \
182 \ 158 \
183 msg_class::~msg_class() {} \ 159 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
184 \
185 void msg_class::Log(const Message* msg, std::wstring* l) { \
186 Param p; \
187 if (Read(msg, &p)) \
188 IPC::LogParam(p, l); \
189 }
190 160
191 #define IPC_MESSAGE_ROUTED2(msg_class, type1, type2) \ 161 #define IPC_MESSAGE_ROUTED2(msg_class, type1, type2) \
192 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2) \ 162 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2) \
193 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \ 163 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \
194 routing_id, ID, MakeRefTuple(arg1, arg2)) {} \ 164 routing_id, ID, MakeRefTuple(arg1, arg2)) {} \
195 \ 165 \
196 msg_class::~msg_class() {} \ 166 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
197 \
198 void msg_class::Log(const Message* msg, std::wstring* l) { \
199 Param p; \
200 if (Read(msg, &p)) \
201 IPC::LogParam(p, l); \
202 }
203 167
204 168
205 #define IPC_MESSAGE_ROUTED3(msg_class, type1, type2, type3) \ 169 #define IPC_MESSAGE_ROUTED3(msg_class, type1, type2, type3) \
206 msg_class::msg_class(int32 routing_id, const type1& arg1, \ 170 msg_class::msg_class(int32 routing_id, const type1& arg1, \
207 const type2& arg2, const type3& arg3) \ 171 const type2& arg2, const type3& arg3) \
208 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \ 172 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \
209 routing_id, ID, MakeRefTuple(arg1, arg2, arg3)) {} \ 173 routing_id, ID, MakeRefTuple(arg1, arg2, arg3)) {} \
210 \ 174 \
211 msg_class::~msg_class() {} \ 175 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
212 \
213 void msg_class::Log(const Message* msg, std::wstring* l) { \
214 Param p; \
215 if (Read(msg, &p)) \
216 IPC::LogParam(p, l); \
217 }
218 176
219 #define IPC_MESSAGE_ROUTED4(msg_class, type1, type2, type3, type4) \ 177 #define IPC_MESSAGE_ROUTED4(msg_class, type1, type2, type3, type4) \
220 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2, \ 178 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2, \
221 const type3& arg3, const type4& arg4) \ 179 const type3& arg3, const type4& arg4) \
222 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \ 180 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \
223 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \ 181 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \
224 \ 182 \
225 msg_class::~msg_class() {} \ 183 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
226 \
227 void msg_class::Log(const Message* msg, std::wstring* l) { \
228 Param p; \
229 if (Read(msg, &p)) \
230 IPC::LogParam(p, l); \
231 }
232 184
233 #define IPC_MESSAGE_ROUTED5(msg_class, type1, type2, type3, type4, type5) \ 185 #define IPC_MESSAGE_ROUTED5(msg_class, type1, type2, type3, type4, type5) \
234 msg_class::msg_class(int32 routing_id, const type1& arg1, \ 186 msg_class::msg_class(int32 routing_id, const type1& arg1, \
235 const type2& arg2, const type3& arg3, \ 187 const type2& arg2, const type3& arg3, \
236 const type4& arg4, const type5& arg5) \ 188 const type4& arg4, const type5& arg5) \
237 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \ 189 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \
238 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \ 190 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \
239 \ 191 \
240 msg_class::~msg_class() { } \ 192 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
193
194 // -----------------------------------------------------------------------------
195
196 // Every class must include a destructor and a log method that is keyed to the
197 // specific types.
198 #define IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) \
199 msg_class::~msg_class() {} \
241 \ 200 \
242 void msg_class::Log(const Message* msg, std::wstring* l) { \ 201 void msg_class::Log(const Message* msg, std::wstring* l) { \
243 Param p; \ 202 if (msg->is_sync()) { \
244 if (Read(msg, &p)) \ 203 SendParam p; \
245 IPC::LogParam(p, l); \ 204 if (ReadSendParam(msg, &p)) \
205 IPC::LogParam(p, l); \
206 \
207 AddOutputParamsToLog(msg, l); \
208 } else { \
209 TupleTypes<ReplyParam>::ValueTuple p; \
210 if (ReadReplyParam(msg, &p)) \
211 IPC::LogParam(p, l); \
212 } \
246 } 213 }
247 214
248 // TODO(erg): Fill these in as I go along. 215 #define IPC_SYNC_MESSAGE_CONTROL0_0(msg_class) \
249 #define IPC_SYNC_MESSAGE_CONTROL0_0(msg_class) 216 msg_class::msg_class() \
250 #define IPC_SYNC_MESSAGE_CONTROL0_1(msg_class, type1_out) 217 : IPC::MessageWithReply<Tuple0, Tuple0 >( \
251 #define IPC_SYNC_MESSAGE_CONTROL0_2(msg_class, type1_out, type2_out) 218 MSG_ROUTING_CONTROL, ID, \
252 #define IPC_SYNC_MESSAGE_CONTROL0_3(msg_class, type1_out, type2_out, type3_out) 219 MakeTuple(), MakeTuple()) {} \
253 #define IPC_SYNC_MESSAGE_CONTROL1_0(msg_class, type1_in) 220 \
254 #define IPC_SYNC_MESSAGE_CONTROL1_1(msg_class, type1_in, type1_out) 221 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
255 #define IPC_SYNC_MESSAGE_CONTROL1_2(msg_class, type1_in, type1_out, type2_out) 222
256 #define IPC_SYNC_MESSAGE_CONTROL1_3(msg_class, type1_in, type1_out, type2_out, t ype3_out) 223 #define IPC_SYNC_MESSAGE_CONTROL0_1(msg_class, type1_out) \
257 #define IPC_SYNC_MESSAGE_CONTROL2_0(msg_class, type1_in, type2_in) 224 msg_class::msg_class(type1_out* arg1) \
258 #define IPC_SYNC_MESSAGE_CONTROL2_1(msg_class, type1_in, type2_in, type1_out) 225 : IPC::MessageWithReply<Tuple0, Tuple1<type1_out&> >( \
259 #define IPC_SYNC_MESSAGE_CONTROL2_2(msg_class, type1_in, type2_in, type1_out, ty pe2_out) 226 MSG_ROUTING_CONTROL, ID, \
260 #define IPC_SYNC_MESSAGE_CONTROL2_3(msg_class, type1_in, type2_in, type1_out, ty pe2_out, type3_out) 227 MakeTuple(), MakeRefTuple(*arg1)) {} \
261 #define IPC_SYNC_MESSAGE_CONTROL3_1(msg_class, type1_in, type2_in, type3_in, typ e1_out) 228 \
262 #define IPC_SYNC_MESSAGE_CONTROL3_2(msg_class, type1_in, type2_in, type3_in, typ e1_out, type2_out) 229 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
263 #define IPC_SYNC_MESSAGE_CONTROL3_3(msg_class, type1_in, type2_in, type3_in, typ e1_out, type2_out, type3_out) 230
264 #define IPC_SYNC_MESSAGE_CONTROL4_1(msg_class, type1_in, type2_in, type3_in, typ e4_in, type1_out) 231 #define IPC_SYNC_MESSAGE_CONTROL0_2(msg_class, type1_out, type2_out) \
265 #define IPC_SYNC_MESSAGE_CONTROL4_2(msg_class, type1_in, type2_in, type3_in, typ e4_in, type1_out, type2_out) 232 msg_class::msg_class(type1_out* arg1, type2_out* arg2) \
266 #define IPC_SYNC_MESSAGE_ROUTED0_0(msg_class) 233 : IPC::MessageWithReply<Tuple0, Tuple2<type1_out&, type2_out&> >( \
267 #define IPC_SYNC_MESSAGE_ROUTED0_1(msg_class, type1_out) 234 MSG_ROUTING_CONTROL, ID, \
268 #define IPC_SYNC_MESSAGE_ROUTED0_2(msg_class, type1_out, type2_out) 235 MakeTuple(), MakeRefTuple(*arg1, *arg2)) {} \
269 #define IPC_SYNC_MESSAGE_ROUTED0_3(msg_class, type1_out, type2_out, type3_out) 236 \
270 #define IPC_SYNC_MESSAGE_ROUTED1_0(msg_class, type1_in) 237 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
271 #define IPC_SYNC_MESSAGE_ROUTED1_1(msg_class, type1_in, type1_out) 238
272 #define IPC_SYNC_MESSAGE_ROUTED1_2(msg_class, type1_in, type1_out, type2_out) 239 #define IPC_SYNC_MESSAGE_CONTROL0_3(msg_class, type1_out, type2_out, \
273 #define IPC_SYNC_MESSAGE_ROUTED1_3(msg_class, type1_in, type1_out, type2_out, ty pe3_out) 240 type3_out) \
274 #define IPC_SYNC_MESSAGE_ROUTED1_4(msg_class, type1_in, type1_out, type2_out, ty pe3_out, type4_out) 241 msg_class::msg_class(type1_out* arg1, type2_out* arg2, type3_out* arg3) \
275 #define IPC_SYNC_MESSAGE_ROUTED2_0(msg_class, type1_in, type2_in) 242 : IPC::MessageWithReply<Tuple0, Tuple3<type1_out&, type2_out&, \
276 #define IPC_SYNC_MESSAGE_ROUTED2_1(msg_class, type1_in, type2_in, type1_out) 243 type3_out&> >( \
277 #define IPC_SYNC_MESSAGE_ROUTED2_2(msg_class, type1_in, type2_in, type1_out, typ e2_out) 244 MSG_ROUTING_CONTROL, ID, \
278 #define IPC_SYNC_MESSAGE_ROUTED2_3(msg_class, type1_in, type2_in, type1_out, typ e2_out, type3_out) 245 MakeTuple(), MakeRefTuple(*arg1, *arg2, *arg3)) {} \
279 #define IPC_SYNC_MESSAGE_ROUTED3_0(msg_class, type1_in, type2_in, type3_in) 246 \
280 #define IPC_SYNC_MESSAGE_ROUTED3_1(msg_class, type1_in, type2_in, type3_in, type 1_out) 247 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
281 #define IPC_SYNC_MESSAGE_ROUTED3_2(msg_class, type1_in, type2_in, type3_in, type 1_out, type2_out) 248
282 #define IPC_SYNC_MESSAGE_ROUTED3_3(msg_class, type1_in, type2_in, type3_in, type 1_out, type2_out, type3_out) 249
283 #define IPC_SYNC_MESSAGE_ROUTED4_0(msg_class, type1_in, type2_in, type3_in, type 4_in) 250 #define IPC_SYNC_MESSAGE_CONTROL1_0(msg_class, type1_in) \
284 #define IPC_SYNC_MESSAGE_ROUTED4_1(msg_class, type1_in, type2_in, type3_in, type 4_in, type1_out) 251 msg_class::msg_class(const type1_in& arg1) \
285 #define IPC_SYNC_MESSAGE_ROUTED4_2(msg_class, type1_in, type2_in, type3_in, type 4_in, type1_out, type2_out) 252 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple0 >( \
286 #define IPC_SYNC_MESSAGE_ROUTED4_3(msg_class, type1_in, type2_in, type3_in, type 4_in, type1_out, type2_out, type3_out) 253 MSG_ROUTING_CONTROL, ID, \
287 #define IPC_SYNC_MESSAGE_ROUTED5_0(msg_class, type1_in, type2_in, type3_in, type 4_in, type5_in) 254 MakeRefTuple(arg1), MakeTuple()) {} \
288 #define IPC_SYNC_MESSAGE_ROUTED5_1(msg_class, type1_in, type2_in, type3_in, type 4_in, type5_in, type1_out) 255 \
289 #define IPC_SYNC_MESSAGE_ROUTED5_2(msg_class, type1_in, type2_in, type3_in, type 4_in, type5_in, type1_out, type2_out) 256 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
290 #define IPC_SYNC_MESSAGE_ROUTED5_3(msg_class, type1_in, type2_in, type3_in, type 4_in, type5_in, type1_out, type2_out, type3_out) 257
258 #define IPC_SYNC_MESSAGE_CONTROL1_1(msg_class, type1_in, type1_out) \
259 msg_class::msg_class(const type1_in& arg1, type1_out* arg2) \
260 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple1<type1_out&> >( \
261 MSG_ROUTING_CONTROL, ID, \
262 MakeRefTuple(arg1), MakeRefTuple(*arg2)) {} \
263 \
264 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
265
266 #define IPC_SYNC_MESSAGE_CONTROL1_2(msg_class, type1_in, type1_out, type2_out) \
267 msg_class::msg_class(const type1_in& arg1, type1_out* arg2, type2_out* arg3) \
268 : IPC::MessageWithReply<Tuple1<type1_in>, \
269 Tuple2<type1_out&, type2_out&> >( \
270 MSG_ROUTING_CONTROL, ID, \
271 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3)) {} \
272 \
273 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
274
275 #define IPC_SYNC_MESSAGE_CONTROL1_3(msg_class, type1_in, type1_out, \
276 type2_out, type3_out) \
277 msg_class::msg_class(const type1_in& arg1, type1_out* arg2, \
278 type2_out* arg3, type3_out* arg4) \
279 : IPC::MessageWithReply<Tuple1<type1_in>, \
280 Tuple3<type1_out&, type2_out&, type3_out&> >( \
281 MSG_ROUTING_CONTROL, ID, \
282 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3, *arg4)) {} \
283 \
284 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
285
286 #define IPC_SYNC_MESSAGE_CONTROL2_0(msg_class, type1_in, type2_in) \
287 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2) \
288 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, Tuple0 >( \
289 MSG_ROUTING_CONTROL, ID, \
290 MakeRefTuple(arg1, arg2), MakeTuple()) {} \
291 \
292 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
293
294 #define IPC_SYNC_MESSAGE_CONTROL2_1(msg_class, type1_in, type2_in, type1_out) \
295 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
296 type1_out* arg3) \
297 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
298 Tuple1<type1_out&> >( \
299 MSG_ROUTING_CONTROL, ID, \
300 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3)) {} \
301 \
302 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
303
304
305 #define IPC_SYNC_MESSAGE_CONTROL2_2(msg_class, type1_in, type2_in, \
306 type1_out, type2_out) \
307 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
308 type1_out* arg3, type2_out* arg4) \
309 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
310 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \
311 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4)) {} \
312 \
313 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
314
315
316 #define IPC_SYNC_MESSAGE_CONTROL2_3(msg_class, type1_in, type2_in, \
317 type1_out, type2_out, type3_out) \
318 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
319 type1_out* arg3, type2_out* arg4, type3_out* arg5) \
320 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
321 Tuple3<type1_out&, type2_out&, type3_out&> >(MSG_ROUTING_CONTROL, \
322 ID, \
323 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4, *arg5)) {} \
324 \
325 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
326
327
328 #define IPC_SYNC_MESSAGE_CONTROL3_1(msg_class, type1_in, type2_in, \
329 type3_in, type1_out) \
330 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
331 const type3_in& arg3, type1_out* arg4) \
332 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
333 Tuple1<type1_out&> >(MSG_ROUTING_CONTROL, ID, \
334 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4)) {} \
335 \
336 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
337
338 #define IPC_SYNC_MESSAGE_CONTROL3_2(msg_class, type1_in, type2_in, \
339 type3_in, type1_out, type2_out) \
340 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
341 const type3_in& arg3, type1_out* arg4, type2_out* arg5) \
342 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
343 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \
344 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5)) {} \
345 \
346 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
347
348
349 #define IPC_SYNC_MESSAGE_CONTROL3_3(msg_class, type1_in, type2_in, \
350 type3_in, type1_out, type2_out, \
351 type3_out) \
352 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
353 const type3_in& arg3, type1_out* arg4, \
354 type2_out* arg5, type3_out* arg6) \
355 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
356 Tuple3<type1_out&, type2_out&, type3_out&> >(MSG_ROUTING_CONTROL, \
357 ID, \
358 MakeRefTuple(arg1, arg2, arg3), \
359 MakeRefTuple(*arg4, *arg5, *arg6)) {} \
360 \
361 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
362
363 #define IPC_SYNC_MESSAGE_CONTROL4_1(msg_class, type1_in, type2_in, \
364 type3_in, type4_in, type1_out) \
365 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
366 const type3_in& arg3, const type4_in& arg4, \
367 type1_out* arg6) \
368 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
369 Tuple1<type1_out&> >(MSG_ROUTING_CONTROL, ID, \
370 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg6)) {} \
371 \
372 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
373
374
375 #define IPC_SYNC_MESSAGE_CONTROL4_2(msg_class, type1_in, type2_in, \
376 type3_in, type4_in, type1_out, \
377 type2_out) \
378 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
379 const type3_in& arg3, const type4_in& arg4, \
380 type1_out* arg5, type2_out* arg6) \
381 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, \
382 type4_in>, \
383 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \
384 MakeRefTuple(arg1, arg2, arg3, arg4), \
385 MakeRefTuple(*arg5, *arg6)) {} \
386 \
387 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
388
389 #define IPC_SYNC_MESSAGE_ROUTED0_0(msg_class) \
390 msg_class::msg_class(int routing_id) \
391 : IPC::MessageWithReply<Tuple0, Tuple0>( \
392 routing_id, ID, \
393 MakeTuple(), MakeTuple()) {} \
394 \
395 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
396
397 #define IPC_SYNC_MESSAGE_ROUTED0_1(msg_class, type1_out) \
398 msg_class::msg_class(int routing_id, type1_out* arg1) \
399 : IPC::MessageWithReply<Tuple0, Tuple1<type1_out&> >( \
400 routing_id, ID, \
401 MakeTuple(), MakeRefTuple(*arg1)) {} \
402 \
403 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
404
405 #define IPC_SYNC_MESSAGE_ROUTED0_2(msg_class, type1_out, type2_out) \
406 msg_class::msg_class(int routing_id, type1_out* arg1, type2_out* arg2) \
407 : IPC::MessageWithReply<Tuple0, Tuple2<type1_out&, type2_out&> >( \
408 routing_id, ID, \
409 MakeTuple(), MakeRefTuple(*arg1, *arg2)) {} \
410 \
411 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
412
413 #define IPC_SYNC_MESSAGE_ROUTED0_3(msg_class, type1_out, type2_out, \
414 type3_out) \
415 msg_class::msg_class(int routing_id, type1_out* arg1, type2_out* arg2, \
416 type3_out* arg3) \
417 : IPC::MessageWithReply<Tuple0, \
418 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
419 MakeTuple(), MakeRefTuple(*arg1, *arg2, *arg3)) {} \
420 \
421 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
422
423 #define IPC_SYNC_MESSAGE_ROUTED1_0(msg_class, type1_in) \
424 msg_class::msg_class(int routing_id, const type1_in& arg1) \
425 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple0 >( \
426 routing_id, ID, \
427 MakeRefTuple(arg1), MakeTuple()) {} \
428 \
429 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
430
431 #define IPC_SYNC_MESSAGE_ROUTED1_1(msg_class, type1_in, type1_out) \
432 msg_class::msg_class(int routing_id, const type1_in& arg1, \
433 type1_out* arg2) \
434 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple1<type1_out&> >( \
435 routing_id, ID, \
436 MakeRefTuple(arg1), MakeRefTuple(*arg2)) {} \
437 \
438 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
439
440 #define IPC_SYNC_MESSAGE_ROUTED1_2(msg_class, type1_in, type1_out, \
441 type2_out) \
442 msg_class::msg_class(int routing_id, const type1_in& arg1, \
443 type1_out* arg2, type2_out* arg3) \
444 : IPC::MessageWithReply<Tuple1<type1_in>, \
445 Tuple2<type1_out&, type2_out&> >( \
446 routing_id, ID, \
447 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3)) {} \
448 \
449 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
450
451 #define IPC_SYNC_MESSAGE_ROUTED1_3(msg_class, type1_in, type1_out, \
452 type2_out, type3_out) \
453 msg_class::msg_class(int routing_id, const type1_in& arg1, \
454 type1_out* arg2, type2_out* arg3, type3_out* arg4) \
455 : IPC::MessageWithReply<Tuple1<type1_in>, \
456 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
457 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3, *arg4)) {} \
458 \
459 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
460
461 #define IPC_SYNC_MESSAGE_ROUTED1_4(msg_class, type1_in, type1_out, \
462 type2_out, type3_out, type4_out) \
463 msg_class::msg_class(int routing_id, const type1_in& arg1, \
464 type1_out* arg2, type2_out* arg3, \
465 type3_out* arg4, type4_out* arg5) \
466 : IPC::MessageWithReply<Tuple1<type1_in>, \
467 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \
468 routing_id, ID, MakeRefTuple(arg1), \
469 MakeRefTuple(*arg2, *arg3, *arg4, *arg5)) {} \
470 \
471 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
472
473 #define IPC_SYNC_MESSAGE_ROUTED2_0(msg_class, type1_in, type2_in) \
474 msg_class::msg_class(int routing_id, const type1_in& arg1, \
475 const type2_in& arg2) \
476 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, Tuple0 >( \
477 routing_id, ID, MakeRefTuple(arg1, arg2), MakeTuple()) {} \
478 \
479 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
480
481 #define IPC_SYNC_MESSAGE_ROUTED2_1(msg_class, type1_in, type2_in, \
482 type1_out) \
483 msg_class::msg_class(int routing_id, const type1_in& arg1, \
484 const type2_in& arg2, type1_out* arg3) \
485 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
486 Tuple1<type1_out&> >(routing_id, ID, \
487 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3)) {} \
488 \
489 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
490
491 #define IPC_SYNC_MESSAGE_ROUTED2_2(msg_class, type1_in, type2_in, \
492 type1_out, type2_out) \
493 msg_class::msg_class(int routing_id, const type1_in& arg1, \
494 const type2_in& arg2, type1_out* arg3, \
495 type2_out* arg4) \
496 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
497 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \
498 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4)) {} \
499 \
500 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
501
502 #define IPC_SYNC_MESSAGE_ROUTED2_3(msg_class, type1_in, type2_in, \
503 type1_out, type2_out, type3_out) \
504 msg_class::msg_class(int routing_id, const type1_in& arg1, \
505 const type2_in& arg2, type1_out* arg3, \
506 type2_out* arg4, type3_out* arg5) \
507 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
508 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
509 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4, *arg5)) {} \
510 \
511 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
512
513 #define IPC_SYNC_MESSAGE_ROUTED3_0(msg_class, type1_in, type2_in, \
514 type3_in) \
515 msg_class::msg_class(int routing_id, const type1_in& arg1, \
516 const type2_in& arg2, const type3_in& arg3) \
517 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, Tuple0>( \
518 routing_id, ID, \
519 MakeRefTuple(arg1, arg2, arg3), MakeTuple()) {} \
520 \
521 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
522
523 #define IPC_SYNC_MESSAGE_ROUTED3_1(msg_class, type1_in, type2_in, \
524 type3_in, type1_out) \
525 msg_class::msg_class(int routing_id, const type1_in& arg1, \
526 const type2_in& arg2, const type3_in& arg3, \
527 type1_out* arg4) \
528 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
529 Tuple1<type1_out&> >(routing_id, ID, \
530 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4)) {} \
531 \
532 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
533
534 #define IPC_SYNC_MESSAGE_ROUTED3_2(msg_class, type1_in, type2_in, \
535 type3_in, type1_out, type2_out) \
536 msg_class::msg_class(int routing_id, const type1_in& arg1, \
537 const type2_in& arg2, const type3_in& arg3, \
538 type1_out* arg4, type2_out* arg5) \
539 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
540 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \
541 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5)) {} \
542 \
543 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
544
545 #define IPC_SYNC_MESSAGE_ROUTED3_3(msg_class, type1_in, type2_in, \
546 type3_in, type1_out, type2_out, \
547 type3_out) \
548 msg_class::msg_class(int routing_id, const type1_in& arg1, \
549 const type2_in& arg2, const type3_in& arg3, \
550 type1_out* arg4, type2_out* arg5, type3_out* arg6) \
551 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
552 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
553 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5, \
554 *arg6)) {} \
555 \
556 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
557
558 #define IPC_SYNC_MESSAGE_ROUTED4_0(msg_class, type1_in, type2_in, \
559 type3_in, type4_in) \
560 msg_class::msg_class(int routing_id, const type1_in& arg1, \
561 const type2_in& arg2, const type3_in& arg3, \
562 const type4_in& arg4) \
563 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, \
564 type4_in>, Tuple0 >(routing_id, ID, \
565 MakeRefTuple(arg1, arg2, arg3, arg4), MakeTuple()) {} \
566 \
567 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
568
569 #define IPC_SYNC_MESSAGE_ROUTED4_1(msg_class, type1_in, type2_in, \
570 type3_in, type4_in, type1_out) \
571 msg_class::msg_class(int routing_id, const type1_in& arg1, \
572 const type2_in& arg2, const type3_in& arg3, \
573 const type4_in& arg4, type1_out* arg6) \
574 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
575 Tuple1<type1_out&> >(routing_id, ID, \
576 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg6)) {} \
577 \
578 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
579
580
581 #define IPC_SYNC_MESSAGE_ROUTED4_2(msg_class, type1_in, type2_in, \
582 type3_in, type4_in, type1_out, \
583 type2_out) \
584 msg_class::msg_class(int routing_id, const type1_in& arg1, \
585 const type2_in& arg2, const type3_in& arg3, \
586 const type4_in& arg4, type1_out* arg5, type2_out* arg6) \
587 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
588 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \
589 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg5, *arg6)) {} \
590 \
591 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
592
593
594 #define IPC_SYNC_MESSAGE_ROUTED4_3(msg_class, type1_in, type2_in, \
595 type3_in, type4_in, type1_out, \
596 type2_out, type3_out) \
597 msg_class::msg_class(int routing_id, const type1_in& arg1, \
598 const type2_in& arg2, const type3_in& arg3, \
599 const type4_in& arg4, type1_out* arg5, \
600 type2_out* arg6, type3_out* arg7) \
601 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
602 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
603 MakeRefTuple(arg1, arg2, arg3, arg4), \
604 MakeRefTuple(*arg5, *arg6, *arg7)) {} \
605 \
606 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
607
608 #define IPC_SYNC_MESSAGE_ROUTED5_0(msg_class, type1_in, type2_in, \
609 type3_in, type4_in, type5_in) \
610 msg_class::msg_class(int routing_id, const type1_in& arg1, \
611 const type2_in& arg2, const type3_in& arg3, \
612 const type4_in& arg4, const type5_in& arg5) \
613 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
614 type4_in, type5_in>, Tuple0 >(routing_id, ID, \
615 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), MakeTuple()) {} \
616 \
617 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
618
619 #define IPC_SYNC_MESSAGE_ROUTED5_1(msg_class, type1_in, type2_in, \
620 type3_in, type4_in, type5_in, type1_out) \
621 msg_class::msg_class(int routing_id, const type1_in& arg1, \
622 const type2_in& arg2, const type3_in& arg3, \
623 const type4_in& arg4, const type5_in& arg5, \
624 type1_out* arg6) \
625 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
626 type4_in, type5_in>, Tuple1<type1_out&> >(routing_id, ID, \
627 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \
628 MakeRefTuple(*arg6)) {} \
629 \
630 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
631
632 #define IPC_SYNC_MESSAGE_ROUTED5_2(msg_class, type1_in, type2_in, \
633 type3_in, type4_in, type5_in, \
634 type1_out, type2_out) \
635 msg_class::msg_class(int routing_id, const type1_in& arg1, \
636 const type2_in& arg2, const type3_in& arg3, \
637 const type4_in& arg4, const type4_in& arg5, \
638 type1_out* arg6, type2_out* arg7) \
639 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
640 type4_in, type5_in>, Tuple2<type1_out&, type2_out&> >( \
641 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \
642 MakeRefTuple(*arg6, *arg7)) {} \
643 \
644 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
645
646 #define IPC_SYNC_MESSAGE_ROUTED5_3(msg_class, type1_in, type2_in, \
647 type3_in, type4_in, type5_in, \
648 type1_out, type2_out, type3_out) \
649 msg_class::msg_class(int routing_id, const type1_in& arg1, \
650 const type2_in& arg2, const type3_in& arg3, \
651 const type4_in& arg4, const type4_in& arg5, \
652 type1_out* arg6, type2_out* arg7, \
653 type3_out* arg8) \
654 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
655 type4_in, type5_in>, \
656 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
657 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \
658 MakeRefTuple(*arg6, *arg7, *arg8)) {} \
659 \
660 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
291 661
292 // Trigger the header guard define in ipc_message_macros.h so we don't get 662 // Trigger the header guard define in ipc_message_macros.h so we don't get
293 // duplicate including when we include MESSAGES_INTERNAL_FILE again at the end 663 // duplicate including when we include MESSAGES_INTERNAL_FILE again at the end
294 // of this file. 664 // of this file.
295 #define IPC_MESSAGE_MACROS_INCLUDE_BLOCK 665 #define IPC_MESSAGE_MACROS_INCLUDE_BLOCK
296 666
297 // Redefine MESSAGES_INTERNAL_FILE just for the header check in 667 // Redefine MESSAGES_INTERNAL_FILE just for the header check in
298 // ipc_messages_macros.h that happens before it breaks on the header guard. 668 // ipc_messages_macros.h that happens before it breaks on the header guard.
299 #define MESSAGES_INTERNAL_FILE MESSAGES_INTERNAL_IMPL_FILE 669 #define MESSAGES_INTERNAL_FILE MESSAGES_INTERNAL_IMPL_FILE
300 670
301 // Include our INTERNAL file first to get the normal expansion. 671 // Include our INTERNAL file first to get the normal expansion.
302 #include MESSAGES_INTERNAL_IMPL_FILE 672 #include MESSAGES_INTERNAL_IMPL_FILE
303 673
304 #endif // IPC_IPC_MESSAGE_IMPL_MACROS_H_ 674 #endif // IPC_IPC_MESSAGE_IMPL_MACROS_H_
OLDNEW
« no previous file with comments | « chrome/renderer/render_view.cc ('k') | ipc/ipc_message_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698