1// This file was GENERATED by command:
2//     pump.py bind_internal_win.h.pump
3// DO NOT EDIT BY HAND!!!
4
5
6
7// Copyright (c) 2011 The Chromium Authors. All rights reserved.
8// Use of this source code is governed by a BSD-style license that can be
9// found in the LICENSE file.
10
11// Specializations of FunctionTraits<> for Windows specific calling
12// conventions.  Please see base/bind_internal.h for more info.
13
14#ifndef BASE_BIND_INTERNAL_WIN_H_
15#define BASE_BIND_INTERNAL_WIN_H_
16#pragma once
17
18namespace base {
19namespace internal {
20
21template <typename Sig>
22struct FunctionTraits;
23
24// __stdcall Function: Arity 0.
25template <typename R>
26struct FunctionTraits<R(__stdcall *)()> {
27  typedef R (*NormalizedSig)();
28  typedef false_type IsMethod;
29};
30
31// __fastcall Function: Arity 0.
32template <typename R>
33struct FunctionTraits<R(__fastcall *)()> {
34  typedef R (*NormalizedSig)();
35  typedef false_type IsMethod;
36};
37
38// __stdcall Function: Arity 1.
39template <typename R, typename X1>
40struct FunctionTraits<R(__stdcall *)(X1)> {
41  typedef R (*NormalizedSig)(X1);
42  typedef false_type IsMethod;
43  // Target type for each bound parameter.
44  typedef X1 B1;
45};
46
47// __fastcall Function: Arity 1.
48template <typename R, typename X1>
49struct FunctionTraits<R(__fastcall *)(X1)> {
50  typedef R (*NormalizedSig)(X1);
51  typedef false_type IsMethod;
52  // Target type for each bound parameter.
53  typedef X1 B1;
54};
55
56// __stdcall Function: Arity 2.
57template <typename R, typename X1, typename X2>
58struct FunctionTraits<R(__stdcall *)(X1, X2)> {
59  typedef R (*NormalizedSig)(X1, X2);
60  typedef false_type IsMethod;
61  // Target type for each bound parameter.
62  typedef X1 B1;
63  typedef X2 B2;
64};
65
66// __fastcall Function: Arity 2.
67template <typename R, typename X1, typename X2>
68struct FunctionTraits<R(__fastcall *)(X1, X2)> {
69  typedef R (*NormalizedSig)(X1, X2);
70  typedef false_type IsMethod;
71  // Target type for each bound parameter.
72  typedef X1 B1;
73  typedef X2 B2;
74};
75
76// __stdcall Function: Arity 3.
77template <typename R, typename X1, typename X2, typename X3>
78struct FunctionTraits<R(__stdcall *)(X1, X2, X3)> {
79  typedef R (*NormalizedSig)(X1, X2, X3);
80  typedef false_type IsMethod;
81  // Target type for each bound parameter.
82  typedef X1 B1;
83  typedef X2 B2;
84  typedef X3 B3;
85};
86
87// __fastcall Function: Arity 3.
88template <typename R, typename X1, typename X2, typename X3>
89struct FunctionTraits<R(__fastcall *)(X1, X2, X3)> {
90  typedef R (*NormalizedSig)(X1, X2, X3);
91  typedef false_type IsMethod;
92  // Target type for each bound parameter.
93  typedef X1 B1;
94  typedef X2 B2;
95  typedef X3 B3;
96};
97
98// __stdcall Function: Arity 4.
99template <typename R, typename X1, typename X2, typename X3, typename X4>
100struct FunctionTraits<R(__stdcall *)(X1, X2, X3, X4)> {
101  typedef R (*NormalizedSig)(X1, X2, X3, X4);
102  typedef false_type IsMethod;
103  // Target type for each bound parameter.
104  typedef X1 B1;
105  typedef X2 B2;
106  typedef X3 B3;
107  typedef X4 B4;
108};
109
110// __fastcall Function: Arity 4.
111template <typename R, typename X1, typename X2, typename X3, typename X4>
112struct FunctionTraits<R(__fastcall *)(X1, X2, X3, X4)> {
113  typedef R (*NormalizedSig)(X1, X2, X3, X4);
114  typedef false_type IsMethod;
115  // Target type for each bound parameter.
116  typedef X1 B1;
117  typedef X2 B2;
118  typedef X3 B3;
119  typedef X4 B4;
120};
121
122// __stdcall Function: Arity 5.
123template <typename R, typename X1, typename X2, typename X3, typename X4,
124    typename X5>
125struct FunctionTraits<R(__stdcall *)(X1, X2, X3, X4, X5)> {
126  typedef R (*NormalizedSig)(X1, X2, X3, X4, X5);
127  typedef false_type IsMethod;
128  // Target type for each bound parameter.
129  typedef X1 B1;
130  typedef X2 B2;
131  typedef X3 B3;
132  typedef X4 B4;
133  typedef X5 B5;
134};
135
136// __fastcall Function: Arity 5.
137template <typename R, typename X1, typename X2, typename X3, typename X4,
138    typename X5>
139struct FunctionTraits<R(__fastcall *)(X1, X2, X3, X4, X5)> {
140  typedef R (*NormalizedSig)(X1, X2, X3, X4, X5);
141  typedef false_type IsMethod;
142  // Target type for each bound parameter.
143  typedef X1 B1;
144  typedef X2 B2;
145  typedef X3 B3;
146  typedef X4 B4;
147  typedef X5 B5;
148};
149
150// __stdcall Function: Arity 6.
151template <typename R, typename X1, typename X2, typename X3, typename X4,
152    typename X5, typename X6>
153struct FunctionTraits<R(__stdcall *)(X1, X2, X3, X4, X5, X6)> {
154  typedef R (*NormalizedSig)(X1, X2, X3, X4, X5, X6);
155  typedef false_type IsMethod;
156  // Target type for each bound parameter.
157  typedef X1 B1;
158  typedef X2 B2;
159  typedef X3 B3;
160  typedef X4 B4;
161  typedef X5 B5;
162  typedef X6 B6;
163};
164
165// __fastcall Function: Arity 6.
166template <typename R, typename X1, typename X2, typename X3, typename X4,
167    typename X5, typename X6>
168struct FunctionTraits<R(__fastcall *)(X1, X2, X3, X4, X5, X6)> {
169  typedef R (*NormalizedSig)(X1, X2, X3, X4, X5, X6);
170  typedef false_type IsMethod;
171  // Target type for each bound parameter.
172  typedef X1 B1;
173  typedef X2 B2;
174  typedef X3 B3;
175  typedef X4 B4;
176  typedef X5 B5;
177  typedef X6 B6;
178};
179
180}  // namespace internal
181}  // namespace base
182
183#endif  // BASE_BIND_INTERNAL_WIN_H_
184