diff options
author | ajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-27 01:25:59 +0000 |
---|---|---|
committer | ajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-27 01:25:59 +0000 |
commit | 054ac754be8bcdecd3f1a39a085f01ef5c5d379a (patch) | |
tree | e713bfa32a32f74e3bb7d93af58e08ced826c075 /base/bind_internal_win.h | |
parent | 8cf26423f5e01f1e25b66b126f9bf102b726b8ba (diff) | |
download | chromium_src-054ac754be8bcdecd3f1a39a085f01ef5c5d379a.zip chromium_src-054ac754be8bcdecd3f1a39a085f01ef5c5d379a.tar.gz chromium_src-054ac754be8bcdecd3f1a39a085f01ef5c5d379a.tar.bz2 |
Callback support for __fastcall and __stdcall functions.
Create FunctionTraits specializations that can unwrap function pointers that
are delcared with __fastcall and __stdcall on windows.
Only include these in the Windows build.
BUG=35223
TEST=new unittests
Review URL: http://codereview.chromium.org/6561004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76174 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/bind_internal_win.h')
-rw-r--r-- | base/bind_internal_win.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/base/bind_internal_win.h b/base/bind_internal_win.h new file mode 100644 index 0000000..dab8d51 --- /dev/null +++ b/base/bind_internal_win.h @@ -0,0 +1,128 @@ +// 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 FunctionTraits<> 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_ +#pragma once + +namespace base { +namespace internal { + +template <typename Sig> +struct FunctionTraits; + +// __stdcall Function: Arity 0. +template <typename R> +struct FunctionTraits<R(__stdcall *)()> { + typedef R (*NormalizedSig)(); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 0. +template <typename R> +struct FunctionTraits<R(__fastcall *)()> { + typedef R (*NormalizedSig)(); + typedef false_type IsMethod; +}; + +// __stdcall Function: Arity 1. +template <typename R, typename X1> +struct FunctionTraits<R(__stdcall *)(X1)> { + typedef R (*NormalizedSig)(X1); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 1. +template <typename R, typename X1> +struct FunctionTraits<R(__fastcall *)(X1)> { + typedef R (*NormalizedSig)(X1); + typedef false_type IsMethod; +}; + +// __stdcall Function: Arity 2. +template <typename R, typename X1, typename X2> +struct FunctionTraits<R(__stdcall *)(X1, X2)> { + typedef R (*NormalizedSig)(X1, X2); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 2. +template <typename R, typename X1, typename X2> +struct FunctionTraits<R(__fastcall *)(X1, X2)> { + typedef R (*NormalizedSig)(X1, X2); + typedef false_type IsMethod; +}; + +// __stdcall Function: Arity 3. +template <typename R, typename X1, typename X2, typename X3> +struct FunctionTraits<R(__stdcall *)(X1, X2, X3)> { + typedef R (*NormalizedSig)(X1, X2, X3); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 3. +template <typename R, typename X1, typename X2, typename X3> +struct FunctionTraits<R(__fastcall *)(X1, X2, X3)> { + typedef R (*NormalizedSig)(X1, X2, X3); + typedef false_type IsMethod; +}; + +// __stdcall Function: Arity 4. +template <typename R, typename X1, typename X2, typename X3, typename X4> +struct FunctionTraits<R(__stdcall *)(X1, X2, X3, X4)> { + typedef R (*NormalizedSig)(X1, X2, X3, X4); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 4. +template <typename R, typename X1, typename X2, typename X3, typename X4> +struct FunctionTraits<R(__fastcall *)(X1, X2, X3, X4)> { + typedef R (*NormalizedSig)(X1, X2, X3, X4); + typedef false_type IsMethod; +}; + +// __stdcall Function: Arity 5. +template <typename R, typename X1, typename X2, typename X3, typename X4, + typename X5> +struct FunctionTraits<R(__stdcall *)(X1, X2, X3, X4, X5)> { + typedef R (*NormalizedSig)(X1, X2, X3, X4, X5); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 5. +template <typename R, typename X1, typename X2, typename X3, typename X4, + typename X5> +struct FunctionTraits<R(__fastcall *)(X1, X2, X3, X4, X5)> { + typedef R (*NormalizedSig)(X1, X2, X3, X4, X5); + typedef false_type IsMethod; +}; + +// __stdcall Function: Arity 6. +template <typename R, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +struct FunctionTraits<R(__stdcall *)(X1, X2, X3, X4, X5, X6)> { + typedef R (*NormalizedSig)(X1, X2, X3, X4, X5, X6); + typedef false_type IsMethod; +}; + +// __fastcall Function: Arity 6. +template <typename R, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +struct FunctionTraits<R(__fastcall *)(X1, X2, X3, X4, X5, X6)> { + typedef R (*NormalizedSig)(X1, X2, X3, X4, X5, X6); + typedef false_type IsMethod; +}; + +} // namespace internal +} // namespace base + +#endif // BASE_BIND_INTERNAL_WIN_H_ |