• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // This file was GENERATED by command:
2 //     pump.py bind_internal_win.h.pump
3 // DO NOT EDIT BY HAND!!!
4 
5 
6 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file.
9 
10 // Specializations of RunnableAdapter<> for Windows specific calling
11 // conventions.  Please see base/bind_internal.h for more info.
12 
13 #ifndef BASE_BIND_INTERNAL_WIN_H_
14 #define BASE_BIND_INTERNAL_WIN_H_
15 
16 // In the x64 architecture in Windows, __fastcall, __stdcall, etc, are all
17 // the same as __cdecl which would turn the following specializations into
18 // multiple definitions.
19 #if !defined(ARCH_CPU_X86_64)
20 
21 namespace base {
22 namespace internal {
23 
24 template <typename Functor>
25 class RunnableAdapter;
26 
27 // __stdcall Function: Arity 0.
28 template <typename R>
29 class RunnableAdapter<R(__stdcall *)()> {
30  public:
31   typedef R (RunType)();
32 
RunnableAdapter(R (__stdcall * function)())33   explicit RunnableAdapter(R(__stdcall *function)())
34       : function_(function) {
35   }
36 
Run()37   R Run() {
38     return function_();
39   }
40 
41  private:
42   R (__stdcall *function_)();
43 };
44 
45 // __fastcall Function: Arity 0.
46 template <typename R>
47 class RunnableAdapter<R(__fastcall *)()> {
48  public:
49   typedef R (RunType)();
50 
RunnableAdapter(R (__fastcall * function)())51   explicit RunnableAdapter(R(__fastcall *function)())
52       : function_(function) {
53   }
54 
Run()55   R Run() {
56     return function_();
57   }
58 
59  private:
60   R (__fastcall *function_)();
61 };
62 
63 // __stdcall Function: Arity 1.
64 template <typename R, typename A1>
65 class RunnableAdapter<R(__stdcall *)(A1)> {
66  public:
67   typedef R (RunType)(A1);
68 
RunnableAdapter(R (__stdcall * function)(A1))69   explicit RunnableAdapter(R(__stdcall *function)(A1))
70       : function_(function) {
71   }
72 
Run(typename CallbackParamTraits<A1>::ForwardType a1)73   R Run(typename CallbackParamTraits<A1>::ForwardType a1) {
74     return function_(a1);
75   }
76 
77  private:
78   R (__stdcall *function_)(A1);
79 };
80 
81 // __fastcall Function: Arity 1.
82 template <typename R, typename A1>
83 class RunnableAdapter<R(__fastcall *)(A1)> {
84  public:
85   typedef R (RunType)(A1);
86 
RunnableAdapter(R (__fastcall * function)(A1))87   explicit RunnableAdapter(R(__fastcall *function)(A1))
88       : function_(function) {
89   }
90 
Run(typename CallbackParamTraits<A1>::ForwardType a1)91   R Run(typename CallbackParamTraits<A1>::ForwardType a1) {
92     return function_(a1);
93   }
94 
95  private:
96   R (__fastcall *function_)(A1);
97 };
98 
99 // __stdcall Function: Arity 2.
100 template <typename R, typename A1, typename A2>
101 class RunnableAdapter<R(__stdcall *)(A1, A2)> {
102  public:
103   typedef R (RunType)(A1, A2);
104 
RunnableAdapter(R (__stdcall * function)(A1,A2))105   explicit RunnableAdapter(R(__stdcall *function)(A1, A2))
106       : function_(function) {
107   }
108 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2)109   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
110       typename CallbackParamTraits<A2>::ForwardType a2) {
111     return function_(a1, a2);
112   }
113 
114  private:
115   R (__stdcall *function_)(A1, A2);
116 };
117 
118 // __fastcall Function: Arity 2.
119 template <typename R, typename A1, typename A2>
120 class RunnableAdapter<R(__fastcall *)(A1, A2)> {
121  public:
122   typedef R (RunType)(A1, A2);
123 
RunnableAdapter(R (__fastcall * function)(A1,A2))124   explicit RunnableAdapter(R(__fastcall *function)(A1, A2))
125       : function_(function) {
126   }
127 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2)128   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
129       typename CallbackParamTraits<A2>::ForwardType a2) {
130     return function_(a1, a2);
131   }
132 
133  private:
134   R (__fastcall *function_)(A1, A2);
135 };
136 
137 // __stdcall Function: Arity 3.
138 template <typename R, typename A1, typename A2, typename A3>
139 class RunnableAdapter<R(__stdcall *)(A1, A2, A3)> {
140  public:
141   typedef R (RunType)(A1, A2, A3);
142 
RunnableAdapter(R (__stdcall * function)(A1,A2,A3))143   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3))
144       : function_(function) {
145   }
146 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3)147   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
148       typename CallbackParamTraits<A2>::ForwardType a2,
149       typename CallbackParamTraits<A3>::ForwardType a3) {
150     return function_(a1, a2, a3);
151   }
152 
153  private:
154   R (__stdcall *function_)(A1, A2, A3);
155 };
156 
157 // __fastcall Function: Arity 3.
158 template <typename R, typename A1, typename A2, typename A3>
159 class RunnableAdapter<R(__fastcall *)(A1, A2, A3)> {
160  public:
161   typedef R (RunType)(A1, A2, A3);
162 
RunnableAdapter(R (__fastcall * function)(A1,A2,A3))163   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3))
164       : function_(function) {
165   }
166 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3)167   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
168       typename CallbackParamTraits<A2>::ForwardType a2,
169       typename CallbackParamTraits<A3>::ForwardType a3) {
170     return function_(a1, a2, a3);
171   }
172 
173  private:
174   R (__fastcall *function_)(A1, A2, A3);
175 };
176 
177 // __stdcall Function: Arity 4.
178 template <typename R, typename A1, typename A2, typename A3, typename A4>
179 class RunnableAdapter<R(__stdcall *)(A1, A2, A3, A4)> {
180  public:
181   typedef R (RunType)(A1, A2, A3, A4);
182 
RunnableAdapter(R (__stdcall * function)(A1,A2,A3,A4))183   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4))
184       : function_(function) {
185   }
186 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4)187   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
188       typename CallbackParamTraits<A2>::ForwardType a2,
189       typename CallbackParamTraits<A3>::ForwardType a3,
190       typename CallbackParamTraits<A4>::ForwardType a4) {
191     return function_(a1, a2, a3, a4);
192   }
193 
194  private:
195   R (__stdcall *function_)(A1, A2, A3, A4);
196 };
197 
198 // __fastcall Function: Arity 4.
199 template <typename R, typename A1, typename A2, typename A3, typename A4>
200 class RunnableAdapter<R(__fastcall *)(A1, A2, A3, A4)> {
201  public:
202   typedef R (RunType)(A1, A2, A3, A4);
203 
RunnableAdapter(R (__fastcall * function)(A1,A2,A3,A4))204   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4))
205       : function_(function) {
206   }
207 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4)208   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
209       typename CallbackParamTraits<A2>::ForwardType a2,
210       typename CallbackParamTraits<A3>::ForwardType a3,
211       typename CallbackParamTraits<A4>::ForwardType a4) {
212     return function_(a1, a2, a3, a4);
213   }
214 
215  private:
216   R (__fastcall *function_)(A1, A2, A3, A4);
217 };
218 
219 // __stdcall Function: Arity 5.
220 template <typename R, typename A1, typename A2, typename A3, typename A4,
221     typename A5>
222 class RunnableAdapter<R(__stdcall *)(A1, A2, A3, A4, A5)> {
223  public:
224   typedef R (RunType)(A1, A2, A3, A4, A5);
225 
RunnableAdapter(R (__stdcall * function)(A1,A2,A3,A4,A5))226   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5))
227       : function_(function) {
228   }
229 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4,typename CallbackParamTraits<A5>::ForwardType a5)230   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
231       typename CallbackParamTraits<A2>::ForwardType a2,
232       typename CallbackParamTraits<A3>::ForwardType a3,
233       typename CallbackParamTraits<A4>::ForwardType a4,
234       typename CallbackParamTraits<A5>::ForwardType a5) {
235     return function_(a1, a2, a3, a4, a5);
236   }
237 
238  private:
239   R (__stdcall *function_)(A1, A2, A3, A4, A5);
240 };
241 
242 // __fastcall Function: Arity 5.
243 template <typename R, typename A1, typename A2, typename A3, typename A4,
244     typename A5>
245 class RunnableAdapter<R(__fastcall *)(A1, A2, A3, A4, A5)> {
246  public:
247   typedef R (RunType)(A1, A2, A3, A4, A5);
248 
RunnableAdapter(R (__fastcall * function)(A1,A2,A3,A4,A5))249   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5))
250       : function_(function) {
251   }
252 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4,typename CallbackParamTraits<A5>::ForwardType a5)253   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
254       typename CallbackParamTraits<A2>::ForwardType a2,
255       typename CallbackParamTraits<A3>::ForwardType a3,
256       typename CallbackParamTraits<A4>::ForwardType a4,
257       typename CallbackParamTraits<A5>::ForwardType a5) {
258     return function_(a1, a2, a3, a4, a5);
259   }
260 
261  private:
262   R (__fastcall *function_)(A1, A2, A3, A4, A5);
263 };
264 
265 // __stdcall Function: Arity 6.
266 template <typename R, typename A1, typename A2, typename A3, typename A4,
267     typename A5, typename A6>
268 class RunnableAdapter<R(__stdcall *)(A1, A2, A3, A4, A5, A6)> {
269  public:
270   typedef R (RunType)(A1, A2, A3, A4, A5, A6);
271 
RunnableAdapter(R (__stdcall * function)(A1,A2,A3,A4,A5,A6))272   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5, A6))
273       : function_(function) {
274   }
275 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4,typename CallbackParamTraits<A5>::ForwardType a5,typename CallbackParamTraits<A6>::ForwardType a6)276   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
277       typename CallbackParamTraits<A2>::ForwardType a2,
278       typename CallbackParamTraits<A3>::ForwardType a3,
279       typename CallbackParamTraits<A4>::ForwardType a4,
280       typename CallbackParamTraits<A5>::ForwardType a5,
281       typename CallbackParamTraits<A6>::ForwardType a6) {
282     return function_(a1, a2, a3, a4, a5, a6);
283   }
284 
285  private:
286   R (__stdcall *function_)(A1, A2, A3, A4, A5, A6);
287 };
288 
289 // __fastcall Function: Arity 6.
290 template <typename R, typename A1, typename A2, typename A3, typename A4,
291     typename A5, typename A6>
292 class RunnableAdapter<R(__fastcall *)(A1, A2, A3, A4, A5, A6)> {
293  public:
294   typedef R (RunType)(A1, A2, A3, A4, A5, A6);
295 
RunnableAdapter(R (__fastcall * function)(A1,A2,A3,A4,A5,A6))296   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5, A6))
297       : function_(function) {
298   }
299 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4,typename CallbackParamTraits<A5>::ForwardType a5,typename CallbackParamTraits<A6>::ForwardType a6)300   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
301       typename CallbackParamTraits<A2>::ForwardType a2,
302       typename CallbackParamTraits<A3>::ForwardType a3,
303       typename CallbackParamTraits<A4>::ForwardType a4,
304       typename CallbackParamTraits<A5>::ForwardType a5,
305       typename CallbackParamTraits<A6>::ForwardType a6) {
306     return function_(a1, a2, a3, a4, a5, a6);
307   }
308 
309  private:
310   R (__fastcall *function_)(A1, A2, A3, A4, A5, A6);
311 };
312 
313 // __stdcall Function: Arity 7.
314 template <typename R, typename A1, typename A2, typename A3, typename A4,
315     typename A5, typename A6, typename A7>
316 class RunnableAdapter<R(__stdcall *)(A1, A2, A3, A4, A5, A6, A7)> {
317  public:
318   typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7);
319 
RunnableAdapter(R (__stdcall * function)(A1,A2,A3,A4,A5,A6,A7))320   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5, A6, A7))
321       : function_(function) {
322   }
323 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4,typename CallbackParamTraits<A5>::ForwardType a5,typename CallbackParamTraits<A6>::ForwardType a6,typename CallbackParamTraits<A7>::ForwardType a7)324   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
325       typename CallbackParamTraits<A2>::ForwardType a2,
326       typename CallbackParamTraits<A3>::ForwardType a3,
327       typename CallbackParamTraits<A4>::ForwardType a4,
328       typename CallbackParamTraits<A5>::ForwardType a5,
329       typename CallbackParamTraits<A6>::ForwardType a6,
330       typename CallbackParamTraits<A7>::ForwardType a7) {
331     return function_(a1, a2, a3, a4, a5, a6, a7);
332   }
333 
334  private:
335   R (__stdcall *function_)(A1, A2, A3, A4, A5, A6, A7);
336 };
337 
338 // __fastcall Function: Arity 7.
339 template <typename R, typename A1, typename A2, typename A3, typename A4,
340     typename A5, typename A6, typename A7>
341 class RunnableAdapter<R(__fastcall *)(A1, A2, A3, A4, A5, A6, A7)> {
342  public:
343   typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7);
344 
RunnableAdapter(R (__fastcall * function)(A1,A2,A3,A4,A5,A6,A7))345   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5, A6, A7))
346       : function_(function) {
347   }
348 
Run(typename CallbackParamTraits<A1>::ForwardType a1,typename CallbackParamTraits<A2>::ForwardType a2,typename CallbackParamTraits<A3>::ForwardType a3,typename CallbackParamTraits<A4>::ForwardType a4,typename CallbackParamTraits<A5>::ForwardType a5,typename CallbackParamTraits<A6>::ForwardType a6,typename CallbackParamTraits<A7>::ForwardType a7)349   R Run(typename CallbackParamTraits<A1>::ForwardType a1,
350       typename CallbackParamTraits<A2>::ForwardType a2,
351       typename CallbackParamTraits<A3>::ForwardType a3,
352       typename CallbackParamTraits<A4>::ForwardType a4,
353       typename CallbackParamTraits<A5>::ForwardType a5,
354       typename CallbackParamTraits<A6>::ForwardType a6,
355       typename CallbackParamTraits<A7>::ForwardType a7) {
356     return function_(a1, a2, a3, a4, a5, a6, a7);
357   }
358 
359  private:
360   R (__fastcall *function_)(A1, A2, A3, A4, A5, A6, A7);
361 };
362 
363 }  // namespace internal
364 }  // namespace base
365 
366 #endif  // !defined(ARCH_CPU_X86_64)
367 
368 #endif  // BASE_BIND_INTERNAL_WIN_H_
369