Home | History | Annotate | Download | only in base
      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 
     33   explicit RunnableAdapter(R(__stdcall *function)())
     34       : function_(function) {
     35   }
     36 
     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 
     51   explicit RunnableAdapter(R(__fastcall *function)())
     52       : function_(function) {
     53   }
     54 
     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 
     69   explicit RunnableAdapter(R(__stdcall *function)(A1))
     70       : function_(function) {
     71   }
     72 
     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 
     87   explicit RunnableAdapter(R(__fastcall *function)(A1))
     88       : function_(function) {
     89   }
     90 
     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 
    105   explicit RunnableAdapter(R(__stdcall *function)(A1, A2))
    106       : function_(function) {
    107   }
    108 
    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 
    124   explicit RunnableAdapter(R(__fastcall *function)(A1, A2))
    125       : function_(function) {
    126   }
    127 
    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 
    143   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3))
    144       : function_(function) {
    145   }
    146 
    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 
    163   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3))
    164       : function_(function) {
    165   }
    166 
    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 
    183   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4))
    184       : function_(function) {
    185   }
    186 
    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 
    204   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4))
    205       : function_(function) {
    206   }
    207 
    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 
    226   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5))
    227       : function_(function) {
    228   }
    229 
    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 
    249   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5))
    250       : function_(function) {
    251   }
    252 
    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 
    272   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5, A6))
    273       : function_(function) {
    274   }
    275 
    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 
    296   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5, A6))
    297       : function_(function) {
    298   }
    299 
    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 
    320   explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5, A6, A7))
    321       : function_(function) {
    322   }
    323 
    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 
    345   explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5, A6, A7))
    346       : function_(function) {
    347   }
    348 
    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