michael@0: // This file was GENERATED by command: michael@0: // pump.py bind_internal_win.h.pump michael@0: // DO NOT EDIT BY HAND!!! michael@0: michael@0: michael@0: // Copyright (c) 2011 The Chromium Authors. All rights reserved. michael@0: // Use of this source code is governed by a BSD-style license that can be michael@0: // found in the LICENSE file. michael@0: michael@0: // Specializations of RunnableAdapter<> for Windows specific calling michael@0: // conventions. Please see base/bind_internal.h for more info. michael@0: michael@0: #ifndef BASE_BIND_INTERNAL_WIN_H_ michael@0: #define BASE_BIND_INTERNAL_WIN_H_ michael@0: michael@0: // In the x64 architecture in Windows, __fastcall, __stdcall, etc, are all michael@0: // the same as __cdecl which would turn the following specializations into michael@0: // multiple definitions. michael@0: #if !defined(ARCH_CPU_X86_64) michael@0: michael@0: namespace base { michael@0: namespace internal { michael@0: michael@0: template michael@0: class RunnableAdapter; michael@0: michael@0: // __stdcall Function: Arity 0. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)()) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run() { michael@0: return function_(); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 0. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)()) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run() { michael@0: return function_(); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 1. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1) { michael@0: return function_(a1); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 1. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1) { michael@0: return function_(a1); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 2. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1, A2)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2) { michael@0: return function_(a1, a2); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1, A2); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 2. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1, A2)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2) { michael@0: return function_(a1, a2); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1, A2); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 3. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3) { michael@0: return function_(a1, a2, a3); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1, A2, A3); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 3. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3) { michael@0: return function_(a1, a2, a3); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1, A2, A3); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 4. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4) { michael@0: return function_(a1, a2, a3, a4); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1, A2, A3, A4); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 4. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4) { michael@0: return function_(a1, a2, a3, a4); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1, A2, A3, A4); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 5. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4, A5); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4, michael@0: typename CallbackParamTraits::ForwardType a5) { michael@0: return function_(a1, a2, a3, a4, a5); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1, A2, A3, A4, A5); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 5. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4, A5); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4, michael@0: typename CallbackParamTraits::ForwardType a5) { michael@0: return function_(a1, a2, a3, a4, a5); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1, A2, A3, A4, A5); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 6. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4, A5, A6); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5, A6)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4, michael@0: typename CallbackParamTraits::ForwardType a5, michael@0: typename CallbackParamTraits::ForwardType a6) { michael@0: return function_(a1, a2, a3, a4, a5, a6); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1, A2, A3, A4, A5, A6); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 6. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4, A5, A6); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5, A6)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4, michael@0: typename CallbackParamTraits::ForwardType a5, michael@0: typename CallbackParamTraits::ForwardType a6) { michael@0: return function_(a1, a2, a3, a4, a5, a6); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1, A2, A3, A4, A5, A6); michael@0: }; michael@0: michael@0: // __stdcall Function: Arity 7. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7); michael@0: michael@0: explicit RunnableAdapter(R(__stdcall *function)(A1, A2, A3, A4, A5, A6, A7)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4, michael@0: typename CallbackParamTraits::ForwardType a5, michael@0: typename CallbackParamTraits::ForwardType a6, michael@0: typename CallbackParamTraits::ForwardType a7) { michael@0: return function_(a1, a2, a3, a4, a5, a6, a7); michael@0: } michael@0: michael@0: private: michael@0: R (__stdcall *function_)(A1, A2, A3, A4, A5, A6, A7); michael@0: }; michael@0: michael@0: // __fastcall Function: Arity 7. michael@0: template michael@0: class RunnableAdapter { michael@0: public: michael@0: typedef R (RunType)(A1, A2, A3, A4, A5, A6, A7); michael@0: michael@0: explicit RunnableAdapter(R(__fastcall *function)(A1, A2, A3, A4, A5, A6, A7)) michael@0: : function_(function) { michael@0: } michael@0: michael@0: R Run(typename CallbackParamTraits::ForwardType a1, michael@0: typename CallbackParamTraits::ForwardType a2, michael@0: typename CallbackParamTraits::ForwardType a3, michael@0: typename CallbackParamTraits::ForwardType a4, michael@0: typename CallbackParamTraits::ForwardType a5, michael@0: typename CallbackParamTraits::ForwardType a6, michael@0: typename CallbackParamTraits::ForwardType a7) { michael@0: return function_(a1, a2, a3, a4, a5, a6, a7); michael@0: } michael@0: michael@0: private: michael@0: R (__fastcall *function_)(A1, A2, A3, A4, A5, A6, A7); michael@0: }; michael@0: michael@0: } // namespace internal michael@0: } // namespace base michael@0: michael@0: #endif // !defined(ARCH_CPU_X86_64) michael@0: michael@0: #endif // BASE_BIND_INTERNAL_WIN_H_