1 // This file was GENERATED by command:
2 // pump.py callback.h.pump
3 // DO NOT EDIT BY HAND!!!
7 // Copyright 2014 The Chromium Authors. All rights reserved.
8 // Use of this source code is governed by a BSD-style license that can be
9 // found in the LICENSE file.
11 #ifndef MOJO_PUBLIC_BINDINGS_CALLBACK_H_
12 #define MOJO_PUBLIC_BINDINGS_CALLBACK_H_
14 #include "mojo/public/bindings/lib/callback_internal.h"
15 #include "mojo/public/bindings/lib/shared_ptr.h"
19 template <typename Sig>
23 class Callback<void()> {
26 virtual ~Runnable() {}
27 virtual void Run() const = 0;
32 // The Callback assumes ownership of |runnable|.
33 explicit Callback(Runnable* runnable) : sink_(runnable) {}
35 // Any class that is copy-constructable and has a compatible Run method may
36 // be adapted to a Callback using this constructor.
37 template <typename Sink>
38 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
46 template <typename Sink>
47 struct Adapter : public Runnable {
48 explicit Adapter(const Sink& sink) : sink(sink) {}
49 virtual void Run() const MOJO_OVERRIDE {
55 internal::SharedPtr<Runnable> sink_;
58 template <typename A1>
59 class Callback<void(A1)> {
62 virtual ~Runnable() {}
64 typename internal::Callback_ParamTraits<A1>::ForwardType a1) const = 0;
69 // The Callback assumes ownership of |runnable|.
70 explicit Callback(Runnable* runnable) : sink_(runnable) {}
72 // Any class that is copy-constructable and has a compatible Run method may
73 // be adapted to a Callback using this constructor.
74 template <typename Sink>
75 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
78 typename internal::Callback_ParamTraits<A1>::ForwardType a1) const {
81 internal::Callback_Forward(a1));
85 template <typename Sink>
86 struct Adapter : public Runnable {
87 explicit Adapter(const Sink& sink) : sink(sink) {}
89 typename internal::Callback_ParamTraits<A1>::ForwardType a1) const
92 internal::Callback_Forward(a1));
97 internal::SharedPtr<Runnable> sink_;
100 template <typename A1, typename A2>
101 class Callback<void(A1, A2)> {
104 virtual ~Runnable() {}
106 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
107 typename internal::Callback_ParamTraits<A2>::ForwardType a2) const = 0;
112 // The Callback assumes ownership of |runnable|.
113 explicit Callback(Runnable* runnable) : sink_(runnable) {}
115 // Any class that is copy-constructable and has a compatible Run method may
116 // be adapted to a Callback using this constructor.
117 template <typename Sink>
118 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
121 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
122 typename internal::Callback_ParamTraits<A2>::ForwardType a2) const {
125 internal::Callback_Forward(a1),
126 internal::Callback_Forward(a2));
130 template <typename Sink>
131 struct Adapter : public Runnable {
132 explicit Adapter(const Sink& sink) : sink(sink) {}
134 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
135 typename internal::Callback_ParamTraits<A2>::ForwardType a2) const
138 internal::Callback_Forward(a1),
139 internal::Callback_Forward(a2));
144 internal::SharedPtr<Runnable> sink_;
147 template <typename A1, typename A2, typename A3>
148 class Callback<void(A1, A2, A3)> {
151 virtual ~Runnable() {}
153 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
154 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
155 typename internal::Callback_ParamTraits<A3>::ForwardType a3) const = 0;
160 // The Callback assumes ownership of |runnable|.
161 explicit Callback(Runnable* runnable) : sink_(runnable) {}
163 // Any class that is copy-constructable and has a compatible Run method may
164 // be adapted to a Callback using this constructor.
165 template <typename Sink>
166 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
169 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
170 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
171 typename internal::Callback_ParamTraits<A3>::ForwardType a3) const {
174 internal::Callback_Forward(a1),
175 internal::Callback_Forward(a2),
176 internal::Callback_Forward(a3));
180 template <typename Sink>
181 struct Adapter : public Runnable {
182 explicit Adapter(const Sink& sink) : sink(sink) {}
184 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
185 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
186 typename internal::Callback_ParamTraits<A3>::ForwardType a3) const
189 internal::Callback_Forward(a1),
190 internal::Callback_Forward(a2),
191 internal::Callback_Forward(a3));
196 internal::SharedPtr<Runnable> sink_;
199 template <typename A1, typename A2, typename A3, typename A4>
200 class Callback<void(A1, A2, A3, A4)> {
203 virtual ~Runnable() {}
205 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
206 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
207 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
208 typename internal::Callback_ParamTraits<A4>::ForwardType a4) const = 0;
213 // The Callback assumes ownership of |runnable|.
214 explicit Callback(Runnable* runnable) : sink_(runnable) {}
216 // Any class that is copy-constructable and has a compatible Run method may
217 // be adapted to a Callback using this constructor.
218 template <typename Sink>
219 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
222 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
223 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
224 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
225 typename internal::Callback_ParamTraits<A4>::ForwardType a4) const {
228 internal::Callback_Forward(a1),
229 internal::Callback_Forward(a2),
230 internal::Callback_Forward(a3),
231 internal::Callback_Forward(a4));
235 template <typename Sink>
236 struct Adapter : public Runnable {
237 explicit Adapter(const Sink& sink) : sink(sink) {}
239 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
240 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
241 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
242 typename internal::Callback_ParamTraits<A4>::ForwardType a4) const
245 internal::Callback_Forward(a1),
246 internal::Callback_Forward(a2),
247 internal::Callback_Forward(a3),
248 internal::Callback_Forward(a4));
253 internal::SharedPtr<Runnable> sink_;
256 template <typename A1, typename A2, typename A3, typename A4, typename A5>
257 class Callback<void(A1, A2, A3, A4, A5)> {
260 virtual ~Runnable() {}
262 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
263 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
264 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
265 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
266 typename internal::Callback_ParamTraits<A5>::ForwardType a5) const = 0;
271 // The Callback assumes ownership of |runnable|.
272 explicit Callback(Runnable* runnable) : sink_(runnable) {}
274 // Any class that is copy-constructable and has a compatible Run method may
275 // be adapted to a Callback using this constructor.
276 template <typename Sink>
277 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
280 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
281 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
282 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
283 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
284 typename internal::Callback_ParamTraits<A5>::ForwardType a5) const {
287 internal::Callback_Forward(a1),
288 internal::Callback_Forward(a2),
289 internal::Callback_Forward(a3),
290 internal::Callback_Forward(a4),
291 internal::Callback_Forward(a5));
295 template <typename Sink>
296 struct Adapter : public Runnable {
297 explicit Adapter(const Sink& sink) : sink(sink) {}
299 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
300 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
301 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
302 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
303 typename internal::Callback_ParamTraits<A5>::ForwardType a5) const
306 internal::Callback_Forward(a1),
307 internal::Callback_Forward(a2),
308 internal::Callback_Forward(a3),
309 internal::Callback_Forward(a4),
310 internal::Callback_Forward(a5));
315 internal::SharedPtr<Runnable> sink_;
318 template <typename A1, typename A2, typename A3, typename A4, typename A5,
320 class Callback<void(A1, A2, A3, A4, A5, A6)> {
323 virtual ~Runnable() {}
325 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
326 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
327 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
328 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
329 typename internal::Callback_ParamTraits<A5>::ForwardType a5,
330 typename internal::Callback_ParamTraits<A6>::ForwardType a6) const = 0;
335 // The Callback assumes ownership of |runnable|.
336 explicit Callback(Runnable* runnable) : sink_(runnable) {}
338 // Any class that is copy-constructable and has a compatible Run method may
339 // be adapted to a Callback using this constructor.
340 template <typename Sink>
341 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
344 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
345 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
346 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
347 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
348 typename internal::Callback_ParamTraits<A5>::ForwardType a5,
349 typename internal::Callback_ParamTraits<A6>::ForwardType a6) const {
352 internal::Callback_Forward(a1),
353 internal::Callback_Forward(a2),
354 internal::Callback_Forward(a3),
355 internal::Callback_Forward(a4),
356 internal::Callback_Forward(a5),
357 internal::Callback_Forward(a6));
361 template <typename Sink>
362 struct Adapter : public Runnable {
363 explicit Adapter(const Sink& sink) : sink(sink) {}
365 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
366 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
367 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
368 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
369 typename internal::Callback_ParamTraits<A5>::ForwardType a5,
370 typename internal::Callback_ParamTraits<A6>::ForwardType a6) const
373 internal::Callback_Forward(a1),
374 internal::Callback_Forward(a2),
375 internal::Callback_Forward(a3),
376 internal::Callback_Forward(a4),
377 internal::Callback_Forward(a5),
378 internal::Callback_Forward(a6));
383 internal::SharedPtr<Runnable> sink_;
386 template <typename A1, typename A2, typename A3, typename A4, typename A5,
387 typename A6, typename A7>
388 class Callback<void(A1, A2, A3, A4, A5, A6, A7)> {
391 virtual ~Runnable() {}
393 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
394 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
395 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
396 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
397 typename internal::Callback_ParamTraits<A5>::ForwardType a5,
398 typename internal::Callback_ParamTraits<A6>::ForwardType a6,
399 typename internal::Callback_ParamTraits<A7>::ForwardType a7) const = 0;
404 // The Callback assumes ownership of |runnable|.
405 explicit Callback(Runnable* runnable) : sink_(runnable) {}
407 // Any class that is copy-constructable and has a compatible Run method may
408 // be adapted to a Callback using this constructor.
409 template <typename Sink>
410 Callback(const Sink& sink) : sink_(new Adapter<Sink>(sink)) {}
413 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
414 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
415 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
416 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
417 typename internal::Callback_ParamTraits<A5>::ForwardType a5,
418 typename internal::Callback_ParamTraits<A6>::ForwardType a6,
419 typename internal::Callback_ParamTraits<A7>::ForwardType a7) const {
422 internal::Callback_Forward(a1),
423 internal::Callback_Forward(a2),
424 internal::Callback_Forward(a3),
425 internal::Callback_Forward(a4),
426 internal::Callback_Forward(a5),
427 internal::Callback_Forward(a6),
428 internal::Callback_Forward(a7));
432 template <typename Sink>
433 struct Adapter : public Runnable {
434 explicit Adapter(const Sink& sink) : sink(sink) {}
436 typename internal::Callback_ParamTraits<A1>::ForwardType a1,
437 typename internal::Callback_ParamTraits<A2>::ForwardType a2,
438 typename internal::Callback_ParamTraits<A3>::ForwardType a3,
439 typename internal::Callback_ParamTraits<A4>::ForwardType a4,
440 typename internal::Callback_ParamTraits<A5>::ForwardType a5,
441 typename internal::Callback_ParamTraits<A6>::ForwardType a6,
442 typename internal::Callback_ParamTraits<A7>::ForwardType a7) const
445 internal::Callback_Forward(a1),
446 internal::Callback_Forward(a2),
447 internal::Callback_Forward(a3),
448 internal::Callback_Forward(a4),
449 internal::Callback_Forward(a5),
450 internal::Callback_Forward(a6),
451 internal::Callback_Forward(a7));
456 internal::SharedPtr<Runnable> sink_;
461 #endif // MOJO_PUBLIC_BINDINGS_CALLBACK_H_