1// This file was GENERATED by command:
2// pump.py gmock-generated-function-mockers.h.pump
3// DO NOT EDIT BY HAND!!!
4
5// Copyright 2007, Google Inc.
6// All rights reserved.
7//
8// Redistribution and use in source and binary forms, with or without
9// modification, are permitted provided that the following conditions are
10// met:
11//
12// * Redistributions of source code must retain the above copyright
13// notice, this list of conditions and the following disclaimer.
14// * Redistributions in binary form must reproduce the above
15// copyright notice, this list of conditions and the following disclaimer
16// in the documentation and/or other materials provided with the
17// distribution.
18// * Neither the name of Google Inc. nor the names of its
19// contributors may be used to endorse or promote products derived from
20// this software without specific prior written permission.
21//
22// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
34
35// Google Mock - a framework for writing C++ mock classes.
36//
37// This file implements function mockers of various arities.
38
39// GOOGLETEST_CM0002 DO NOT DELETE
40
41#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
42#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
43
44#include <functional>
45#include <utility>
46
47#include "gmock/gmock-spec-builders.h"
48#include "gmock/internal/gmock-internal-utils.h"
49
50namespace testing {
51namespace internal {
52// Removes the given pointer; this is a helper for the expectation setter method
53// for parameterless matchers.
54//
55// We want to make sure that the user cannot set a parameterless expectation on
56// overloaded methods, including methods which are overloaded on const. Example:
57//
58// class MockClass {
59// MOCK_METHOD0(GetName, string&());
60// MOCK_CONST_METHOD0(GetName, const string&());
61// };
62//
63// TEST() {
64// // This should be an error, as it's not clear which overload is expected.
65// EXPECT_CALL(mock, GetName).WillOnce(ReturnRef(value));
66// }
67//
68// Here are the generated expectation-setter methods:
69//
70// class MockClass {
71// // Overload 1
72// MockSpec<string&()> gmock_GetName() { ... }
73// // Overload 2. Declared const so that the compiler will generate an
74// // error when trying to resolve between this and overload 4 in
75// // 'gmock_GetName(WithoutMatchers(), nullptr)'.
76// MockSpec<string&()> gmock_GetName(
77// const WithoutMatchers&, const Function<string&()>*) const {
78// // Removes const from this, calls overload 1
79// return AdjustConstness_(this)->gmock_GetName();
80// }
81//
82// // Overload 3
83// const string& gmock_GetName() const { ... }
84// // Overload 4
85// MockSpec<const string&()> gmock_GetName(
86// const WithoutMatchers&, const Function<const string&()>*) const {
87// // Does not remove const, calls overload 3
88// return AdjustConstness_const(this)->gmock_GetName();
89// }
90// }
91//
92template <typename MockType>
93const MockType* AdjustConstness_const(const MockType* mock) {
94 return mock;
95}
96
97// Removes const from and returns the given pointer; this is a helper for the
98// expectation setter method for parameterless matchers.
99template <typename MockType>
100MockType* AdjustConstness_(const MockType* mock) {
101 return const_cast<MockType*>(mock);
102}
103
104} // namespace internal
105
106// The style guide prohibits "using" statements in a namespace scope
107// inside a header file. However, the FunctionMocker class template
108// is meant to be defined in the ::testing namespace. The following
109// line is just a trick for working around a bug in MSVC 8.0, which
110// cannot handle it if we define FunctionMocker in ::testing.
111using internal::FunctionMocker;
112
113// GMOCK_RESULT_(tn, F) expands to the result type of function type F.
114// We define this as a variadic macro in case F contains unprotected
115// commas (the same reason that we use variadic macros in other places
116// in this file).
117// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
118#define GMOCK_RESULT_(tn, ...) \
119 tn ::testing::internal::Function<__VA_ARGS__>::Result
120
121// The type of argument N of the given function type.
122// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
123#define GMOCK_ARG_(tn, N, ...) \
124 tn ::testing::internal::Function<__VA_ARGS__>::template Arg<N-1>::type
125
126// The matcher type for argument N of the given function type.
127// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
128#define GMOCK_MATCHER_(tn, N, ...) \
129 const ::testing::Matcher<GMOCK_ARG_(tn, N, __VA_ARGS__)>&
130
131// The variable for mocking the given method.
132// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
133#define GMOCK_MOCKER_(arity, constness, Method) \
134 GTEST_CONCAT_TOKEN_(gmock##constness##arity##_##Method##_, __LINE__)
135
136// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
137#define GMOCK_METHOD0_(tn, constness, ct, Method, ...) \
138 static_assert(0 == \
139 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
140 "MOCK_METHOD<N> must match argument count.");\
141 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
142 ) constness { \
143 GMOCK_MOCKER_(0, constness, Method).SetOwnerAndName(this, #Method); \
144 return GMOCK_MOCKER_(0, constness, Method).Invoke(); \
145 } \
146 ::testing::MockSpec<__VA_ARGS__> \
147 gmock_##Method() constness { \
148 GMOCK_MOCKER_(0, constness, Method).RegisterOwner(this); \
149 return GMOCK_MOCKER_(0, constness, Method).With(); \
150 } \
151 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
152 const ::testing::internal::WithoutMatchers&, \
153 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
154 return ::testing::internal::AdjustConstness_##constness(this)-> \
155 gmock_##Method(); \
156 } \
157 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(0, constness, \
158 Method)
159
160// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
161#define GMOCK_METHOD1_(tn, constness, ct, Method, ...) \
162 static_assert(1 == \
163 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
164 "MOCK_METHOD<N> must match argument count.");\
165 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
166 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1) constness { \
167 GMOCK_MOCKER_(1, constness, Method).SetOwnerAndName(this, #Method); \
168 return GMOCK_MOCKER_(1, constness, \
169 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
170 __VA_ARGS__)>(gmock_a1)); \
171 } \
172 ::testing::MockSpec<__VA_ARGS__> \
173 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1) constness { \
174 GMOCK_MOCKER_(1, constness, Method).RegisterOwner(this); \
175 return GMOCK_MOCKER_(1, constness, Method).With(gmock_a1); \
176 } \
177 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
178 const ::testing::internal::WithoutMatchers&, \
179 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
180 return ::testing::internal::AdjustConstness_##constness(this)-> \
181 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>()); \
182 } \
183 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(1, constness, \
184 Method)
185
186// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
187#define GMOCK_METHOD2_(tn, constness, ct, Method, ...) \
188 static_assert(2 == \
189 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
190 "MOCK_METHOD<N> must match argument count.");\
191 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
192 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
193 __VA_ARGS__) gmock_a2) constness { \
194 GMOCK_MOCKER_(2, constness, Method).SetOwnerAndName(this, #Method); \
195 return GMOCK_MOCKER_(2, constness, \
196 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
197 __VA_ARGS__)>(gmock_a1), \
198 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2)); \
199 } \
200 ::testing::MockSpec<__VA_ARGS__> \
201 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
202 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2) constness { \
203 GMOCK_MOCKER_(2, constness, Method).RegisterOwner(this); \
204 return GMOCK_MOCKER_(2, constness, Method).With(gmock_a1, gmock_a2); \
205 } \
206 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
207 const ::testing::internal::WithoutMatchers&, \
208 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
209 return ::testing::internal::AdjustConstness_##constness(this)-> \
210 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
211 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>()); \
212 } \
213 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(2, constness, \
214 Method)
215
216// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
217#define GMOCK_METHOD3_(tn, constness, ct, Method, ...) \
218 static_assert(3 == \
219 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
220 "MOCK_METHOD<N> must match argument count.");\
221 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
222 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
223 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, \
224 __VA_ARGS__) gmock_a3) constness { \
225 GMOCK_MOCKER_(3, constness, Method).SetOwnerAndName(this, #Method); \
226 return GMOCK_MOCKER_(3, constness, \
227 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
228 __VA_ARGS__)>(gmock_a1), \
229 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
230 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3)); \
231 } \
232 ::testing::MockSpec<__VA_ARGS__> \
233 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
234 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
235 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3) constness { \
236 GMOCK_MOCKER_(3, constness, Method).RegisterOwner(this); \
237 return GMOCK_MOCKER_(3, constness, Method).With(gmock_a1, gmock_a2, \
238 gmock_a3); \
239 } \
240 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
241 const ::testing::internal::WithoutMatchers&, \
242 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
243 return ::testing::internal::AdjustConstness_##constness(this)-> \
244 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
245 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
246 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>()); \
247 } \
248 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(3, constness, \
249 Method)
250
251// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
252#define GMOCK_METHOD4_(tn, constness, ct, Method, ...) \
253 static_assert(4 == \
254 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
255 "MOCK_METHOD<N> must match argument count.");\
256 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
257 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
258 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
259 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4) constness { \
260 GMOCK_MOCKER_(4, constness, Method).SetOwnerAndName(this, #Method); \
261 return GMOCK_MOCKER_(4, constness, \
262 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
263 __VA_ARGS__)>(gmock_a1), \
264 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
265 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
266 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4)); \
267 } \
268 ::testing::MockSpec<__VA_ARGS__> \
269 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
270 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
271 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
272 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4) constness { \
273 GMOCK_MOCKER_(4, constness, Method).RegisterOwner(this); \
274 return GMOCK_MOCKER_(4, constness, Method).With(gmock_a1, gmock_a2, \
275 gmock_a3, gmock_a4); \
276 } \
277 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
278 const ::testing::internal::WithoutMatchers&, \
279 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
280 return ::testing::internal::AdjustConstness_##constness(this)-> \
281 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
282 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
283 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
284 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>()); \
285 } \
286 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(4, constness, \
287 Method)
288
289// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
290#define GMOCK_METHOD5_(tn, constness, ct, Method, ...) \
291 static_assert(5 == \
292 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
293 "MOCK_METHOD<N> must match argument count.");\
294 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
295 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
296 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
297 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
298 __VA_ARGS__) gmock_a5) constness { \
299 GMOCK_MOCKER_(5, constness, Method).SetOwnerAndName(this, #Method); \
300 return GMOCK_MOCKER_(5, constness, \
301 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
302 __VA_ARGS__)>(gmock_a1), \
303 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
304 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
305 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
306 ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5)); \
307 } \
308 ::testing::MockSpec<__VA_ARGS__> \
309 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
310 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
311 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
312 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
313 GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5) constness { \
314 GMOCK_MOCKER_(5, constness, Method).RegisterOwner(this); \
315 return GMOCK_MOCKER_(5, constness, Method).With(gmock_a1, gmock_a2, \
316 gmock_a3, gmock_a4, gmock_a5); \
317 } \
318 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
319 const ::testing::internal::WithoutMatchers&, \
320 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
321 return ::testing::internal::AdjustConstness_##constness(this)-> \
322 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
323 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
324 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
325 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
326 ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>()); \
327 } \
328 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(5, constness, \
329 Method)
330
331// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
332#define GMOCK_METHOD6_(tn, constness, ct, Method, ...) \
333 static_assert(6 == \
334 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
335 "MOCK_METHOD<N> must match argument count.");\
336 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
337 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
338 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
339 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
340 __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, \
341 __VA_ARGS__) gmock_a6) constness { \
342 GMOCK_MOCKER_(6, constness, Method).SetOwnerAndName(this, #Method); \
343 return GMOCK_MOCKER_(6, constness, \
344 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
345 __VA_ARGS__)>(gmock_a1), \
346 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
347 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
348 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
349 ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
350 ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6)); \
351 } \
352 ::testing::MockSpec<__VA_ARGS__> \
353 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
354 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
355 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
356 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
357 GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
358 GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6) constness { \
359 GMOCK_MOCKER_(6, constness, Method).RegisterOwner(this); \
360 return GMOCK_MOCKER_(6, constness, Method).With(gmock_a1, gmock_a2, \
361 gmock_a3, gmock_a4, gmock_a5, gmock_a6); \
362 } \
363 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
364 const ::testing::internal::WithoutMatchers&, \
365 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
366 return ::testing::internal::AdjustConstness_##constness(this)-> \
367 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
368 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
369 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
370 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
371 ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
372 ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>()); \
373 } \
374 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(6, constness, \
375 Method)
376
377// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
378#define GMOCK_METHOD7_(tn, constness, ct, Method, ...) \
379 static_assert(7 == \
380 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
381 "MOCK_METHOD<N> must match argument count.");\
382 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
383 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
384 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
385 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
386 __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
387 GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7) constness { \
388 GMOCK_MOCKER_(7, constness, Method).SetOwnerAndName(this, #Method); \
389 return GMOCK_MOCKER_(7, constness, \
390 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
391 __VA_ARGS__)>(gmock_a1), \
392 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
393 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
394 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
395 ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
396 ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
397 ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7)); \
398 } \
399 ::testing::MockSpec<__VA_ARGS__> \
400 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
401 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
402 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
403 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
404 GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
405 GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
406 GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7) constness { \
407 GMOCK_MOCKER_(7, constness, Method).RegisterOwner(this); \
408 return GMOCK_MOCKER_(7, constness, Method).With(gmock_a1, gmock_a2, \
409 gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7); \
410 } \
411 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
412 const ::testing::internal::WithoutMatchers&, \
413 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
414 return ::testing::internal::AdjustConstness_##constness(this)-> \
415 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
416 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
417 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
418 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
419 ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
420 ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
421 ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>()); \
422 } \
423 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(7, constness, \
424 Method)
425
426// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
427#define GMOCK_METHOD8_(tn, constness, ct, Method, ...) \
428 static_assert(8 == \
429 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
430 "MOCK_METHOD<N> must match argument count.");\
431 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
432 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
433 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
434 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
435 __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
436 GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \
437 __VA_ARGS__) gmock_a8) constness { \
438 GMOCK_MOCKER_(8, constness, Method).SetOwnerAndName(this, #Method); \
439 return GMOCK_MOCKER_(8, constness, \
440 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
441 __VA_ARGS__)>(gmock_a1), \
442 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
443 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
444 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
445 ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
446 ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
447 ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7), \
448 ::std::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(gmock_a8)); \
449 } \
450 ::testing::MockSpec<__VA_ARGS__> \
451 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
452 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
453 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
454 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
455 GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
456 GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
457 GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \
458 GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8) constness { \
459 GMOCK_MOCKER_(8, constness, Method).RegisterOwner(this); \
460 return GMOCK_MOCKER_(8, constness, Method).With(gmock_a1, gmock_a2, \
461 gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8); \
462 } \
463 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
464 const ::testing::internal::WithoutMatchers&, \
465 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
466 return ::testing::internal::AdjustConstness_##constness(this)-> \
467 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
468 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
469 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
470 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
471 ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
472 ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
473 ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(), \
474 ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>()); \
475 } \
476 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(8, constness, \
477 Method)
478
479// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
480#define GMOCK_METHOD9_(tn, constness, ct, Method, ...) \
481 static_assert(9 == \
482 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
483 "MOCK_METHOD<N> must match argument count.");\
484 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
485 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
486 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
487 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
488 __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
489 GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \
490 __VA_ARGS__) gmock_a8, GMOCK_ARG_(tn, 9, \
491 __VA_ARGS__) gmock_a9) constness { \
492 GMOCK_MOCKER_(9, constness, Method).SetOwnerAndName(this, #Method); \
493 return GMOCK_MOCKER_(9, constness, \
494 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
495 __VA_ARGS__)>(gmock_a1), \
496 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
497 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
498 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
499 ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
500 ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
501 ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7), \
502 ::std::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(gmock_a8), \
503 ::std::forward<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(gmock_a9)); \
504 } \
505 ::testing::MockSpec<__VA_ARGS__> \
506 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
507 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
508 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
509 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
510 GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
511 GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
512 GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \
513 GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8, \
514 GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9) constness { \
515 GMOCK_MOCKER_(9, constness, Method).RegisterOwner(this); \
516 return GMOCK_MOCKER_(9, constness, Method).With(gmock_a1, gmock_a2, \
517 gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, \
518 gmock_a9); \
519 } \
520 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
521 const ::testing::internal::WithoutMatchers&, \
522 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
523 return ::testing::internal::AdjustConstness_##constness(this)-> \
524 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
525 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
526 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
527 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
528 ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
529 ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
530 ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(), \
531 ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(), \
532 ::testing::A<GMOCK_ARG_(tn, 9, __VA_ARGS__)>()); \
533 } \
534 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(9, constness, \
535 Method)
536
537// INTERNAL IMPLEMENTATION - DON'T USE IN USER CODE!!!
538#define GMOCK_METHOD10_(tn, constness, ct, Method, ...) \
539 static_assert(10 == \
540 ::testing::internal::Function<__VA_ARGS__>::ArgumentCount, \
541 "MOCK_METHOD<N> must match argument count.");\
542 GMOCK_RESULT_(tn, __VA_ARGS__) ct Method( \
543 GMOCK_ARG_(tn, 1, __VA_ARGS__) gmock_a1, GMOCK_ARG_(tn, 2, \
544 __VA_ARGS__) gmock_a2, GMOCK_ARG_(tn, 3, __VA_ARGS__) gmock_a3, \
545 GMOCK_ARG_(tn, 4, __VA_ARGS__) gmock_a4, GMOCK_ARG_(tn, 5, \
546 __VA_ARGS__) gmock_a5, GMOCK_ARG_(tn, 6, __VA_ARGS__) gmock_a6, \
547 GMOCK_ARG_(tn, 7, __VA_ARGS__) gmock_a7, GMOCK_ARG_(tn, 8, \
548 __VA_ARGS__) gmock_a8, GMOCK_ARG_(tn, 9, __VA_ARGS__) gmock_a9, \
549 GMOCK_ARG_(tn, 10, __VA_ARGS__) gmock_a10) constness { \
550 GMOCK_MOCKER_(10, constness, Method).SetOwnerAndName(this, #Method); \
551 return GMOCK_MOCKER_(10, constness, \
552 Method).Invoke(::std::forward<GMOCK_ARG_(tn, 1, \
553 __VA_ARGS__)>(gmock_a1), \
554 ::std::forward<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(gmock_a2), \
555 ::std::forward<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(gmock_a3), \
556 ::std::forward<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(gmock_a4), \
557 ::std::forward<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(gmock_a5), \
558 ::std::forward<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(gmock_a6), \
559 ::std::forward<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(gmock_a7), \
560 ::std::forward<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(gmock_a8), \
561 ::std::forward<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(gmock_a9), \
562 ::std::forward<GMOCK_ARG_(tn, 10, __VA_ARGS__)>(gmock_a10)); \
563 } \
564 ::testing::MockSpec<__VA_ARGS__> \
565 gmock_##Method(GMOCK_MATCHER_(tn, 1, __VA_ARGS__) gmock_a1, \
566 GMOCK_MATCHER_(tn, 2, __VA_ARGS__) gmock_a2, \
567 GMOCK_MATCHER_(tn, 3, __VA_ARGS__) gmock_a3, \
568 GMOCK_MATCHER_(tn, 4, __VA_ARGS__) gmock_a4, \
569 GMOCK_MATCHER_(tn, 5, __VA_ARGS__) gmock_a5, \
570 GMOCK_MATCHER_(tn, 6, __VA_ARGS__) gmock_a6, \
571 GMOCK_MATCHER_(tn, 7, __VA_ARGS__) gmock_a7, \
572 GMOCK_MATCHER_(tn, 8, __VA_ARGS__) gmock_a8, \
573 GMOCK_MATCHER_(tn, 9, __VA_ARGS__) gmock_a9, \
574 GMOCK_MATCHER_(tn, 10, \
575 __VA_ARGS__) gmock_a10) constness { \
576 GMOCK_MOCKER_(10, constness, Method).RegisterOwner(this); \
577 return GMOCK_MOCKER_(10, constness, Method).With(gmock_a1, gmock_a2, \
578 gmock_a3, gmock_a4, gmock_a5, gmock_a6, gmock_a7, gmock_a8, gmock_a9, \
579 gmock_a10); \
580 } \
581 ::testing::MockSpec<__VA_ARGS__> gmock_##Method( \
582 const ::testing::internal::WithoutMatchers&, \
583 constness ::testing::internal::Function<__VA_ARGS__>* ) const { \
584 return ::testing::internal::AdjustConstness_##constness(this)-> \
585 gmock_##Method(::testing::A<GMOCK_ARG_(tn, 1, __VA_ARGS__)>(), \
586 ::testing::A<GMOCK_ARG_(tn, 2, __VA_ARGS__)>(), \
587 ::testing::A<GMOCK_ARG_(tn, 3, __VA_ARGS__)>(), \
588 ::testing::A<GMOCK_ARG_(tn, 4, __VA_ARGS__)>(), \
589 ::testing::A<GMOCK_ARG_(tn, 5, __VA_ARGS__)>(), \
590 ::testing::A<GMOCK_ARG_(tn, 6, __VA_ARGS__)>(), \
591 ::testing::A<GMOCK_ARG_(tn, 7, __VA_ARGS__)>(), \
592 ::testing::A<GMOCK_ARG_(tn, 8, __VA_ARGS__)>(), \
593 ::testing::A<GMOCK_ARG_(tn, 9, __VA_ARGS__)>(), \
594 ::testing::A<GMOCK_ARG_(tn, 10, __VA_ARGS__)>()); \
595 } \
596 mutable ::testing::FunctionMocker<__VA_ARGS__> GMOCK_MOCKER_(10, constness, \
597 Method)
598
599#define MOCK_METHOD0(m, ...) GMOCK_METHOD0_(, , , m, __VA_ARGS__)
600#define MOCK_METHOD1(m, ...) GMOCK_METHOD1_(, , , m, __VA_ARGS__)
601#define MOCK_METHOD2(m, ...) GMOCK_METHOD2_(, , , m, __VA_ARGS__)
602#define MOCK_METHOD3(m, ...) GMOCK_METHOD3_(, , , m, __VA_ARGS__)
603#define MOCK_METHOD4(m, ...) GMOCK_METHOD4_(, , , m, __VA_ARGS__)
604#define MOCK_METHOD5(m, ...) GMOCK_METHOD5_(, , , m, __VA_ARGS__)
605#define MOCK_METHOD6(m, ...) GMOCK_METHOD6_(, , , m, __VA_ARGS__)
606#define MOCK_METHOD7(m, ...) GMOCK_METHOD7_(, , , m, __VA_ARGS__)
607#define MOCK_METHOD8(m, ...) GMOCK_METHOD8_(, , , m, __VA_ARGS__)
608#define MOCK_METHOD9(m, ...) GMOCK_METHOD9_(, , , m, __VA_ARGS__)
609#define MOCK_METHOD10(m, ...) GMOCK_METHOD10_(, , , m, __VA_ARGS__)
610
611#define MOCK_CONST_METHOD0(m, ...) GMOCK_METHOD0_(, const, , m, __VA_ARGS__)
612#define MOCK_CONST_METHOD1(m, ...) GMOCK_METHOD1_(, const, , m, __VA_ARGS__)
613#define MOCK_CONST_METHOD2(m, ...) GMOCK_METHOD2_(, const, , m, __VA_ARGS__)
614#define MOCK_CONST_METHOD3(m, ...) GMOCK_METHOD3_(, const, , m, __VA_ARGS__)
615#define MOCK_CONST_METHOD4(m, ...) GMOCK_METHOD4_(, const, , m, __VA_ARGS__)
616#define MOCK_CONST_METHOD5(m, ...) GMOCK_METHOD5_(, const, , m, __VA_ARGS__)
617#define MOCK_CONST_METHOD6(m, ...) GMOCK_METHOD6_(, const, , m, __VA_ARGS__)
618#define MOCK_CONST_METHOD7(m, ...) GMOCK_METHOD7_(, const, , m, __VA_ARGS__)
619#define MOCK_CONST_METHOD8(m, ...) GMOCK_METHOD8_(, const, , m, __VA_ARGS__)
620#define MOCK_CONST_METHOD9(m, ...) GMOCK_METHOD9_(, const, , m, __VA_ARGS__)
621#define MOCK_CONST_METHOD10(m, ...) GMOCK_METHOD10_(, const, , m, __VA_ARGS__)
622
623#define MOCK_METHOD0_T(m, ...) GMOCK_METHOD0_(typename, , , m, __VA_ARGS__)
624#define MOCK_METHOD1_T(m, ...) GMOCK_METHOD1_(typename, , , m, __VA_ARGS__)
625#define MOCK_METHOD2_T(m, ...) GMOCK_METHOD2_(typename, , , m, __VA_ARGS__)
626#define MOCK_METHOD3_T(m, ...) GMOCK_METHOD3_(typename, , , m, __VA_ARGS__)
627#define MOCK_METHOD4_T(m, ...) GMOCK_METHOD4_(typename, , , m, __VA_ARGS__)
628#define MOCK_METHOD5_T(m, ...) GMOCK_METHOD5_(typename, , , m, __VA_ARGS__)
629#define MOCK_METHOD6_T(m, ...) GMOCK_METHOD6_(typename, , , m, __VA_ARGS__)
630#define MOCK_METHOD7_T(m, ...) GMOCK_METHOD7_(typename, , , m, __VA_ARGS__)
631#define MOCK_METHOD8_T(m, ...) GMOCK_METHOD8_(typename, , , m, __VA_ARGS__)
632#define MOCK_METHOD9_T(m, ...) GMOCK_METHOD9_(typename, , , m, __VA_ARGS__)
633#define MOCK_METHOD10_T(m, ...) GMOCK_METHOD10_(typename, , , m, __VA_ARGS__)
634
635#define MOCK_CONST_METHOD0_T(m, ...) \
636 GMOCK_METHOD0_(typename, const, , m, __VA_ARGS__)
637#define MOCK_CONST_METHOD1_T(m, ...) \
638 GMOCK_METHOD1_(typename, const, , m, __VA_ARGS__)
639#define MOCK_CONST_METHOD2_T(m, ...) \
640 GMOCK_METHOD2_(typename, const, , m, __VA_ARGS__)
641#define MOCK_CONST_METHOD3_T(m, ...) \
642 GMOCK_METHOD3_(typename, const, , m, __VA_ARGS__)
643#define MOCK_CONST_METHOD4_T(m, ...) \
644 GMOCK_METHOD4_(typename, const, , m, __VA_ARGS__)
645#define MOCK_CONST_METHOD5_T(m, ...) \
646 GMOCK_METHOD5_(typename, const, , m, __VA_ARGS__)
647#define MOCK_CONST_METHOD6_T(m, ...) \
648 GMOCK_METHOD6_(typename, const, , m, __VA_ARGS__)
649#define MOCK_CONST_METHOD7_T(m, ...) \
650 GMOCK_METHOD7_(typename, const, , m, __VA_ARGS__)
651#define MOCK_CONST_METHOD8_T(m, ...) \
652 GMOCK_METHOD8_(typename, const, , m, __VA_ARGS__)
653#define MOCK_CONST_METHOD9_T(m, ...) \
654 GMOCK_METHOD9_(typename, const, , m, __VA_ARGS__)
655#define MOCK_CONST_METHOD10_T(m, ...) \
656 GMOCK_METHOD10_(typename, const, , m, __VA_ARGS__)
657
658#define MOCK_METHOD0_WITH_CALLTYPE(ct, m, ...) \
659 GMOCK_METHOD0_(, , ct, m, __VA_ARGS__)
660#define MOCK_METHOD1_WITH_CALLTYPE(ct, m, ...) \
661 GMOCK_METHOD1_(, , ct, m, __VA_ARGS__)
662#define MOCK_METHOD2_WITH_CALLTYPE(ct, m, ...) \
663 GMOCK_METHOD2_(, , ct, m, __VA_ARGS__)
664#define MOCK_METHOD3_WITH_CALLTYPE(ct, m, ...) \
665 GMOCK_METHOD3_(, , ct, m, __VA_ARGS__)
666#define MOCK_METHOD4_WITH_CALLTYPE(ct, m, ...) \
667 GMOCK_METHOD4_(, , ct, m, __VA_ARGS__)
668#define MOCK_METHOD5_WITH_CALLTYPE(ct, m, ...) \
669 GMOCK_METHOD5_(, , ct, m, __VA_ARGS__)
670#define MOCK_METHOD6_WITH_CALLTYPE(ct, m, ...) \
671 GMOCK_METHOD6_(, , ct, m, __VA_ARGS__)
672#define MOCK_METHOD7_WITH_CALLTYPE(ct, m, ...) \
673 GMOCK_METHOD7_(, , ct, m, __VA_ARGS__)
674#define MOCK_METHOD8_WITH_CALLTYPE(ct, m, ...) \
675 GMOCK_METHOD8_(, , ct, m, __VA_ARGS__)
676#define MOCK_METHOD9_WITH_CALLTYPE(ct, m, ...) \
677 GMOCK_METHOD9_(, , ct, m, __VA_ARGS__)
678#define MOCK_METHOD10_WITH_CALLTYPE(ct, m, ...) \
679 GMOCK_METHOD10_(, , ct, m, __VA_ARGS__)
680
681#define MOCK_CONST_METHOD0_WITH_CALLTYPE(ct, m, ...) \
682 GMOCK_METHOD0_(, const, ct, m, __VA_ARGS__)
683#define MOCK_CONST_METHOD1_WITH_CALLTYPE(ct, m, ...) \
684 GMOCK_METHOD1_(, const, ct, m, __VA_ARGS__)
685#define MOCK_CONST_METHOD2_WITH_CALLTYPE(ct, m, ...) \
686 GMOCK_METHOD2_(, const, ct, m, __VA_ARGS__)
687#define MOCK_CONST_METHOD3_WITH_CALLTYPE(ct, m, ...) \
688 GMOCK_METHOD3_(, const, ct, m, __VA_ARGS__)
689#define MOCK_CONST_METHOD4_WITH_CALLTYPE(ct, m, ...) \
690 GMOCK_METHOD4_(, const, ct, m, __VA_ARGS__)
691#define MOCK_CONST_METHOD5_WITH_CALLTYPE(ct, m, ...) \
692 GMOCK_METHOD5_(, const, ct, m, __VA_ARGS__)
693#define MOCK_CONST_METHOD6_WITH_CALLTYPE(ct, m, ...) \
694 GMOCK_METHOD6_(, const, ct, m, __VA_ARGS__)
695#define MOCK_CONST_METHOD7_WITH_CALLTYPE(ct, m, ...) \
696 GMOCK_METHOD7_(, const, ct, m, __VA_ARGS__)
697#define MOCK_CONST_METHOD8_WITH_CALLTYPE(ct, m, ...) \
698 GMOCK_METHOD8_(, const, ct, m, __VA_ARGS__)
699#define MOCK_CONST_METHOD9_WITH_CALLTYPE(ct, m, ...) \
700 GMOCK_METHOD9_(, const, ct, m, __VA_ARGS__)
701#define MOCK_CONST_METHOD10_WITH_CALLTYPE(ct, m, ...) \
702 GMOCK_METHOD10_(, const, ct, m, __VA_ARGS__)
703
704#define MOCK_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
705 GMOCK_METHOD0_(typename, , ct, m, __VA_ARGS__)
706#define MOCK_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
707 GMOCK_METHOD1_(typename, , ct, m, __VA_ARGS__)
708#define MOCK_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
709 GMOCK_METHOD2_(typename, , ct, m, __VA_ARGS__)
710#define MOCK_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
711 GMOCK_METHOD3_(typename, , ct, m, __VA_ARGS__)
712#define MOCK_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
713 GMOCK_METHOD4_(typename, , ct, m, __VA_ARGS__)
714#define MOCK_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
715 GMOCK_METHOD5_(typename, , ct, m, __VA_ARGS__)
716#define MOCK_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
717 GMOCK_METHOD6_(typename, , ct, m, __VA_ARGS__)
718#define MOCK_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
719 GMOCK_METHOD7_(typename, , ct, m, __VA_ARGS__)
720#define MOCK_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
721 GMOCK_METHOD8_(typename, , ct, m, __VA_ARGS__)
722#define MOCK_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
723 GMOCK_METHOD9_(typename, , ct, m, __VA_ARGS__)
724#define MOCK_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
725 GMOCK_METHOD10_(typename, , ct, m, __VA_ARGS__)
726
727#define MOCK_CONST_METHOD0_T_WITH_CALLTYPE(ct, m, ...) \
728 GMOCK_METHOD0_(typename, const, ct, m, __VA_ARGS__)
729#define MOCK_CONST_METHOD1_T_WITH_CALLTYPE(ct, m, ...) \
730 GMOCK_METHOD1_(typename, const, ct, m, __VA_ARGS__)
731#define MOCK_CONST_METHOD2_T_WITH_CALLTYPE(ct, m, ...) \
732 GMOCK_METHOD2_(typename, const, ct, m, __VA_ARGS__)
733#define MOCK_CONST_METHOD3_T_WITH_CALLTYPE(ct, m, ...) \
734 GMOCK_METHOD3_(typename, const, ct, m, __VA_ARGS__)
735#define MOCK_CONST_METHOD4_T_WITH_CALLTYPE(ct, m, ...) \
736 GMOCK_METHOD4_(typename, const, ct, m, __VA_ARGS__)
737#define MOCK_CONST_METHOD5_T_WITH_CALLTYPE(ct, m, ...) \
738 GMOCK_METHOD5_(typename, const, ct, m, __VA_ARGS__)
739#define MOCK_CONST_METHOD6_T_WITH_CALLTYPE(ct, m, ...) \
740 GMOCK_METHOD6_(typename, const, ct, m, __VA_ARGS__)
741#define MOCK_CONST_METHOD7_T_WITH_CALLTYPE(ct, m, ...) \
742 GMOCK_METHOD7_(typename, const, ct, m, __VA_ARGS__)
743#define MOCK_CONST_METHOD8_T_WITH_CALLTYPE(ct, m, ...) \
744 GMOCK_METHOD8_(typename, const, ct, m, __VA_ARGS__)
745#define MOCK_CONST_METHOD9_T_WITH_CALLTYPE(ct, m, ...) \
746 GMOCK_METHOD9_(typename, const, ct, m, __VA_ARGS__)
747#define MOCK_CONST_METHOD10_T_WITH_CALLTYPE(ct, m, ...) \
748 GMOCK_METHOD10_(typename, const, ct, m, __VA_ARGS__)
749
750} // namespace testing
751
752#endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_FUNCTION_MOCKERS_H_
753