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