Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / mojo / public / bindings / callback.h
1 // This file was GENERATED by command:
2 //     pump.py callback.h.pump
3 // DO NOT EDIT BY HAND!!!
4
5
6
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.
10
11 #ifndef MOJO_PUBLIC_BINDINGS_CALLBACK_H_
12 #define MOJO_PUBLIC_BINDINGS_CALLBACK_H_
13
14 #include "mojo/public/bindings/lib/callback_internal.h"
15 #include "mojo/public/bindings/lib/shared_ptr.h"
16
17 namespace mojo {
18
19 template <typename Sig>
20 class Callback;
21
22 template <>
23 class Callback<void()> {
24  public:
25   struct Runnable {
26     virtual ~Runnable() {}
27     virtual void Run() const = 0;
28   };
29
30   Callback() {}
31
32   // The Callback assumes ownership of |runnable|.
33   explicit Callback(Runnable* runnable) : sink_(runnable) {}
34
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)) {}
39
40   void Run() const {
41     if (sink_.get())
42       sink_->Run();
43   }
44
45  private:
46   template <typename Sink>
47   struct Adapter : public Runnable {
48     explicit Adapter(const Sink& sink) : sink(sink) {}
49     virtual void Run() const MOJO_OVERRIDE {
50       sink.Run();
51     }
52     Sink sink;
53   };
54
55   internal::SharedPtr<Runnable> sink_;
56 };
57
58 template <typename A1>
59 class Callback<void(A1)> {
60  public:
61   struct Runnable {
62     virtual ~Runnable() {}
63     virtual void Run(
64         typename internal::Callback_ParamTraits<A1>::ForwardType a1) const = 0;
65   };
66
67   Callback() {}
68
69   // The Callback assumes ownership of |runnable|.
70   explicit Callback(Runnable* runnable) : sink_(runnable) {}
71
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)) {}
76
77   void Run(
78       typename internal::Callback_ParamTraits<A1>::ForwardType a1) const {
79     if (sink_.get())
80       sink_->Run(
81           internal::Callback_Forward(a1));
82   }
83
84  private:
85   template <typename Sink>
86   struct Adapter : public Runnable {
87     explicit Adapter(const Sink& sink) : sink(sink) {}
88     virtual void Run(
89         typename internal::Callback_ParamTraits<A1>::ForwardType a1) const
90             MOJO_OVERRIDE {
91       sink.Run(
92           internal::Callback_Forward(a1));
93     }
94     Sink sink;
95   };
96
97   internal::SharedPtr<Runnable> sink_;
98 };
99
100 template <typename A1, typename A2>
101 class Callback<void(A1, A2)> {
102  public:
103   struct Runnable {
104     virtual ~Runnable() {}
105     virtual void Run(
106         typename internal::Callback_ParamTraits<A1>::ForwardType a1,
107         typename internal::Callback_ParamTraits<A2>::ForwardType a2) const = 0;
108   };
109
110   Callback() {}
111
112   // The Callback assumes ownership of |runnable|.
113   explicit Callback(Runnable* runnable) : sink_(runnable) {}
114
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)) {}
119
120   void Run(
121       typename internal::Callback_ParamTraits<A1>::ForwardType a1,
122       typename internal::Callback_ParamTraits<A2>::ForwardType a2) const {
123     if (sink_.get())
124       sink_->Run(
125           internal::Callback_Forward(a1),
126           internal::Callback_Forward(a2));
127   }
128
129  private:
130   template <typename Sink>
131   struct Adapter : public Runnable {
132     explicit Adapter(const Sink& sink) : sink(sink) {}
133     virtual void Run(
134         typename internal::Callback_ParamTraits<A1>::ForwardType a1,
135         typename internal::Callback_ParamTraits<A2>::ForwardType a2) const
136             MOJO_OVERRIDE {
137       sink.Run(
138           internal::Callback_Forward(a1),
139           internal::Callback_Forward(a2));
140     }
141     Sink sink;
142   };
143
144   internal::SharedPtr<Runnable> sink_;
145 };
146
147 template <typename A1, typename A2, typename A3>
148 class Callback<void(A1, A2, A3)> {
149  public:
150   struct Runnable {
151     virtual ~Runnable() {}
152     virtual void Run(
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;
156   };
157
158   Callback() {}
159
160   // The Callback assumes ownership of |runnable|.
161   explicit Callback(Runnable* runnable) : sink_(runnable) {}
162
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)) {}
167
168   void Run(
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 {
172     if (sink_.get())
173       sink_->Run(
174           internal::Callback_Forward(a1),
175           internal::Callback_Forward(a2),
176           internal::Callback_Forward(a3));
177   }
178
179  private:
180   template <typename Sink>
181   struct Adapter : public Runnable {
182     explicit Adapter(const Sink& sink) : sink(sink) {}
183     virtual void Run(
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
187             MOJO_OVERRIDE {
188       sink.Run(
189           internal::Callback_Forward(a1),
190           internal::Callback_Forward(a2),
191           internal::Callback_Forward(a3));
192     }
193     Sink sink;
194   };
195
196   internal::SharedPtr<Runnable> sink_;
197 };
198
199 template <typename A1, typename A2, typename A3, typename A4>
200 class Callback<void(A1, A2, A3, A4)> {
201  public:
202   struct Runnable {
203     virtual ~Runnable() {}
204     virtual void Run(
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;
209   };
210
211   Callback() {}
212
213   // The Callback assumes ownership of |runnable|.
214   explicit Callback(Runnable* runnable) : sink_(runnable) {}
215
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)) {}
220
221   void Run(
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 {
226     if (sink_.get())
227       sink_->Run(
228           internal::Callback_Forward(a1),
229           internal::Callback_Forward(a2),
230           internal::Callback_Forward(a3),
231           internal::Callback_Forward(a4));
232   }
233
234  private:
235   template <typename Sink>
236   struct Adapter : public Runnable {
237     explicit Adapter(const Sink& sink) : sink(sink) {}
238     virtual void Run(
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
243             MOJO_OVERRIDE {
244       sink.Run(
245           internal::Callback_Forward(a1),
246           internal::Callback_Forward(a2),
247           internal::Callback_Forward(a3),
248           internal::Callback_Forward(a4));
249     }
250     Sink sink;
251   };
252
253   internal::SharedPtr<Runnable> sink_;
254 };
255
256 template <typename A1, typename A2, typename A3, typename A4, typename A5>
257 class Callback<void(A1, A2, A3, A4, A5)> {
258  public:
259   struct Runnable {
260     virtual ~Runnable() {}
261     virtual void Run(
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;
267   };
268
269   Callback() {}
270
271   // The Callback assumes ownership of |runnable|.
272   explicit Callback(Runnable* runnable) : sink_(runnable) {}
273
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)) {}
278
279   void Run(
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 {
285     if (sink_.get())
286       sink_->Run(
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));
292   }
293
294  private:
295   template <typename Sink>
296   struct Adapter : public Runnable {
297     explicit Adapter(const Sink& sink) : sink(sink) {}
298     virtual void Run(
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
304             MOJO_OVERRIDE {
305       sink.Run(
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));
311     }
312     Sink sink;
313   };
314
315   internal::SharedPtr<Runnable> sink_;
316 };
317
318 template <typename A1, typename A2, typename A3, typename A4, typename A5,
319     typename A6>
320 class Callback<void(A1, A2, A3, A4, A5, A6)> {
321  public:
322   struct Runnable {
323     virtual ~Runnable() {}
324     virtual void Run(
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;
331   };
332
333   Callback() {}
334
335   // The Callback assumes ownership of |runnable|.
336   explicit Callback(Runnable* runnable) : sink_(runnable) {}
337
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)) {}
342
343   void Run(
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 {
350     if (sink_.get())
351       sink_->Run(
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));
358   }
359
360  private:
361   template <typename Sink>
362   struct Adapter : public Runnable {
363     explicit Adapter(const Sink& sink) : sink(sink) {}
364     virtual void Run(
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
371             MOJO_OVERRIDE {
372       sink.Run(
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));
379     }
380     Sink sink;
381   };
382
383   internal::SharedPtr<Runnable> sink_;
384 };
385
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)> {
389  public:
390   struct Runnable {
391     virtual ~Runnable() {}
392     virtual void Run(
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;
400   };
401
402   Callback() {}
403
404   // The Callback assumes ownership of |runnable|.
405   explicit Callback(Runnable* runnable) : sink_(runnable) {}
406
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)) {}
411
412   void Run(
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 {
420     if (sink_.get())
421       sink_->Run(
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));
429   }
430
431  private:
432   template <typename Sink>
433   struct Adapter : public Runnable {
434     explicit Adapter(const Sink& sink) : sink(sink) {}
435     virtual void Run(
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
443             MOJO_OVERRIDE {
444       sink.Run(
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));
452     }
453     Sink sink;
454   };
455
456   internal::SharedPtr<Runnable> sink_;
457 };
458
459 }  // namespace mojo
460
461 #endif  // MOJO_PUBLIC_BINDINGS_CALLBACK_H_