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