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

Side by Side Diff: ipc/ipc_message_impl_macros.h

Issue 5526008: Simplify the magic required to create IPC message headers a bit. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years 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 | Annotate | Revision Log
« no previous file with comments | « ipc/ipc_message.h ('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 right before including XXX_messages_internal.h.
10 10
11 #ifndef IPC_IPC_MESSAGE_IMPL_MACROS_H_ 11 #ifndef IPC_IPC_MESSAGE_IMPL_MACROS_H_
12 #define IPC_IPC_MESSAGE_IMPL_MACROS_H_ 12 #define IPC_IPC_MESSAGE_IMPL_MACROS_H_
13 13
14 #include "ipc/ipc_message_utils.h" 14 #include "ipc/ipc_message_utils.h"
15 #include "ipc/ipc_message_utils_impl.h" 15 #include "ipc/ipc_message_utils_impl.h"
16 16
17 #ifndef MESSAGES_INTERNAL_IMPL_FILE
18 #error This file should only be included by X_messages.cc, which needs to define MESSAGES_INTERNAL_IMPL_FILE first.
19 #endif
20
21 // Trick xcode into seeing the possible real dependencies since they
22 // don't understand #include MESSAGES_INTERNAL_FILE. See http://crbug.com/7828
23 #if 0
24 #include "ipc/ipc_sync_message_unittest.h"
25 #include "chrome/common/automation_messages_internal.h"
26 #include "chrome/common/devtools_messages_internal.h"
27 #include "chrome/common/gpu_messages_internal.h"
28 #include "chrome/common/nacl_messages_internal.h"
29 #include "chrome/common/plugin_messages_internal.h"
30 #include "chrome/common/render_messages_internal.h"
31 #include "chrome/common/service_messages_internal.h"
32 #include "chrome/common/utility_messages_internal.h"
33 #include "chrome/common/worker_messages_internal.h"
34 #include "ppapi/proxy/ppapi_messages_internal.h"
35 #endif
36
37 // These are probalby still defined because of ipc_message_macros.h should be
38 // included before us for the class/method declarations.
39 #undef IPC_BEGIN_MESSAGES
40 #undef IPC_END_MESSAGES
41 #undef IPC_MESSAGE_CONTROL0
42 #undef IPC_MESSAGE_CONTROL1
43 #undef IPC_MESSAGE_CONTROL2
44 #undef IPC_MESSAGE_CONTROL3
45 #undef IPC_MESSAGE_CONTROL4
46 #undef IPC_MESSAGE_CONTROL5
47 #undef IPC_MESSAGE_ROUTED0
48 #undef IPC_MESSAGE_ROUTED1
49 #undef IPC_MESSAGE_ROUTED2
50 #undef IPC_MESSAGE_ROUTED3
51 #undef IPC_MESSAGE_ROUTED4
52 #undef IPC_MESSAGE_ROUTED5
53 #undef IPC_SYNC_MESSAGE_CONTROL0_0
54 #undef IPC_SYNC_MESSAGE_CONTROL0_1
55 #undef IPC_SYNC_MESSAGE_CONTROL0_2
56 #undef IPC_SYNC_MESSAGE_CONTROL0_3
57 #undef IPC_SYNC_MESSAGE_CONTROL1_0
58 #undef IPC_SYNC_MESSAGE_CONTROL1_1
59 #undef IPC_SYNC_MESSAGE_CONTROL1_2
60 #undef IPC_SYNC_MESSAGE_CONTROL1_3
61 #undef IPC_SYNC_MESSAGE_CONTROL2_0
62 #undef IPC_SYNC_MESSAGE_CONTROL2_1
63 #undef IPC_SYNC_MESSAGE_CONTROL2_2
64 #undef IPC_SYNC_MESSAGE_CONTROL2_3
65 #undef IPC_SYNC_MESSAGE_CONTROL3_1
66 #undef IPC_SYNC_MESSAGE_CONTROL3_2
67 #undef IPC_SYNC_MESSAGE_CONTROL3_3
68 #undef IPC_SYNC_MESSAGE_CONTROL3_4
69 #undef IPC_SYNC_MESSAGE_CONTROL4_1
70 #undef IPC_SYNC_MESSAGE_CONTROL4_2
71 #undef IPC_SYNC_MESSAGE_ROUTED0_0
72 #undef IPC_SYNC_MESSAGE_ROUTED0_1
73 #undef IPC_SYNC_MESSAGE_ROUTED0_2
74 #undef IPC_SYNC_MESSAGE_ROUTED0_3
75 #undef IPC_SYNC_MESSAGE_ROUTED1_0
76 #undef IPC_SYNC_MESSAGE_ROUTED1_1
77 #undef IPC_SYNC_MESSAGE_ROUTED1_2
78 #undef IPC_SYNC_MESSAGE_ROUTED1_3
79 #undef IPC_SYNC_MESSAGE_ROUTED1_4
80 #undef IPC_SYNC_MESSAGE_ROUTED2_0
81 #undef IPC_SYNC_MESSAGE_ROUTED2_1
82 #undef IPC_SYNC_MESSAGE_ROUTED2_2
83 #undef IPC_SYNC_MESSAGE_ROUTED2_3
84 #undef IPC_SYNC_MESSAGE_ROUTED3_0
85 #undef IPC_SYNC_MESSAGE_ROUTED3_1
86 #undef IPC_SYNC_MESSAGE_ROUTED3_2
87 #undef IPC_SYNC_MESSAGE_ROUTED3_3
88 #undef IPC_SYNC_MESSAGE_ROUTED3_4
89 #undef IPC_SYNC_MESSAGE_ROUTED4_0
90 #undef IPC_SYNC_MESSAGE_ROUTED4_1
91 #undef IPC_SYNC_MESSAGE_ROUTED4_2
92 #undef IPC_SYNC_MESSAGE_ROUTED4_3
93 #undef IPC_SYNC_MESSAGE_ROUTED5_0
94 #undef IPC_SYNC_MESSAGE_ROUTED5_1
95 #undef IPC_SYNC_MESSAGE_ROUTED5_2
96 #undef IPC_SYNC_MESSAGE_ROUTED5_3
97
98 // These don't do anything during this pass.
99 #define IPC_BEGIN_MESSAGES(label)
100 #define IPC_END_MESSAGES(label)
101
102 // Every class must include a destructor and a log method that is keyed to the 17 // Every class must include a destructor and a log method that is keyed to the
103 // specific types. 18 // specific types.
104 #define IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) \ 19 #define IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) \
105 msg_class::~msg_class() {} \ 20 msg_class::~msg_class() {} \
106 \ 21 \
107 void msg_class::Log(const Message* msg, std::string* l) { \ 22 void msg_class::Log(std::string* name, const Message* msg, std::string* l) { \
23 if (name) \
24 *name = #msg_class; \
25 if (!msg || !l) \
26 return; \
108 Param p; \ 27 Param p; \
109 if (Read(msg, &p)) \ 28 if (Read(msg, &p)) \
110 IPC::LogParam(p, l); \ 29 IPC::LogParam(p, l); \
111 } 30 }
112 31
113 // This derives from IPC::Message and thus doesn't need us to keep the 32 // This derives from IPC::Message and thus doesn't need us to keep the
114 // implementations in this impl file. 33 // implementations in this impl file.
115 #define IPC_MESSAGE_CONTROL0(msg_class) 34 #define IPC_MESSAGE_CONTROL0_EXTRA(msg_class)
116 35
117 #define IPC_MESSAGE_CONTROL1(msg_class, type1) \ 36 #define IPC_MESSAGE_CONTROL1_EXTRA(msg_class, type1) \
118 msg_class::msg_class(const type1& arg1) \ 37 msg_class::msg_class(const type1& arg1) \
119 : IPC::MessageWithTuple< Tuple1<type1> >( \ 38 : IPC::MessageWithTuple< Tuple1<type1> >( \
120 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1)) {} \ 39 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1)) {} \
121 \ 40 \
122 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 41 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
123 42
124 #define IPC_MESSAGE_CONTROL2(msg_class, type1, type2) \ 43 #define IPC_MESSAGE_CONTROL2_EXTRA(msg_class, type1, type2) \
125 msg_class::msg_class(const type1& arg1, const type2& arg2) \ 44 msg_class::msg_class(const type1& arg1, const type2& arg2) \
126 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \ 45 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \
127 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2)) {} \ 46 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2)) {} \
128 \ 47 \
129 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 48 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
130 49
131 #define IPC_MESSAGE_CONTROL3(msg_class, type1, type2, type3) \ 50 #define IPC_MESSAGE_CONTROL3_EXTRA(msg_class, type1, type2, type3) \
132 msg_class::msg_class(const type1& arg1, const type2& arg2, \ 51 msg_class::msg_class(const type1& arg1, const type2& arg2, \
133 const type3& arg3) \ 52 const type3& arg3) \
134 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \ 53 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \
135 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3)) {} \ 54 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3)) {} \
136 \ 55 \
137 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 56 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
138 57
139 #define IPC_MESSAGE_CONTROL4(msg_class, type1, type2, type3, type4) \ 58 #define IPC_MESSAGE_CONTROL4_EXTRA(msg_class, type1, type2, type3, type4) \
140 msg_class::msg_class(const type1& arg1, const type2& arg2, \ 59 msg_class::msg_class(const type1& arg1, const type2& arg2, \
141 const type3& arg3, const type4& arg4) \ 60 const type3& arg3, const type4& arg4) \
142 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \ 61 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \
143 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \ 62 MSG_ROUTING_CONTROL, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \
144 \ 63 \
145 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 64 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
146 65
147 #define IPC_MESSAGE_CONTROL5(msg_class, type1, type2, type3, type4, type5) \ 66 #define IPC_MESSAGE_CONTROL5_EXTRA(msg_class, type1, type2, type3, type4, type5) \
148 msg_class::msg_class(const type1& arg1, const type2& arg2, \ 67 msg_class::msg_class(const type1& arg1, const type2& arg2, \
149 const type3& arg3, const type4& arg4, \ 68 const type3& arg3, const type4& arg4, \
150 const type5& arg5) \ 69 const type5& arg5) \
151 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \ 70 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \
152 MSG_ROUTING_CONTROL, ID, \ 71 MSG_ROUTING_CONTROL, ID, \
153 MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \ 72 MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \
154 \ 73 \
155 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 74 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
156 75
157 // This derives from IPC::Message and thus doesn't need us to keep the 76 // This derives from IPC::Message and thus doesn't need us to keep the
158 // implementations in this impl file. 77 // implementations in this impl file.
159 #define IPC_MESSAGE_ROUTED0(msg_class) 78 #define IPC_MESSAGE_ROUTED0_EXTRA(msg_class)
160 79
161 #define IPC_MESSAGE_ROUTED1(msg_class, type1) \ 80 #define IPC_MESSAGE_ROUTED1_EXTRA(msg_class, type1) \
162 msg_class::msg_class(int32 routing_id, const type1& arg1) \ 81 msg_class::msg_class(int32 routing_id, const type1& arg1) \
163 : IPC::MessageWithTuple< Tuple1<type1> >( \ 82 : IPC::MessageWithTuple< Tuple1<type1> >( \
164 routing_id, ID, MakeRefTuple(arg1)) {} \ 83 routing_id, ID, MakeRefTuple(arg1)) {} \
165 \ 84 \
166 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 85 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
167 86
168 #define IPC_MESSAGE_ROUTED2(msg_class, type1, type2) \ 87 #define IPC_MESSAGE_ROUTED2_EXTRA(msg_class, type1, type2) \
169 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2) \ 88 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2) \
170 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \ 89 : IPC::MessageWithTuple< Tuple2<type1, type2> >( \
171 routing_id, ID, MakeRefTuple(arg1, arg2)) {} \ 90 routing_id, ID, MakeRefTuple(arg1, arg2)) {} \
172 \ 91 \
173 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 92 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
174 93
175 94
176 #define IPC_MESSAGE_ROUTED3(msg_class, type1, type2, type3) \ 95 #define IPC_MESSAGE_ROUTED3_EXTRA(msg_class, type1, type2, type3) \
177 msg_class::msg_class(int32 routing_id, const type1& arg1, \ 96 msg_class::msg_class(int32 routing_id, const type1& arg1, \
178 const type2& arg2, const type3& arg3) \ 97 const type2& arg2, const type3& arg3) \
179 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \ 98 : IPC::MessageWithTuple< Tuple3<type1, type2, type3> >( \
180 routing_id, ID, MakeRefTuple(arg1, arg2, arg3)) {} \ 99 routing_id, ID, MakeRefTuple(arg1, arg2, arg3)) {} \
181 \ 100 \
182 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 101 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
183 102
184 #define IPC_MESSAGE_ROUTED4(msg_class, type1, type2, type3, type4) \ 103 #define IPC_MESSAGE_ROUTED4_EXTRA(msg_class, type1, type2, type3, type4) \
185 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2, \ 104 msg_class::msg_class(int32 routing_id, const type1& arg1, const type2& arg2, \
186 const type3& arg3, const type4& arg4) \ 105 const type3& arg3, const type4& arg4) \
187 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \ 106 : IPC::MessageWithTuple< Tuple4<type1, type2, type3, type4> >( \
188 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \ 107 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4)) {} \
189 \ 108 \
190 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 109 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
191 110
192 #define IPC_MESSAGE_ROUTED5(msg_class, type1, type2, type3, type4, type5) \ 111 #define IPC_MESSAGE_ROUTED5_EXTRA(msg_class, type1, type2, type3, type4, type5) \
193 msg_class::msg_class(int32 routing_id, const type1& arg1, \ 112 msg_class::msg_class(int32 routing_id, const type1& arg1, \
194 const type2& arg2, const type3& arg3, \ 113 const type2& arg2, const type3& arg3, \
195 const type4& arg4, const type5& arg5) \ 114 const type4& arg4, const type5& arg5) \
196 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \ 115 : IPC::MessageWithTuple< Tuple5<type1, type2, type3, type4, type5> >( \
197 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \ 116 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5)) {} \
198 \ 117 \
199 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class) 118 IPC_ASYNC_MESSAGE_DTOR_AND_LOG(msg_class)
200 119
201 // ----------------------------------------------------------------------------- 120 // -----------------------------------------------------------------------------
202 121
203 // Every class must include a destructor and a log method that is keyed to the 122 // Every class must include a destructor and a log method that is keyed to the
204 // specific types. 123 // specific types.
205 #define IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) \ 124 #define IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) \
206 msg_class::~msg_class() {} \ 125 msg_class::~msg_class() {} \
207 \ 126 \
208 void msg_class::Log(const Message* msg, std::string* l) { \ 127 void msg_class::Log(std::string* name, const Message* msg, std::string* l) { \
128 if (name) \
129 *name = #msg_class; \
130 if (!msg || !l) \
131 return; \
209 if (msg->is_sync()) { \ 132 if (msg->is_sync()) { \
210 TupleTypes<SendParam>::ValueTuple p; \ 133 TupleTypes<SendParam>::ValueTuple p; \
211 if (ReadSendParam(msg, &p)) \ 134 if (ReadSendParam(msg, &p)) \
212 IPC::LogParam(p, l); \ 135 IPC::LogParam(p, l); \
213 \
214 AddOutputParamsToLog(msg, l); \ 136 AddOutputParamsToLog(msg, l); \
215 } else { \ 137 } else { \
216 TupleTypes<ReplyParam>::ValueTuple p; \ 138 TupleTypes<ReplyParam>::ValueTuple p; \
217 if (ReadReplyParam(msg, &p)) \ 139 if (ReadReplyParam(msg, &p)) \
218 IPC::LogParam(p, l); \ 140 IPC::LogParam(p, l); \
219 } \ 141 } \
220 } 142 }
221 143
222 #define IPC_SYNC_MESSAGE_CONTROL0_0(msg_class) \ 144 #define IPC_SYNC_MESSAGE_CONTROL0_0_EXTRA(msg_class) \
223 msg_class::msg_class() \ 145 msg_class::msg_class() \
224 : IPC::MessageWithReply<Tuple0, Tuple0 >( \ 146 : IPC::MessageWithReply<Tuple0, Tuple0 >( \
225 MSG_ROUTING_CONTROL, ID, \ 147 MSG_ROUTING_CONTROL, ID, \
226 MakeTuple(), MakeTuple()) {} \ 148 MakeTuple(), MakeTuple()) {} \
227 \ 149 \
228 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 150 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
229 151
230 #define IPC_SYNC_MESSAGE_CONTROL0_1(msg_class, type1_out) \ 152 #define IPC_SYNC_MESSAGE_CONTROL0_1_EXTRA(msg_class, type1_out) \
231 msg_class::msg_class(type1_out* arg1) \ 153 msg_class::msg_class(type1_out* arg1) \
232 : IPC::MessageWithReply<Tuple0, Tuple1<type1_out&> >( \ 154 : IPC::MessageWithReply<Tuple0, Tuple1<type1_out&> >( \
233 MSG_ROUTING_CONTROL, ID, \ 155 MSG_ROUTING_CONTROL, ID, \
234 MakeTuple(), MakeRefTuple(*arg1)) {} \ 156 MakeTuple(), MakeRefTuple(*arg1)) {} \
235 \ 157 \
236 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 158 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
237 159
238 #define IPC_SYNC_MESSAGE_CONTROL0_2(msg_class, type1_out, type2_out) \ 160 #define IPC_SYNC_MESSAGE_CONTROL0_2_EXTRA(msg_class, type1_out, type2_out) \
239 msg_class::msg_class(type1_out* arg1, type2_out* arg2) \ 161 msg_class::msg_class(type1_out* arg1, type2_out* arg2) \
240 : IPC::MessageWithReply<Tuple0, Tuple2<type1_out&, type2_out&> >( \ 162 : IPC::MessageWithReply<Tuple0, Tuple2<type1_out&, type2_out&> >( \
241 MSG_ROUTING_CONTROL, ID, \ 163 MSG_ROUTING_CONTROL, ID, \
242 MakeTuple(), MakeRefTuple(*arg1, *arg2)) {} \ 164 MakeTuple(), MakeRefTuple(*arg1, *arg2)) {} \
243 \ 165 \
244 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 166 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
245 167
246 #define IPC_SYNC_MESSAGE_CONTROL0_3(msg_class, type1_out, type2_out, \ 168 #define IPC_SYNC_MESSAGE_CONTROL0_3_EXTRA(msg_class, type1_out, type2_out, \
247 type3_out) \ 169 type3_out) \
248 msg_class::msg_class(type1_out* arg1, type2_out* arg2, type3_out* arg3) \ 170 msg_class::msg_class(type1_out* arg1, type2_out* arg2, type3_out* arg3) \
249 : IPC::MessageWithReply<Tuple0, Tuple3<type1_out&, type2_out&, \ 171 : IPC::MessageWithReply<Tuple0, Tuple3<type1_out&, type2_out&, \
250 type3_out&> >( \ 172 type3_out&> >( \
251 MSG_ROUTING_CONTROL, ID, \ 173 MSG_ROUTING_CONTROL, ID, \
252 MakeTuple(), MakeRefTuple(*arg1, *arg2, *arg3)) {} \ 174 MakeTuple(), MakeRefTuple(*arg1, *arg2, *arg3)) {} \
253 \ 175 \
254 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 176 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
255 177
256 178
257 #define IPC_SYNC_MESSAGE_CONTROL1_0(msg_class, type1_in) \ 179 #define IPC_SYNC_MESSAGE_CONTROL1_0_EXTRA(msg_class, type1_in) \
258 msg_class::msg_class(const type1_in& arg1) \ 180 msg_class::msg_class(const type1_in& arg1) \
259 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple0 >( \ 181 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple0 >( \
260 MSG_ROUTING_CONTROL, ID, \ 182 MSG_ROUTING_CONTROL, ID, \
261 MakeRefTuple(arg1), MakeTuple()) {} \ 183 MakeRefTuple(arg1), MakeTuple()) {} \
262 \ 184 \
263 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 185 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
264 186
265 #define IPC_SYNC_MESSAGE_CONTROL1_1(msg_class, type1_in, type1_out) \ 187 #define IPC_SYNC_MESSAGE_CONTROL1_1_EXTRA(msg_class, type1_in, type1_out) \
266 msg_class::msg_class(const type1_in& arg1, type1_out* arg2) \ 188 msg_class::msg_class(const type1_in& arg1, type1_out* arg2) \
267 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple1<type1_out&> >( \ 189 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple1<type1_out&> >( \
268 MSG_ROUTING_CONTROL, ID, \ 190 MSG_ROUTING_CONTROL, ID, \
269 MakeRefTuple(arg1), MakeRefTuple(*arg2)) {} \ 191 MakeRefTuple(arg1), MakeRefTuple(*arg2)) {} \
270 \ 192 \
271 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 193 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
272 194
273 #define IPC_SYNC_MESSAGE_CONTROL1_2(msg_class, type1_in, type1_out, type2_out) \ 195 #define IPC_SYNC_MESSAGE_CONTROL1_2_EXTRA(msg_class, type1_in, type1_out, type2_ out) \
274 msg_class::msg_class(const type1_in& arg1, type1_out* arg2, type2_out* arg3) \ 196 msg_class::msg_class(const type1_in& arg1, type1_out* arg2, type2_out* arg3) \
275 : IPC::MessageWithReply<Tuple1<type1_in>, \ 197 : IPC::MessageWithReply<Tuple1<type1_in>, \
276 Tuple2<type1_out&, type2_out&> >( \ 198 Tuple2<type1_out&, type2_out&> >( \
277 MSG_ROUTING_CONTROL, ID, \ 199 MSG_ROUTING_CONTROL, ID, \
278 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3)) {} \ 200 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3)) {} \
279 \ 201 \
280 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 202 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
281 203
282 #define IPC_SYNC_MESSAGE_CONTROL1_3(msg_class, type1_in, type1_out, \ 204 #define IPC_SYNC_MESSAGE_CONTROL1_3_EXTRA(msg_class, type1_in, type1_out, \
283 type2_out, type3_out) \ 205 type2_out, type3_out) \
284 msg_class::msg_class(const type1_in& arg1, type1_out* arg2, \ 206 msg_class::msg_class(const type1_in& arg1, type1_out* arg2, \
285 type2_out* arg3, type3_out* arg4) \ 207 type2_out* arg3, type3_out* arg4) \
286 : IPC::MessageWithReply<Tuple1<type1_in>, \ 208 : IPC::MessageWithReply<Tuple1<type1_in>, \
287 Tuple3<type1_out&, type2_out&, type3_out&> >( \ 209 Tuple3<type1_out&, type2_out&, type3_out&> >( \
288 MSG_ROUTING_CONTROL, ID, \ 210 MSG_ROUTING_CONTROL, ID, \
289 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3, *arg4)) {} \ 211 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3, *arg4)) {} \
290 \ 212 \
291 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 213 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
292 214
293 #define IPC_SYNC_MESSAGE_CONTROL2_0(msg_class, type1_in, type2_in) \ 215 #define IPC_SYNC_MESSAGE_CONTROL2_0_EXTRA(msg_class, type1_in, type2_in) \
294 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2) \ 216 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2) \
295 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, Tuple0 >( \ 217 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, Tuple0 >( \
296 MSG_ROUTING_CONTROL, ID, \ 218 MSG_ROUTING_CONTROL, ID, \
297 MakeRefTuple(arg1, arg2), MakeTuple()) {} \ 219 MakeRefTuple(arg1, arg2), MakeTuple()) {} \
298 \ 220 \
299 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 221 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
300 222
301 #define IPC_SYNC_MESSAGE_CONTROL2_1(msg_class, type1_in, type2_in, type1_out) \ 223 #define IPC_SYNC_MESSAGE_CONTROL2_1_EXTRA(msg_class, type1_in, type2_in, type1_o ut) \
302 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 224 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
303 type1_out* arg3) \ 225 type1_out* arg3) \
304 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \ 226 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
305 Tuple1<type1_out&> >( \ 227 Tuple1<type1_out&> >( \
306 MSG_ROUTING_CONTROL, ID, \ 228 MSG_ROUTING_CONTROL, ID, \
307 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3)) {} \ 229 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3)) {} \
308 \ 230 \
309 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 231 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
310 232
311 233
312 #define IPC_SYNC_MESSAGE_CONTROL2_2(msg_class, type1_in, type2_in, \ 234 #define IPC_SYNC_MESSAGE_CONTROL2_2_EXTRA(msg_class, type1_in, type2_in, \
313 type1_out, type2_out) \ 235 type1_out, type2_out) \
314 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 236 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
315 type1_out* arg3, type2_out* arg4) \ 237 type1_out* arg3, type2_out* arg4) \
316 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \ 238 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
317 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \ 239 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \
318 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4)) {} \ 240 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4)) {} \
319 \ 241 \
320 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 242 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
321 243
322 244
323 #define IPC_SYNC_MESSAGE_CONTROL2_3(msg_class, type1_in, type2_in, \ 245 #define IPC_SYNC_MESSAGE_CONTROL2_3_EXTRA(msg_class, type1_in, type2_in, \
324 type1_out, type2_out, type3_out) \ 246 type1_out, type2_out, type3_out) \
325 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 247 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
326 type1_out* arg3, type2_out* arg4, type3_out* arg5) \ 248 type1_out* arg3, type2_out* arg4, type3_out* arg5) \
327 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \ 249 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
328 Tuple3<type1_out&, type2_out&, type3_out&> >(MSG_ROUTING_CONTROL, \ 250 Tuple3<type1_out&, type2_out&, type3_out&> >(MSG_ROUTING_CONTROL, \
329 ID, \ 251 ID, \
330 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4, *arg5)) {} \ 252 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4, *arg5)) {} \
331 \ 253 \
332 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 254 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
333 255
334 256
335 #define IPC_SYNC_MESSAGE_CONTROL3_1(msg_class, type1_in, type2_in, \ 257 #define IPC_SYNC_MESSAGE_CONTROL3_1_EXTRA(msg_class, type1_in, type2_in, \
336 type3_in, type1_out) \ 258 type3_in, type1_out) \
337 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 259 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
338 const type3_in& arg3, type1_out* arg4) \ 260 const type3_in& arg3, type1_out* arg4) \
339 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 261 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
340 Tuple1<type1_out&> >(MSG_ROUTING_CONTROL, ID, \ 262 Tuple1<type1_out&> >(MSG_ROUTING_CONTROL, ID, \
341 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4)) {} \ 263 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4)) {} \
342 \ 264 \
343 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 265 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
344 266
345 #define IPC_SYNC_MESSAGE_CONTROL3_2(msg_class, type1_in, type2_in, \ 267 #define IPC_SYNC_MESSAGE_CONTROL3_2_EXTRA(msg_class, type1_in, type2_in, \
346 type3_in, type1_out, type2_out) \ 268 type3_in, type1_out, type2_out) \
347 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 269 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
348 const type3_in& arg3, type1_out* arg4, type2_out* arg5) \ 270 const type3_in& arg3, type1_out* arg4, type2_out* arg5) \
349 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 271 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
350 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \ 272 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \
351 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5)) {} \ 273 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5)) {} \
352 \ 274 \
353 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 275 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
354 276
355 277
356 #define IPC_SYNC_MESSAGE_CONTROL3_3(msg_class, type1_in, type2_in, \ 278 #define IPC_SYNC_MESSAGE_CONTROL3_3_EXTRA(msg_class, type1_in, type2_in, \
357 type3_in, type1_out, type2_out, \ 279 type3_in, type1_out, type2_out, \
358 type3_out) \ 280 type3_out) \
359 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 281 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
360 const type3_in& arg3, type1_out* arg4, \ 282 const type3_in& arg3, type1_out* arg4, \
361 type2_out* arg5, type3_out* arg6) \ 283 type2_out* arg5, type3_out* arg6) \
362 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 284 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
363 Tuple3<type1_out&, type2_out&, type3_out&> >(MSG_ROUTING_CONTROL, \ 285 Tuple3<type1_out&, type2_out&, type3_out&> >(MSG_ROUTING_CONTROL, \
364 ID, \ 286 ID, \
365 MakeRefTuple(arg1, arg2, arg3), \ 287 MakeRefTuple(arg1, arg2, arg3), \
366 MakeRefTuple(*arg4, *arg5, *arg6)) {} \ 288 MakeRefTuple(*arg4, *arg5, *arg6)) {} \
367 \ 289 \
368 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 290 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
369 291
370 #define IPC_SYNC_MESSAGE_CONTROL3_4(msg_class, type1_in, type2_in, \ 292 #define IPC_SYNC_MESSAGE_CONTROL3_4_EXTRA(msg_class, type1_in, type2_in, \
371 type3_in, type1_out, type2_out, \ 293 type3_in, type1_out, type2_out, \
372 type3_out, type4_out) \ 294 type3_out, type4_out) \
373 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 295 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
374 const type3_in& arg3, type1_out* arg4, \ 296 const type3_in& arg3, type1_out* arg4, \
375 type2_out* arg5, type3_out* arg6, type4_out* arg7) \ 297 type2_out* arg5, type3_out* arg6, type4_out* arg7) \
376 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 298 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
377 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \ 299 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \
378 MSG_ROUTING_CONTROL, \ 300 MSG_ROUTING_CONTROL, \
379 ID, \ 301 ID, \
380 MakeRefTuple(arg1, arg2, arg3), \ 302 MakeRefTuple(arg1, arg2, arg3), \
381 MakeRefTuple(*arg4, *arg5, *arg6, *arg7)) {} \ 303 MakeRefTuple(*arg4, *arg5, *arg6, *arg7)) {} \
382 \ 304 \
383 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 305 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
384 306
385 #define IPC_SYNC_MESSAGE_CONTROL4_1(msg_class, type1_in, type2_in, \ 307 #define IPC_SYNC_MESSAGE_CONTROL4_1_EXTRA(msg_class, type1_in, type2_in, \
386 type3_in, type4_in, type1_out) \ 308 type3_in, type4_in, type1_out) \
387 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 309 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
388 const type3_in& arg3, const type4_in& arg4, \ 310 const type3_in& arg3, const type4_in& arg4, \
389 type1_out* arg6) \ 311 type1_out* arg6) \
390 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \ 312 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
391 Tuple1<type1_out&> >(MSG_ROUTING_CONTROL, ID, \ 313 Tuple1<type1_out&> >(MSG_ROUTING_CONTROL, ID, \
392 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg6)) {} \ 314 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg6)) {} \
393 \ 315 \
394 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 316 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
395 317
396 318
397 #define IPC_SYNC_MESSAGE_CONTROL4_2(msg_class, type1_in, type2_in, \ 319 #define IPC_SYNC_MESSAGE_CONTROL4_2_EXTRA(msg_class, type1_in, type2_in, \
398 type3_in, type4_in, type1_out, \ 320 type3_in, type4_in, type1_out, \
399 type2_out) \ 321 type2_out) \
400 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \ 322 msg_class::msg_class(const type1_in& arg1, const type2_in& arg2, \
401 const type3_in& arg3, const type4_in& arg4, \ 323 const type3_in& arg3, const type4_in& arg4, \
402 type1_out* arg5, type2_out* arg6) \ 324 type1_out* arg5, type2_out* arg6) \
403 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, \ 325 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, \
404 type4_in>, \ 326 type4_in>, \
405 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \ 327 Tuple2<type1_out&, type2_out&> >(MSG_ROUTING_CONTROL, ID, \
406 MakeRefTuple(arg1, arg2, arg3, arg4), \ 328 MakeRefTuple(arg1, arg2, arg3, arg4), \
407 MakeRefTuple(*arg5, *arg6)) {} \ 329 MakeRefTuple(*arg5, *arg6)) {} \
408 \ 330 \
409 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 331 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
410 332
411 #define IPC_SYNC_MESSAGE_ROUTED0_0(msg_class) \ 333 #define IPC_SYNC_MESSAGE_ROUTED0_0_EXTRA(msg_class) \
412 msg_class::msg_class(int routing_id) \ 334 msg_class::msg_class(int routing_id) \
413 : IPC::MessageWithReply<Tuple0, Tuple0>( \ 335 : IPC::MessageWithReply<Tuple0, Tuple0>( \
414 routing_id, ID, \ 336 routing_id, ID, \
415 MakeTuple(), MakeTuple()) {} \ 337 MakeTuple(), MakeTuple()) {} \
416 \ 338 \
417 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 339 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
418 340
419 #define IPC_SYNC_MESSAGE_ROUTED0_1(msg_class, type1_out) \ 341 #define IPC_SYNC_MESSAGE_ROUTED0_1_EXTRA(msg_class, type1_out) \
420 msg_class::msg_class(int routing_id, type1_out* arg1) \ 342 msg_class::msg_class(int routing_id, type1_out* arg1) \
421 : IPC::MessageWithReply<Tuple0, Tuple1<type1_out&> >( \ 343 : IPC::MessageWithReply<Tuple0, Tuple1<type1_out&> >( \
422 routing_id, ID, \ 344 routing_id, ID, \
423 MakeTuple(), MakeRefTuple(*arg1)) {} \ 345 MakeTuple(), MakeRefTuple(*arg1)) {} \
424 \ 346 \
425 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 347 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
426 348
427 #define IPC_SYNC_MESSAGE_ROUTED0_2(msg_class, type1_out, type2_out) \ 349 #define IPC_SYNC_MESSAGE_ROUTED0_2_EXTRA(msg_class, type1_out, type2_out) \
428 msg_class::msg_class(int routing_id, type1_out* arg1, type2_out* arg2) \ 350 msg_class::msg_class(int routing_id, type1_out* arg1, type2_out* arg2) \
429 : IPC::MessageWithReply<Tuple0, Tuple2<type1_out&, type2_out&> >( \ 351 : IPC::MessageWithReply<Tuple0, Tuple2<type1_out&, type2_out&> >( \
430 routing_id, ID, \ 352 routing_id, ID, \
431 MakeTuple(), MakeRefTuple(*arg1, *arg2)) {} \ 353 MakeTuple(), MakeRefTuple(*arg1, *arg2)) {} \
432 \ 354 \
433 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 355 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
434 356
435 #define IPC_SYNC_MESSAGE_ROUTED0_3(msg_class, type1_out, type2_out, \ 357 #define IPC_SYNC_MESSAGE_ROUTED0_3_EXTRA(msg_class, type1_out, type2_out, \
436 type3_out) \ 358 type3_out) \
437 msg_class::msg_class(int routing_id, type1_out* arg1, type2_out* arg2, \ 359 msg_class::msg_class(int routing_id, type1_out* arg1, type2_out* arg2, \
438 type3_out* arg3) \ 360 type3_out* arg3) \
439 : IPC::MessageWithReply<Tuple0, \ 361 : IPC::MessageWithReply<Tuple0, \
440 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \ 362 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
441 MakeTuple(), MakeRefTuple(*arg1, *arg2, *arg3)) {} \ 363 MakeTuple(), MakeRefTuple(*arg1, *arg2, *arg3)) {} \
442 \ 364 \
443 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 365 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
444 366
445 #define IPC_SYNC_MESSAGE_ROUTED1_0(msg_class, type1_in) \ 367 #define IPC_SYNC_MESSAGE_ROUTED1_0_EXTRA(msg_class, type1_in) \
446 msg_class::msg_class(int routing_id, const type1_in& arg1) \ 368 msg_class::msg_class(int routing_id, const type1_in& arg1) \
447 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple0 >( \ 369 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple0 >( \
448 routing_id, ID, \ 370 routing_id, ID, \
449 MakeRefTuple(arg1), MakeTuple()) {} \ 371 MakeRefTuple(arg1), MakeTuple()) {} \
450 \ 372 \
451 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 373 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
452 374
453 #define IPC_SYNC_MESSAGE_ROUTED1_1(msg_class, type1_in, type1_out) \ 375 #define IPC_SYNC_MESSAGE_ROUTED1_1_EXTRA(msg_class, type1_in, type1_out) \
454 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 376 msg_class::msg_class(int routing_id, const type1_in& arg1, \
455 type1_out* arg2) \ 377 type1_out* arg2) \
456 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple1<type1_out&> >( \ 378 : IPC::MessageWithReply<Tuple1<type1_in>, Tuple1<type1_out&> >( \
457 routing_id, ID, \ 379 routing_id, ID, \
458 MakeRefTuple(arg1), MakeRefTuple(*arg2)) {} \ 380 MakeRefTuple(arg1), MakeRefTuple(*arg2)) {} \
459 \ 381 \
460 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 382 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
461 383
462 #define IPC_SYNC_MESSAGE_ROUTED1_2(msg_class, type1_in, type1_out, \ 384 #define IPC_SYNC_MESSAGE_ROUTED1_2_EXTRA(msg_class, type1_in, type1_out, \
463 type2_out) \ 385 type2_out) \
464 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 386 msg_class::msg_class(int routing_id, const type1_in& arg1, \
465 type1_out* arg2, type2_out* arg3) \ 387 type1_out* arg2, type2_out* arg3) \
466 : IPC::MessageWithReply<Tuple1<type1_in>, \ 388 : IPC::MessageWithReply<Tuple1<type1_in>, \
467 Tuple2<type1_out&, type2_out&> >( \ 389 Tuple2<type1_out&, type2_out&> >( \
468 routing_id, ID, \ 390 routing_id, ID, \
469 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3)) {} \ 391 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3)) {} \
470 \ 392 \
471 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 393 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
472 394
473 #define IPC_SYNC_MESSAGE_ROUTED1_3(msg_class, type1_in, type1_out, \ 395 #define IPC_SYNC_MESSAGE_ROUTED1_3_EXTRA(msg_class, type1_in, type1_out, \
474 type2_out, type3_out) \ 396 type2_out, type3_out) \
475 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 397 msg_class::msg_class(int routing_id, const type1_in& arg1, \
476 type1_out* arg2, type2_out* arg3, type3_out* arg4) \ 398 type1_out* arg2, type2_out* arg3, type3_out* arg4) \
477 : IPC::MessageWithReply<Tuple1<type1_in>, \ 399 : IPC::MessageWithReply<Tuple1<type1_in>, \
478 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \ 400 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
479 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3, *arg4)) {} \ 401 MakeRefTuple(arg1), MakeRefTuple(*arg2, *arg3, *arg4)) {} \
480 \ 402 \
481 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 403 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
482 404
483 #define IPC_SYNC_MESSAGE_ROUTED1_4(msg_class, type1_in, type1_out, \ 405 #define IPC_SYNC_MESSAGE_ROUTED1_4_EXTRA(msg_class, type1_in, type1_out, \
484 type2_out, type3_out, type4_out) \ 406 type2_out, type3_out, type4_out) \
485 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 407 msg_class::msg_class(int routing_id, const type1_in& arg1, \
486 type1_out* arg2, type2_out* arg3, \ 408 type1_out* arg2, type2_out* arg3, \
487 type3_out* arg4, type4_out* arg5) \ 409 type3_out* arg4, type4_out* arg5) \
488 : IPC::MessageWithReply<Tuple1<type1_in>, \ 410 : IPC::MessageWithReply<Tuple1<type1_in>, \
489 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \ 411 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \
490 routing_id, ID, MakeRefTuple(arg1), \ 412 routing_id, ID, MakeRefTuple(arg1), \
491 MakeRefTuple(*arg2, *arg3, *arg4, *arg5)) {} \ 413 MakeRefTuple(*arg2, *arg3, *arg4, *arg5)) {} \
492 \ 414 \
493 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 415 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
494 416
495 #define IPC_SYNC_MESSAGE_ROUTED2_0(msg_class, type1_in, type2_in) \ 417 #define IPC_SYNC_MESSAGE_ROUTED2_0_EXTRA(msg_class, type1_in, type2_in) \
496 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 418 msg_class::msg_class(int routing_id, const type1_in& arg1, \
497 const type2_in& arg2) \ 419 const type2_in& arg2) \
498 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, Tuple0 >( \ 420 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, Tuple0 >( \
499 routing_id, ID, MakeRefTuple(arg1, arg2), MakeTuple()) {} \ 421 routing_id, ID, MakeRefTuple(arg1, arg2), MakeTuple()) {} \
500 \ 422 \
501 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 423 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
502 424
503 #define IPC_SYNC_MESSAGE_ROUTED2_1(msg_class, type1_in, type2_in, \ 425 #define IPC_SYNC_MESSAGE_ROUTED2_1_EXTRA(msg_class, type1_in, type2_in, \
504 type1_out) \ 426 type1_out) \
505 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 427 msg_class::msg_class(int routing_id, const type1_in& arg1, \
506 const type2_in& arg2, type1_out* arg3) \ 428 const type2_in& arg2, type1_out* arg3) \
507 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \ 429 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
508 Tuple1<type1_out&> >(routing_id, ID, \ 430 Tuple1<type1_out&> >(routing_id, ID, \
509 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3)) {} \ 431 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3)) {} \
510 \ 432 \
511 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 433 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
512 434
513 #define IPC_SYNC_MESSAGE_ROUTED2_2(msg_class, type1_in, type2_in, \ 435 #define IPC_SYNC_MESSAGE_ROUTED2_2_EXTRA(msg_class, type1_in, type2_in, \
514 type1_out, type2_out) \ 436 type1_out, type2_out) \
515 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 437 msg_class::msg_class(int routing_id, const type1_in& arg1, \
516 const type2_in& arg2, type1_out* arg3, \ 438 const type2_in& arg2, type1_out* arg3, \
517 type2_out* arg4) \ 439 type2_out* arg4) \
518 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \ 440 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
519 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \ 441 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \
520 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4)) {} \ 442 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4)) {} \
521 \ 443 \
522 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 444 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
523 445
524 #define IPC_SYNC_MESSAGE_ROUTED2_3(msg_class, type1_in, type2_in, \ 446 #define IPC_SYNC_MESSAGE_ROUTED2_3_EXTRA(msg_class, type1_in, type2_in, \
525 type1_out, type2_out, type3_out) \ 447 type1_out, type2_out, type3_out) \
526 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 448 msg_class::msg_class(int routing_id, const type1_in& arg1, \
527 const type2_in& arg2, type1_out* arg3, \ 449 const type2_in& arg2, type1_out* arg3, \
528 type2_out* arg4, type3_out* arg5) \ 450 type2_out* arg4, type3_out* arg5) \
529 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \ 451 : IPC::MessageWithReply<Tuple2<type1_in, type2_in>, \
530 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \ 452 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
531 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4, *arg5)) {} \ 453 MakeRefTuple(arg1, arg2), MakeRefTuple(*arg3, *arg4, *arg5)) {} \
532 \ 454 \
533 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 455 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
534 456
535 #define IPC_SYNC_MESSAGE_ROUTED3_0(msg_class, type1_in, type2_in, \ 457 #define IPC_SYNC_MESSAGE_ROUTED3_0_EXTRA(msg_class, type1_in, type2_in, \
536 type3_in) \ 458 type3_in) \
537 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 459 msg_class::msg_class(int routing_id, const type1_in& arg1, \
538 const type2_in& arg2, const type3_in& arg3) \ 460 const type2_in& arg2, const type3_in& arg3) \
539 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, Tuple0>( \ 461 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, Tuple0>( \
540 routing_id, ID, \ 462 routing_id, ID, \
541 MakeRefTuple(arg1, arg2, arg3), MakeTuple()) {} \ 463 MakeRefTuple(arg1, arg2, arg3), MakeTuple()) {} \
542 \ 464 \
543 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 465 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
544 466
545 #define IPC_SYNC_MESSAGE_ROUTED3_1(msg_class, type1_in, type2_in, \ 467 #define IPC_SYNC_MESSAGE_ROUTED3_1_EXTRA(msg_class, type1_in, type2_in, \
546 type3_in, type1_out) \ 468 type3_in, type1_out) \
547 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 469 msg_class::msg_class(int routing_id, const type1_in& arg1, \
548 const type2_in& arg2, const type3_in& arg3, \ 470 const type2_in& arg2, const type3_in& arg3, \
549 type1_out* arg4) \ 471 type1_out* arg4) \
550 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 472 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
551 Tuple1<type1_out&> >(routing_id, ID, \ 473 Tuple1<type1_out&> >(routing_id, ID, \
552 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4)) {} \ 474 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4)) {} \
553 \ 475 \
554 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 476 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
555 477
556 #define IPC_SYNC_MESSAGE_ROUTED3_2(msg_class, type1_in, type2_in, \ 478 #define IPC_SYNC_MESSAGE_ROUTED3_2_EXTRA(msg_class, type1_in, type2_in, \
557 type3_in, type1_out, type2_out) \ 479 type3_in, type1_out, type2_out) \
558 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 480 msg_class::msg_class(int routing_id, const type1_in& arg1, \
559 const type2_in& arg2, const type3_in& arg3, \ 481 const type2_in& arg2, const type3_in& arg3, \
560 type1_out* arg4, type2_out* arg5) \ 482 type1_out* arg4, type2_out* arg5) \
561 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 483 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
562 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \ 484 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \
563 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5)) {} \ 485 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5)) {} \
564 \ 486 \
565 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 487 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
566 488
567 #define IPC_SYNC_MESSAGE_ROUTED3_3(msg_class, type1_in, type2_in, \ 489 #define IPC_SYNC_MESSAGE_ROUTED3_3_EXTRA(msg_class, type1_in, type2_in, \
568 type3_in, type1_out, type2_out, \ 490 type3_in, type1_out, type2_out, \
569 type3_out) \ 491 type3_out) \
570 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 492 msg_class::msg_class(int routing_id, const type1_in& arg1, \
571 const type2_in& arg2, const type3_in& arg3, \ 493 const type2_in& arg2, const type3_in& arg3, \
572 type1_out* arg4, type2_out* arg5, type3_out* arg6) \ 494 type1_out* arg4, type2_out* arg5, type3_out* arg6) \
573 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 495 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
574 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \ 496 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
575 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5, \ 497 MakeRefTuple(arg1, arg2, arg3), MakeRefTuple(*arg4, *arg5, \
576 *arg6)) {} \ 498 *arg6)) {} \
577 \ 499 \
578 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 500 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
579 501
580 #define IPC_SYNC_MESSAGE_ROUTED3_4(msg_class, type1_in, type2_in, \ 502 #define IPC_SYNC_MESSAGE_ROUTED3_4_EXTRA(msg_class, type1_in, type2_in, \
581 type3_in, type1_out, type2_out, \ 503 type3_in, type1_out, type2_out, \
582 type3_out, type4_out) \ 504 type3_out, type4_out) \
583 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 505 msg_class::msg_class(int routing_id, const type1_in& arg1, \
584 const type2_in& arg2, const type3_in& arg3, \ 506 const type2_in& arg2, const type3_in& arg3, \
585 type1_out* arg4, type2_out* arg5, \ 507 type1_out* arg4, type2_out* arg5, \
586 type3_out* arg6, type4_out* arg7) \ 508 type3_out* arg6, type4_out* arg7) \
587 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \ 509 : IPC::MessageWithReply<Tuple3<type1_in, type2_in, type3_in>, \
588 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \ 510 Tuple4<type1_out&, type2_out&, type3_out&, type4_out&> >( \
589 routing_id, ID, MakeRefTuple(arg1, arg2, arg3), \ 511 routing_id, ID, MakeRefTuple(arg1, arg2, arg3), \
590 MakeRefTuple(*arg4, *arg5, *arg6, *arg7)) {} \ 512 MakeRefTuple(*arg4, *arg5, *arg6, *arg7)) {} \
591 \ 513 \
592 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 514 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
593 515
594 #define IPC_SYNC_MESSAGE_ROUTED4_0(msg_class, type1_in, type2_in, \ 516 #define IPC_SYNC_MESSAGE_ROUTED4_0_EXTRA(msg_class, type1_in, type2_in, \
595 type3_in, type4_in) \ 517 type3_in, type4_in) \
596 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 518 msg_class::msg_class(int routing_id, const type1_in& arg1, \
597 const type2_in& arg2, const type3_in& arg3, \ 519 const type2_in& arg2, const type3_in& arg3, \
598 const type4_in& arg4) \ 520 const type4_in& arg4) \
599 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, \ 521 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, \
600 type4_in>, Tuple0 >(routing_id, ID, \ 522 type4_in>, Tuple0 >(routing_id, ID, \
601 MakeRefTuple(arg1, arg2, arg3, arg4), MakeTuple()) {} \ 523 MakeRefTuple(arg1, arg2, arg3, arg4), MakeTuple()) {} \
602 \ 524 \
603 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 525 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
604 526
605 #define IPC_SYNC_MESSAGE_ROUTED4_1(msg_class, type1_in, type2_in, \ 527 #define IPC_SYNC_MESSAGE_ROUTED4_1_EXTRA(msg_class, type1_in, type2_in, \
606 type3_in, type4_in, type1_out) \ 528 type3_in, type4_in, type1_out) \
607 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 529 msg_class::msg_class(int routing_id, const type1_in& arg1, \
608 const type2_in& arg2, const type3_in& arg3, \ 530 const type2_in& arg2, const type3_in& arg3, \
609 const type4_in& arg4, type1_out* arg6) \ 531 const type4_in& arg4, type1_out* arg6) \
610 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \ 532 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
611 Tuple1<type1_out&> >(routing_id, ID, \ 533 Tuple1<type1_out&> >(routing_id, ID, \
612 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg6)) {} \ 534 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg6)) {} \
613 \ 535 \
614 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 536 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
615 537
616 538
617 #define IPC_SYNC_MESSAGE_ROUTED4_2(msg_class, type1_in, type2_in, \ 539 #define IPC_SYNC_MESSAGE_ROUTED4_2_EXTRA(msg_class, type1_in, type2_in, \
618 type3_in, type4_in, type1_out, \ 540 type3_in, type4_in, type1_out, \
619 type2_out) \ 541 type2_out) \
620 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 542 msg_class::msg_class(int routing_id, const type1_in& arg1, \
621 const type2_in& arg2, const type3_in& arg3, \ 543 const type2_in& arg2, const type3_in& arg3, \
622 const type4_in& arg4, type1_out* arg5, type2_out* arg6) \ 544 const type4_in& arg4, type1_out* arg5, type2_out* arg6) \
623 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \ 545 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
624 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \ 546 Tuple2<type1_out&, type2_out&> >(routing_id, ID, \
625 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg5, *arg6)) {} \ 547 MakeRefTuple(arg1, arg2, arg3, arg4), MakeRefTuple(*arg5, *arg6)) {} \
626 \ 548 \
627 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 549 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
628 550
629 551
630 #define IPC_SYNC_MESSAGE_ROUTED4_3(msg_class, type1_in, type2_in, \ 552 #define IPC_SYNC_MESSAGE_ROUTED4_3_EXTRA(msg_class, type1_in, type2_in, \
631 type3_in, type4_in, type1_out, \ 553 type3_in, type4_in, type1_out, \
632 type2_out, type3_out) \ 554 type2_out, type3_out) \
633 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 555 msg_class::msg_class(int routing_id, const type1_in& arg1, \
634 const type2_in& arg2, const type3_in& arg3, \ 556 const type2_in& arg2, const type3_in& arg3, \
635 const type4_in& arg4, type1_out* arg5, \ 557 const type4_in& arg4, type1_out* arg5, \
636 type2_out* arg6, type3_out* arg7) \ 558 type2_out* arg6, type3_out* arg7) \
637 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \ 559 : IPC::MessageWithReply<Tuple4<type1_in, type2_in, type3_in, type4_in>, \
638 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \ 560 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
639 MakeRefTuple(arg1, arg2, arg3, arg4), \ 561 MakeRefTuple(arg1, arg2, arg3, arg4), \
640 MakeRefTuple(*arg5, *arg6, *arg7)) {} \ 562 MakeRefTuple(*arg5, *arg6, *arg7)) {} \
641 \ 563 \
642 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 564 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
643 565
644 #define IPC_SYNC_MESSAGE_ROUTED5_0(msg_class, type1_in, type2_in, \ 566 #define IPC_SYNC_MESSAGE_ROUTED5_0_EXTRA(msg_class, type1_in, type2_in, \
645 type3_in, type4_in, type5_in) \ 567 type3_in, type4_in, type5_in) \
646 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 568 msg_class::msg_class(int routing_id, const type1_in& arg1, \
647 const type2_in& arg2, const type3_in& arg3, \ 569 const type2_in& arg2, const type3_in& arg3, \
648 const type4_in& arg4, const type5_in& arg5) \ 570 const type4_in& arg4, const type5_in& arg5) \
649 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \ 571 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
650 type4_in, type5_in>, Tuple0 >(routing_id, ID, \ 572 type4_in, type5_in>, Tuple0 >(routing_id, ID, \
651 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), MakeTuple()) {} \ 573 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), MakeTuple()) {} \
652 \ 574 \
653 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 575 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
654 576
655 #define IPC_SYNC_MESSAGE_ROUTED5_1(msg_class, type1_in, type2_in, \ 577 #define IPC_SYNC_MESSAGE_ROUTED5_1_EXTRA(msg_class, type1_in, type2_in, \
656 type3_in, type4_in, type5_in, type1_out) \ 578 type3_in, type4_in, type5_in, type1_out) \
657 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 579 msg_class::msg_class(int routing_id, const type1_in& arg1, \
658 const type2_in& arg2, const type3_in& arg3, \ 580 const type2_in& arg2, const type3_in& arg3, \
659 const type4_in& arg4, const type5_in& arg5, \ 581 const type4_in& arg4, const type5_in& arg5, \
660 type1_out* arg6) \ 582 type1_out* arg6) \
661 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \ 583 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
662 type4_in, type5_in>, Tuple1<type1_out&> >(routing_id, ID, \ 584 type4_in, type5_in>, Tuple1<type1_out&> >(routing_id, ID, \
663 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \ 585 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \
664 MakeRefTuple(*arg6)) {} \ 586 MakeRefTuple(*arg6)) {} \
665 \ 587 \
666 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 588 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
667 589
668 #define IPC_SYNC_MESSAGE_ROUTED5_2(msg_class, type1_in, type2_in, \ 590 #define IPC_SYNC_MESSAGE_ROUTED5_2_EXTRA(msg_class, type1_in, type2_in, \
669 type3_in, type4_in, type5_in, \ 591 type3_in, type4_in, type5_in, \
670 type1_out, type2_out) \ 592 type1_out, type2_out) \
671 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 593 msg_class::msg_class(int routing_id, const type1_in& arg1, \
672 const type2_in& arg2, const type3_in& arg3, \ 594 const type2_in& arg2, const type3_in& arg3, \
673 const type4_in& arg4, const type4_in& arg5, \ 595 const type4_in& arg4, const type4_in& arg5, \
674 type1_out* arg6, type2_out* arg7) \ 596 type1_out* arg6, type2_out* arg7) \
675 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \ 597 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
676 type4_in, type5_in>, Tuple2<type1_out&, type2_out&> >( \ 598 type4_in, type5_in>, Tuple2<type1_out&, type2_out&> >( \
677 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \ 599 routing_id, ID, MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \
678 MakeRefTuple(*arg6, *arg7)) {} \ 600 MakeRefTuple(*arg6, *arg7)) {} \
679 \ 601 \
680 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 602 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
681 603
682 #define IPC_SYNC_MESSAGE_ROUTED5_3(msg_class, type1_in, type2_in, \ 604 #define IPC_SYNC_MESSAGE_ROUTED5_3_EXTRA(msg_class, type1_in, type2_in, \
683 type3_in, type4_in, type5_in, \ 605 type3_in, type4_in, type5_in, \
684 type1_out, type2_out, type3_out) \ 606 type1_out, type2_out, type3_out) \
685 msg_class::msg_class(int routing_id, const type1_in& arg1, \ 607 msg_class::msg_class(int routing_id, const type1_in& arg1, \
686 const type2_in& arg2, const type3_in& arg3, \ 608 const type2_in& arg2, const type3_in& arg3, \
687 const type4_in& arg4, const type4_in& arg5, \ 609 const type4_in& arg4, const type4_in& arg5, \
688 type1_out* arg6, type2_out* arg7, \ 610 type1_out* arg6, type2_out* arg7, \
689 type3_out* arg8) \ 611 type3_out* arg8) \
690 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \ 612 : IPC::MessageWithReply<Tuple5<type1_in, type2_in, type3_in, \
691 type4_in, type5_in>, \ 613 type4_in, type5_in>, \
692 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \ 614 Tuple3<type1_out&, type2_out&, type3_out&> >(routing_id, ID, \
693 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \ 615 MakeRefTuple(arg1, arg2, arg3, arg4, arg5), \
694 MakeRefTuple(*arg6, *arg7, *arg8)) {} \ 616 MakeRefTuple(*arg6, *arg7, *arg8)) {} \
695 \ 617 \
696 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class) 618 IPC_SYNC_MESSAGE_DTOR_AND_LOG(msg_class)
697 619
698 // Trigger the header guard define in ipc_message_macros.h so we don't get
699 // duplicate including when we include MESSAGES_INTERNAL_FILE again at the end
700 // of this file.
701 #define IPC_MESSAGE_MACROS_INCLUDE_BLOCK
702
703 // Redefine MESSAGES_INTERNAL_FILE just for the header check in
704 // ipc_messages_macros.h that happens before it breaks on the header guard.
705 #define MESSAGES_INTERNAL_FILE MESSAGES_INTERNAL_IMPL_FILE
706
707 // Include our INTERNAL file first to get the normal expansion.
708 #include MESSAGES_INTERNAL_IMPL_FILE
709
710 #endif // IPC_IPC_MESSAGE_IMPL_MACROS_H_ 620 #endif // IPC_IPC_MESSAGE_IMPL_MACROS_H_
OLDNEW
« no previous file with comments | « ipc/ipc_message.h ('k') | ipc/ipc_message_macros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698