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