• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1$$ This is a pump file for generating file templates.  Pump is a python
2$$ script that is part of the Google Test suite of utilities.  Description
3$$ can be found here:
4$$
5$$ http://code.google.com/p/googletest/wiki/PumpManual
6$$
7
8$$ See comment for MAX_ARITY in base/bind.h.pump.
9$var MAX_ARITY = 7
10
11// Copyright (c) 2011 The Chromium Authors. All rights reserved.
12// Use of this source code is governed by a BSD-style license that can be
13// found in the LICENSE file.
14
15// Specializations of RunnableAdapter<> for Windows specific calling
16// conventions.  Please see base/bind_internal.h for more info.
17
18#ifndef BASE_BIND_INTERNAL_WIN_H_
19#define BASE_BIND_INTERNAL_WIN_H_
20
21// In the x64 architecture in Windows, __fastcall, __stdcall, etc, are all
22// the same as __cdecl which would turn the following specializations into
23// multiple definitions.
24#if !defined(ARCH_CPU_X86_64)
25
26namespace base {
27namespace internal {
28
29template <typename Functor>
30class RunnableAdapter;
31
32$range ARITY 0..MAX_ARITY
33$for ARITY [[
34$range ARG 1..ARITY
35
36// __stdcall Function: Arity $(ARITY).
37template <typename R[[]]
38$if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]>
39class RunnableAdapter<R(__stdcall *)($for ARG , [[A$(ARG)]])> {
40 public:
41  typedef R (RunType)($for ARG , [[A$(ARG)]]);
42
43  explicit RunnableAdapter(R(__stdcall *function)($for ARG , [[A$(ARG)]]))
44      : function_(function) {
45  }
46
47  R Run($for ARG , [[typename CallbackParamTraits<A$(ARG)>::ForwardType a$(ARG)]]) {
48    return function_($for ARG , [[a$(ARG)]]);
49  }
50
51 private:
52  R (__stdcall *function_)($for ARG , [[A$(ARG)]]);
53};
54
55// __fastcall Function: Arity $(ARITY).
56template <typename R[[]]
57$if ARITY > 0[[, ]] $for ARG , [[typename A$(ARG)]]>
58class RunnableAdapter<R(__fastcall *)($for ARG , [[A$(ARG)]])> {
59 public:
60  typedef R (RunType)($for ARG , [[A$(ARG)]]);
61
62  explicit RunnableAdapter(R(__fastcall *function)($for ARG , [[A$(ARG)]]))
63      : function_(function) {
64  }
65
66  R Run($for ARG , [[typename CallbackParamTraits<A$(ARG)>::ForwardType a$(ARG)]]) {
67    return function_($for ARG , [[a$(ARG)]]);
68  }
69
70 private:
71  R (__fastcall *function_)($for ARG , [[A$(ARG)]]);
72};
73
74]]  $$for ARITY
75
76}  // namespace internal
77}  // namespace base
78
79#endif  // !defined(ARCH_CPU_X86_64)
80
81#endif  // BASE_BIND_INTERNAL_WIN_H_
82