1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/webrtc/trunk/testing/gmock_mutant.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,4995 @@ 1.4 +// Copyright (c) 2011 The Chromium Authors. All rights reserved. 1.5 +// Use of this source code is governed by a BSD-style license that can be 1.6 +// found in the LICENSE file. 1.7 + 1.8 +// This file automatically generated by testing/generate_gmock_mutant.py. 1.9 +// DO NOT EDIT. 1.10 + 1.11 +#ifndef TESTING_GMOCK_MUTANT_H_ 1.12 +#define TESTING_GMOCK_MUTANT_H_ 1.13 + 1.14 +// The intention of this file is to make possible using GMock actions in 1.15 +// all of its syntactic beauty. Classes and helper functions can be used as 1.16 +// more generic variants of Task and Callback classes (see base/task.h) 1.17 +// Mutant supports both pre-bound arguments (like Task) and call-time 1.18 +// arguments (like Callback) - hence the name. :-) 1.19 +// 1.20 +// DispatchToMethod/Function supports two sets of arguments: pre-bound (P) and 1.21 +// call-time (C). The arguments as well as the return type are templatized. 1.22 +// DispatchToMethod/Function will also try to call the selected method or 1.23 +// function even if provided pre-bound arguments does not match exactly with 1.24 +// the function signature hence the X1, X2 ... XN parameters in CreateFunctor. 1.25 +// DispatchToMethod will try to invoke method that may not belong to the 1.26 +// object's class itself but to the object's class base class. 1.27 +// 1.28 +// Additionally you can bind the object at calltime by binding a pointer to 1.29 +// pointer to the object at creation time - before including this file you 1.30 +// have to #define GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING. 1.31 +// 1.32 +// TODO(stoyan): It's yet not clear to me should we use T& and T&* instead 1.33 +// of T* and T** when we invoke CreateFunctor to match the EXPECT_CALL style. 1.34 +// 1.35 +// 1.36 +// Sample usage with gMock: 1.37 +// 1.38 +// struct Mock : public ObjectDelegate { 1.39 +// MOCK_METHOD2(string, OnRequest(int n, const string& request)); 1.40 +// MOCK_METHOD1(void, OnQuit(int exit_code)); 1.41 +// MOCK_METHOD2(void, LogMessage(int level, const string& message)); 1.42 +// 1.43 +// string HandleFlowers(const string& reply, int n, const string& request) { 1.44 +// string result = SStringPrintf("In request of %d %s ", n, request); 1.45 +// for (int i = 0; i < n; ++i) result.append(reply) 1.46 +// return result; 1.47 +// } 1.48 +// 1.49 +// void DoLogMessage(int level, const string& message) { 1.50 +// } 1.51 +// 1.52 +// void QuitMessageLoop(int seconds) { 1.53 +// MessageLoop* loop = MessageLoop::current(); 1.54 +// loop->PostDelayedTask(FROM_HERE, MessageLoop::QuitClosure(), 1.55 +// 1000 * seconds); 1.56 +// } 1.57 +// }; 1.58 +// 1.59 +// Mock mock; 1.60 +// // Will invoke mock.HandleFlowers("orchids", n, request) 1.61 +// // "orchids" is a pre-bound argument, and <n> and <request> are call-time 1.62 +// // arguments - they are not known until the OnRequest mock is invoked. 1.63 +// EXPECT_CALL(mock, OnRequest(Ge(5), StartsWith("flower")) 1.64 +// .Times(1) 1.65 +// .WillOnce(Invoke(CreateFunctor(&mock, &Mock::HandleFlowers, 1.66 +// string("orchids")))); 1.67 +// 1.68 +// 1.69 +// // No pre-bound arguments, two call-time arguments passed 1.70 +// // directly to DoLogMessage 1.71 +// EXPECT_CALL(mock, OnLogMessage(_, _)) 1.72 +// .Times(AnyNumber()) 1.73 +// .WillAlways(Invoke(CreateFunctor, &mock, &Mock::DoLogMessage)); 1.74 +// 1.75 +// 1.76 +// // In this case we have a single pre-bound argument - 3. We ignore 1.77 +// // all of the arguments of OnQuit. 1.78 +// EXCEPT_CALL(mock, OnQuit(_)) 1.79 +// .Times(1) 1.80 +// .WillOnce(InvokeWithoutArgs(CreateFunctor( 1.81 +// &mock, &Mock::QuitMessageLoop, 3))); 1.82 +// 1.83 +// MessageLoop loop; 1.84 +// loop.Run(); 1.85 +// 1.86 +// 1.87 +// // Here is another example of how we can set an action that invokes 1.88 +// // method of an object that is not yet created. 1.89 +// struct Mock : public ObjectDelegate { 1.90 +// MOCK_METHOD1(void, DemiurgeCreated(Demiurge*)); 1.91 +// MOCK_METHOD2(void, OnRequest(int count, const string&)); 1.92 +// 1.93 +// void StoreDemiurge(Demiurge* w) { 1.94 +// demiurge_ = w; 1.95 +// } 1.96 +// 1.97 +// Demiurge* demiurge; 1.98 +// } 1.99 +// 1.100 +// EXPECT_CALL(mock, DemiurgeCreated(_)).Times(1) 1.101 +// .WillOnce(Invoke(CreateFunctor(&mock, &Mock::StoreDemiurge))); 1.102 +// 1.103 +// EXPECT_CALL(mock, OnRequest(_, StrEq("Moby Dick"))) 1.104 +// .Times(AnyNumber()) 1.105 +// .WillAlways(WithArgs<0>(Invoke( 1.106 +// CreateFunctor(&mock->demiurge_, &Demiurge::DecreaseMonsters)))); 1.107 +// 1.108 + 1.109 +#include "base/memory/linked_ptr.h" 1.110 +#include "base/tuple.h" // for Tuple 1.111 + 1.112 +namespace testing { 1.113 + 1.114 +// 0 - 0 1.115 +template <typename R, typename T, typename Method> 1.116 +inline R DispatchToMethod(T* obj, Method method, 1.117 + const Tuple0& p, 1.118 + const Tuple0& c) { 1.119 + return (obj->*method)(); 1.120 +} 1.121 +template <typename R, typename Function> 1.122 +inline R DispatchToFunction(Function function, 1.123 + const Tuple0& p, 1.124 + const Tuple0& c) { 1.125 + return (*function)(); 1.126 +} 1.127 + 1.128 +// 0 - 1 1.129 +template <typename R, typename T, typename Method, typename C1> 1.130 +inline R DispatchToMethod(T* obj, Method method, 1.131 + const Tuple0& p, 1.132 + const Tuple1<C1>& c) { 1.133 + return (obj->*method)(c.a); 1.134 +} 1.135 +template <typename R, typename Function, typename C1> 1.136 +inline R DispatchToFunction(Function function, 1.137 + const Tuple0& p, 1.138 + const Tuple1<C1>& c) { 1.139 + return (*function)(c.a); 1.140 +} 1.141 + 1.142 +// 0 - 2 1.143 +template <typename R, typename T, typename Method, typename C1, typename C2> 1.144 +inline R DispatchToMethod(T* obj, Method method, 1.145 + const Tuple0& p, 1.146 + const Tuple2<C1, C2>& c) { 1.147 + return (obj->*method)(c.a, c.b); 1.148 +} 1.149 +template <typename R, typename Function, typename C1, typename C2> 1.150 +inline R DispatchToFunction(Function function, 1.151 + const Tuple0& p, 1.152 + const Tuple2<C1, C2>& c) { 1.153 + return (*function)(c.a, c.b); 1.154 +} 1.155 + 1.156 +// 0 - 3 1.157 +template <typename R, typename T, typename Method, typename C1, typename C2, 1.158 + typename C3> 1.159 +inline R DispatchToMethod(T* obj, Method method, 1.160 + const Tuple0& p, 1.161 + const Tuple3<C1, C2, C3>& c) { 1.162 + return (obj->*method)(c.a, c.b, c.c); 1.163 +} 1.164 +template <typename R, typename Function, typename C1, typename C2, typename C3> 1.165 +inline R DispatchToFunction(Function function, 1.166 + const Tuple0& p, 1.167 + const Tuple3<C1, C2, C3>& c) { 1.168 + return (*function)(c.a, c.b, c.c); 1.169 +} 1.170 + 1.171 +// 0 - 4 1.172 +template <typename R, typename T, typename Method, typename C1, typename C2, 1.173 + typename C3, typename C4> 1.174 +inline R DispatchToMethod(T* obj, Method method, 1.175 + const Tuple0& p, 1.176 + const Tuple4<C1, C2, C3, C4>& c) { 1.177 + return (obj->*method)(c.a, c.b, c.c, c.d); 1.178 +} 1.179 +template <typename R, typename Function, typename C1, typename C2, typename C3, 1.180 + typename C4> 1.181 +inline R DispatchToFunction(Function function, 1.182 + const Tuple0& p, 1.183 + const Tuple4<C1, C2, C3, C4>& c) { 1.184 + return (*function)(c.a, c.b, c.c, c.d); 1.185 +} 1.186 + 1.187 +// 0 - 5 1.188 +template <typename R, typename T, typename Method, typename C1, typename C2, 1.189 + typename C3, typename C4, typename C5> 1.190 +inline R DispatchToMethod(T* obj, Method method, 1.191 + const Tuple0& p, 1.192 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.193 + return (obj->*method)(c.a, c.b, c.c, c.d, c.e); 1.194 +} 1.195 +template <typename R, typename Function, typename C1, typename C2, typename C3, 1.196 + typename C4, typename C5> 1.197 +inline R DispatchToFunction(Function function, 1.198 + const Tuple0& p, 1.199 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.200 + return (*function)(c.a, c.b, c.c, c.d, c.e); 1.201 +} 1.202 + 1.203 +// 0 - 6 1.204 +template <typename R, typename T, typename Method, typename C1, typename C2, 1.205 + typename C3, typename C4, typename C5, typename C6> 1.206 +inline R DispatchToMethod(T* obj, Method method, 1.207 + const Tuple0& p, 1.208 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.209 + return (obj->*method)(c.a, c.b, c.c, c.d, c.e, c.f); 1.210 +} 1.211 +template <typename R, typename Function, typename C1, typename C2, typename C3, 1.212 + typename C4, typename C5, typename C6> 1.213 +inline R DispatchToFunction(Function function, 1.214 + const Tuple0& p, 1.215 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.216 + return (*function)(c.a, c.b, c.c, c.d, c.e, c.f); 1.217 +} 1.218 + 1.219 +// 1 - 0 1.220 +template <typename R, typename T, typename Method, typename P1> 1.221 +inline R DispatchToMethod(T* obj, Method method, 1.222 + const Tuple1<P1>& p, 1.223 + const Tuple0& c) { 1.224 + return (obj->*method)(p.a); 1.225 +} 1.226 +template <typename R, typename Function, typename P1> 1.227 +inline R DispatchToFunction(Function function, 1.228 + const Tuple1<P1>& p, 1.229 + const Tuple0& c) { 1.230 + return (*function)(p.a); 1.231 +} 1.232 + 1.233 +// 1 - 1 1.234 +template <typename R, typename T, typename Method, typename P1, typename C1> 1.235 +inline R DispatchToMethod(T* obj, Method method, 1.236 + const Tuple1<P1>& p, 1.237 + const Tuple1<C1>& c) { 1.238 + return (obj->*method)(p.a, c.a); 1.239 +} 1.240 +template <typename R, typename Function, typename P1, typename C1> 1.241 +inline R DispatchToFunction(Function function, 1.242 + const Tuple1<P1>& p, 1.243 + const Tuple1<C1>& c) { 1.244 + return (*function)(p.a, c.a); 1.245 +} 1.246 + 1.247 +// 1 - 2 1.248 +template <typename R, typename T, typename Method, typename P1, typename C1, 1.249 + typename C2> 1.250 +inline R DispatchToMethod(T* obj, Method method, 1.251 + const Tuple1<P1>& p, 1.252 + const Tuple2<C1, C2>& c) { 1.253 + return (obj->*method)(p.a, c.a, c.b); 1.254 +} 1.255 +template <typename R, typename Function, typename P1, typename C1, typename C2> 1.256 +inline R DispatchToFunction(Function function, 1.257 + const Tuple1<P1>& p, 1.258 + const Tuple2<C1, C2>& c) { 1.259 + return (*function)(p.a, c.a, c.b); 1.260 +} 1.261 + 1.262 +// 1 - 3 1.263 +template <typename R, typename T, typename Method, typename P1, typename C1, 1.264 + typename C2, typename C3> 1.265 +inline R DispatchToMethod(T* obj, Method method, 1.266 + const Tuple1<P1>& p, 1.267 + const Tuple3<C1, C2, C3>& c) { 1.268 + return (obj->*method)(p.a, c.a, c.b, c.c); 1.269 +} 1.270 +template <typename R, typename Function, typename P1, typename C1, typename C2, 1.271 + typename C3> 1.272 +inline R DispatchToFunction(Function function, 1.273 + const Tuple1<P1>& p, 1.274 + const Tuple3<C1, C2, C3>& c) { 1.275 + return (*function)(p.a, c.a, c.b, c.c); 1.276 +} 1.277 + 1.278 +// 1 - 4 1.279 +template <typename R, typename T, typename Method, typename P1, typename C1, 1.280 + typename C2, typename C3, typename C4> 1.281 +inline R DispatchToMethod(T* obj, Method method, 1.282 + const Tuple1<P1>& p, 1.283 + const Tuple4<C1, C2, C3, C4>& c) { 1.284 + return (obj->*method)(p.a, c.a, c.b, c.c, c.d); 1.285 +} 1.286 +template <typename R, typename Function, typename P1, typename C1, typename C2, 1.287 + typename C3, typename C4> 1.288 +inline R DispatchToFunction(Function function, 1.289 + const Tuple1<P1>& p, 1.290 + const Tuple4<C1, C2, C3, C4>& c) { 1.291 + return (*function)(p.a, c.a, c.b, c.c, c.d); 1.292 +} 1.293 + 1.294 +// 1 - 5 1.295 +template <typename R, typename T, typename Method, typename P1, typename C1, 1.296 + typename C2, typename C3, typename C4, typename C5> 1.297 +inline R DispatchToMethod(T* obj, Method method, 1.298 + const Tuple1<P1>& p, 1.299 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.300 + return (obj->*method)(p.a, c.a, c.b, c.c, c.d, c.e); 1.301 +} 1.302 +template <typename R, typename Function, typename P1, typename C1, typename C2, 1.303 + typename C3, typename C4, typename C5> 1.304 +inline R DispatchToFunction(Function function, 1.305 + const Tuple1<P1>& p, 1.306 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.307 + return (*function)(p.a, c.a, c.b, c.c, c.d, c.e); 1.308 +} 1.309 + 1.310 +// 1 - 6 1.311 +template <typename R, typename T, typename Method, typename P1, typename C1, 1.312 + typename C2, typename C3, typename C4, typename C5, typename C6> 1.313 +inline R DispatchToMethod(T* obj, Method method, 1.314 + const Tuple1<P1>& p, 1.315 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.316 + return (obj->*method)(p.a, c.a, c.b, c.c, c.d, c.e, c.f); 1.317 +} 1.318 +template <typename R, typename Function, typename P1, typename C1, typename C2, 1.319 + typename C3, typename C4, typename C5, typename C6> 1.320 +inline R DispatchToFunction(Function function, 1.321 + const Tuple1<P1>& p, 1.322 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.323 + return (*function)(p.a, c.a, c.b, c.c, c.d, c.e, c.f); 1.324 +} 1.325 + 1.326 +// 2 - 0 1.327 +template <typename R, typename T, typename Method, typename P1, typename P2> 1.328 +inline R DispatchToMethod(T* obj, Method method, 1.329 + const Tuple2<P1, P2>& p, 1.330 + const Tuple0& c) { 1.331 + return (obj->*method)(p.a, p.b); 1.332 +} 1.333 +template <typename R, typename Function, typename P1, typename P2> 1.334 +inline R DispatchToFunction(Function function, 1.335 + const Tuple2<P1, P2>& p, 1.336 + const Tuple0& c) { 1.337 + return (*function)(p.a, p.b); 1.338 +} 1.339 + 1.340 +// 2 - 1 1.341 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.342 + typename C1> 1.343 +inline R DispatchToMethod(T* obj, Method method, 1.344 + const Tuple2<P1, P2>& p, 1.345 + const Tuple1<C1>& c) { 1.346 + return (obj->*method)(p.a, p.b, c.a); 1.347 +} 1.348 +template <typename R, typename Function, typename P1, typename P2, typename C1> 1.349 +inline R DispatchToFunction(Function function, 1.350 + const Tuple2<P1, P2>& p, 1.351 + const Tuple1<C1>& c) { 1.352 + return (*function)(p.a, p.b, c.a); 1.353 +} 1.354 + 1.355 +// 2 - 2 1.356 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.357 + typename C1, typename C2> 1.358 +inline R DispatchToMethod(T* obj, Method method, 1.359 + const Tuple2<P1, P2>& p, 1.360 + const Tuple2<C1, C2>& c) { 1.361 + return (obj->*method)(p.a, p.b, c.a, c.b); 1.362 +} 1.363 +template <typename R, typename Function, typename P1, typename P2, typename C1, 1.364 + typename C2> 1.365 +inline R DispatchToFunction(Function function, 1.366 + const Tuple2<P1, P2>& p, 1.367 + const Tuple2<C1, C2>& c) { 1.368 + return (*function)(p.a, p.b, c.a, c.b); 1.369 +} 1.370 + 1.371 +// 2 - 3 1.372 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.373 + typename C1, typename C2, typename C3> 1.374 +inline R DispatchToMethod(T* obj, Method method, 1.375 + const Tuple2<P1, P2>& p, 1.376 + const Tuple3<C1, C2, C3>& c) { 1.377 + return (obj->*method)(p.a, p.b, c.a, c.b, c.c); 1.378 +} 1.379 +template <typename R, typename Function, typename P1, typename P2, typename C1, 1.380 + typename C2, typename C3> 1.381 +inline R DispatchToFunction(Function function, 1.382 + const Tuple2<P1, P2>& p, 1.383 + const Tuple3<C1, C2, C3>& c) { 1.384 + return (*function)(p.a, p.b, c.a, c.b, c.c); 1.385 +} 1.386 + 1.387 +// 2 - 4 1.388 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.389 + typename C1, typename C2, typename C3, typename C4> 1.390 +inline R DispatchToMethod(T* obj, Method method, 1.391 + const Tuple2<P1, P2>& p, 1.392 + const Tuple4<C1, C2, C3, C4>& c) { 1.393 + return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d); 1.394 +} 1.395 +template <typename R, typename Function, typename P1, typename P2, typename C1, 1.396 + typename C2, typename C3, typename C4> 1.397 +inline R DispatchToFunction(Function function, 1.398 + const Tuple2<P1, P2>& p, 1.399 + const Tuple4<C1, C2, C3, C4>& c) { 1.400 + return (*function)(p.a, p.b, c.a, c.b, c.c, c.d); 1.401 +} 1.402 + 1.403 +// 2 - 5 1.404 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.405 + typename C1, typename C2, typename C3, typename C4, typename C5> 1.406 +inline R DispatchToMethod(T* obj, Method method, 1.407 + const Tuple2<P1, P2>& p, 1.408 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.409 + return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d, c.e); 1.410 +} 1.411 +template <typename R, typename Function, typename P1, typename P2, typename C1, 1.412 + typename C2, typename C3, typename C4, typename C5> 1.413 +inline R DispatchToFunction(Function function, 1.414 + const Tuple2<P1, P2>& p, 1.415 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.416 + return (*function)(p.a, p.b, c.a, c.b, c.c, c.d, c.e); 1.417 +} 1.418 + 1.419 +// 2 - 6 1.420 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.421 + typename C1, typename C2, typename C3, typename C4, typename C5, 1.422 + typename C6> 1.423 +inline R DispatchToMethod(T* obj, Method method, 1.424 + const Tuple2<P1, P2>& p, 1.425 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.426 + return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d, c.e, c.f); 1.427 +} 1.428 +template <typename R, typename Function, typename P1, typename P2, typename C1, 1.429 + typename C2, typename C3, typename C4, typename C5, typename C6> 1.430 +inline R DispatchToFunction(Function function, 1.431 + const Tuple2<P1, P2>& p, 1.432 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.433 + return (*function)(p.a, p.b, c.a, c.b, c.c, c.d, c.e, c.f); 1.434 +} 1.435 + 1.436 +// 3 - 0 1.437 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.438 + typename P3> 1.439 +inline R DispatchToMethod(T* obj, Method method, 1.440 + const Tuple3<P1, P2, P3>& p, 1.441 + const Tuple0& c) { 1.442 + return (obj->*method)(p.a, p.b, p.c); 1.443 +} 1.444 +template <typename R, typename Function, typename P1, typename P2, typename P3> 1.445 +inline R DispatchToFunction(Function function, 1.446 + const Tuple3<P1, P2, P3>& p, 1.447 + const Tuple0& c) { 1.448 + return (*function)(p.a, p.b, p.c); 1.449 +} 1.450 + 1.451 +// 3 - 1 1.452 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.453 + typename P3, typename C1> 1.454 +inline R DispatchToMethod(T* obj, Method method, 1.455 + const Tuple3<P1, P2, P3>& p, 1.456 + const Tuple1<C1>& c) { 1.457 + return (obj->*method)(p.a, p.b, p.c, c.a); 1.458 +} 1.459 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.460 + typename C1> 1.461 +inline R DispatchToFunction(Function function, 1.462 + const Tuple3<P1, P2, P3>& p, 1.463 + const Tuple1<C1>& c) { 1.464 + return (*function)(p.a, p.b, p.c, c.a); 1.465 +} 1.466 + 1.467 +// 3 - 2 1.468 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.469 + typename P3, typename C1, typename C2> 1.470 +inline R DispatchToMethod(T* obj, Method method, 1.471 + const Tuple3<P1, P2, P3>& p, 1.472 + const Tuple2<C1, C2>& c) { 1.473 + return (obj->*method)(p.a, p.b, p.c, c.a, c.b); 1.474 +} 1.475 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.476 + typename C1, typename C2> 1.477 +inline R DispatchToFunction(Function function, 1.478 + const Tuple3<P1, P2, P3>& p, 1.479 + const Tuple2<C1, C2>& c) { 1.480 + return (*function)(p.a, p.b, p.c, c.a, c.b); 1.481 +} 1.482 + 1.483 +// 3 - 3 1.484 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.485 + typename P3, typename C1, typename C2, typename C3> 1.486 +inline R DispatchToMethod(T* obj, Method method, 1.487 + const Tuple3<P1, P2, P3>& p, 1.488 + const Tuple3<C1, C2, C3>& c) { 1.489 + return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c); 1.490 +} 1.491 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.492 + typename C1, typename C2, typename C3> 1.493 +inline R DispatchToFunction(Function function, 1.494 + const Tuple3<P1, P2, P3>& p, 1.495 + const Tuple3<C1, C2, C3>& c) { 1.496 + return (*function)(p.a, p.b, p.c, c.a, c.b, c.c); 1.497 +} 1.498 + 1.499 +// 3 - 4 1.500 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.501 + typename P3, typename C1, typename C2, typename C3, typename C4> 1.502 +inline R DispatchToMethod(T* obj, Method method, 1.503 + const Tuple3<P1, P2, P3>& p, 1.504 + const Tuple4<C1, C2, C3, C4>& c) { 1.505 + return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d); 1.506 +} 1.507 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.508 + typename C1, typename C2, typename C3, typename C4> 1.509 +inline R DispatchToFunction(Function function, 1.510 + const Tuple3<P1, P2, P3>& p, 1.511 + const Tuple4<C1, C2, C3, C4>& c) { 1.512 + return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d); 1.513 +} 1.514 + 1.515 +// 3 - 5 1.516 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.517 + typename P3, typename C1, typename C2, typename C3, typename C4, 1.518 + typename C5> 1.519 +inline R DispatchToMethod(T* obj, Method method, 1.520 + const Tuple3<P1, P2, P3>& p, 1.521 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.522 + return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e); 1.523 +} 1.524 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.525 + typename C1, typename C2, typename C3, typename C4, typename C5> 1.526 +inline R DispatchToFunction(Function function, 1.527 + const Tuple3<P1, P2, P3>& p, 1.528 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.529 + return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e); 1.530 +} 1.531 + 1.532 +// 3 - 6 1.533 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.534 + typename P3, typename C1, typename C2, typename C3, typename C4, 1.535 + typename C5, typename C6> 1.536 +inline R DispatchToMethod(T* obj, Method method, 1.537 + const Tuple3<P1, P2, P3>& p, 1.538 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.539 + return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e, c.f); 1.540 +} 1.541 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.542 + typename C1, typename C2, typename C3, typename C4, typename C5, 1.543 + typename C6> 1.544 +inline R DispatchToFunction(Function function, 1.545 + const Tuple3<P1, P2, P3>& p, 1.546 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.547 + return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e, c.f); 1.548 +} 1.549 + 1.550 +// 4 - 0 1.551 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.552 + typename P3, typename P4> 1.553 +inline R DispatchToMethod(T* obj, Method method, 1.554 + const Tuple4<P1, P2, P3, P4>& p, 1.555 + const Tuple0& c) { 1.556 + return (obj->*method)(p.a, p.b, p.c, p.d); 1.557 +} 1.558 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.559 + typename P4> 1.560 +inline R DispatchToFunction(Function function, 1.561 + const Tuple4<P1, P2, P3, P4>& p, 1.562 + const Tuple0& c) { 1.563 + return (*function)(p.a, p.b, p.c, p.d); 1.564 +} 1.565 + 1.566 +// 4 - 1 1.567 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.568 + typename P3, typename P4, typename C1> 1.569 +inline R DispatchToMethod(T* obj, Method method, 1.570 + const Tuple4<P1, P2, P3, P4>& p, 1.571 + const Tuple1<C1>& c) { 1.572 + return (obj->*method)(p.a, p.b, p.c, p.d, c.a); 1.573 +} 1.574 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.575 + typename P4, typename C1> 1.576 +inline R DispatchToFunction(Function function, 1.577 + const Tuple4<P1, P2, P3, P4>& p, 1.578 + const Tuple1<C1>& c) { 1.579 + return (*function)(p.a, p.b, p.c, p.d, c.a); 1.580 +} 1.581 + 1.582 +// 4 - 2 1.583 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.584 + typename P3, typename P4, typename C1, typename C2> 1.585 +inline R DispatchToMethod(T* obj, Method method, 1.586 + const Tuple4<P1, P2, P3, P4>& p, 1.587 + const Tuple2<C1, C2>& c) { 1.588 + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b); 1.589 +} 1.590 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.591 + typename P4, typename C1, typename C2> 1.592 +inline R DispatchToFunction(Function function, 1.593 + const Tuple4<P1, P2, P3, P4>& p, 1.594 + const Tuple2<C1, C2>& c) { 1.595 + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b); 1.596 +} 1.597 + 1.598 +// 4 - 3 1.599 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.600 + typename P3, typename P4, typename C1, typename C2, typename C3> 1.601 +inline R DispatchToMethod(T* obj, Method method, 1.602 + const Tuple4<P1, P2, P3, P4>& p, 1.603 + const Tuple3<C1, C2, C3>& c) { 1.604 + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c); 1.605 +} 1.606 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.607 + typename P4, typename C1, typename C2, typename C3> 1.608 +inline R DispatchToFunction(Function function, 1.609 + const Tuple4<P1, P2, P3, P4>& p, 1.610 + const Tuple3<C1, C2, C3>& c) { 1.611 + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c); 1.612 +} 1.613 + 1.614 +// 4 - 4 1.615 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.616 + typename P3, typename P4, typename C1, typename C2, typename C3, 1.617 + typename C4> 1.618 +inline R DispatchToMethod(T* obj, Method method, 1.619 + const Tuple4<P1, P2, P3, P4>& p, 1.620 + const Tuple4<C1, C2, C3, C4>& c) { 1.621 + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d); 1.622 +} 1.623 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.624 + typename P4, typename C1, typename C2, typename C3, typename C4> 1.625 +inline R DispatchToFunction(Function function, 1.626 + const Tuple4<P1, P2, P3, P4>& p, 1.627 + const Tuple4<C1, C2, C3, C4>& c) { 1.628 + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d); 1.629 +} 1.630 + 1.631 +// 4 - 5 1.632 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.633 + typename P3, typename P4, typename C1, typename C2, typename C3, 1.634 + typename C4, typename C5> 1.635 +inline R DispatchToMethod(T* obj, Method method, 1.636 + const Tuple4<P1, P2, P3, P4>& p, 1.637 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.638 + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e); 1.639 +} 1.640 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.641 + typename P4, typename C1, typename C2, typename C3, typename C4, 1.642 + typename C5> 1.643 +inline R DispatchToFunction(Function function, 1.644 + const Tuple4<P1, P2, P3, P4>& p, 1.645 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.646 + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e); 1.647 +} 1.648 + 1.649 +// 4 - 6 1.650 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.651 + typename P3, typename P4, typename C1, typename C2, typename C3, 1.652 + typename C4, typename C5, typename C6> 1.653 +inline R DispatchToMethod(T* obj, Method method, 1.654 + const Tuple4<P1, P2, P3, P4>& p, 1.655 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.656 + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e, c.f); 1.657 +} 1.658 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.659 + typename P4, typename C1, typename C2, typename C3, typename C4, 1.660 + typename C5, typename C6> 1.661 +inline R DispatchToFunction(Function function, 1.662 + const Tuple4<P1, P2, P3, P4>& p, 1.663 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.664 + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e, c.f); 1.665 +} 1.666 + 1.667 +// 5 - 0 1.668 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.669 + typename P3, typename P4, typename P5> 1.670 +inline R DispatchToMethod(T* obj, Method method, 1.671 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.672 + const Tuple0& c) { 1.673 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e); 1.674 +} 1.675 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.676 + typename P4, typename P5> 1.677 +inline R DispatchToFunction(Function function, 1.678 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.679 + const Tuple0& c) { 1.680 + return (*function)(p.a, p.b, p.c, p.d, p.e); 1.681 +} 1.682 + 1.683 +// 5 - 1 1.684 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.685 + typename P3, typename P4, typename P5, typename C1> 1.686 +inline R DispatchToMethod(T* obj, Method method, 1.687 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.688 + const Tuple1<C1>& c) { 1.689 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a); 1.690 +} 1.691 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.692 + typename P4, typename P5, typename C1> 1.693 +inline R DispatchToFunction(Function function, 1.694 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.695 + const Tuple1<C1>& c) { 1.696 + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a); 1.697 +} 1.698 + 1.699 +// 5 - 2 1.700 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.701 + typename P3, typename P4, typename P5, typename C1, typename C2> 1.702 +inline R DispatchToMethod(T* obj, Method method, 1.703 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.704 + const Tuple2<C1, C2>& c) { 1.705 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b); 1.706 +} 1.707 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.708 + typename P4, typename P5, typename C1, typename C2> 1.709 +inline R DispatchToFunction(Function function, 1.710 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.711 + const Tuple2<C1, C2>& c) { 1.712 + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b); 1.713 +} 1.714 + 1.715 +// 5 - 3 1.716 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.717 + typename P3, typename P4, typename P5, typename C1, typename C2, 1.718 + typename C3> 1.719 +inline R DispatchToMethod(T* obj, Method method, 1.720 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.721 + const Tuple3<C1, C2, C3>& c) { 1.722 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c); 1.723 +} 1.724 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.725 + typename P4, typename P5, typename C1, typename C2, typename C3> 1.726 +inline R DispatchToFunction(Function function, 1.727 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.728 + const Tuple3<C1, C2, C3>& c) { 1.729 + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c); 1.730 +} 1.731 + 1.732 +// 5 - 4 1.733 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.734 + typename P3, typename P4, typename P5, typename C1, typename C2, 1.735 + typename C3, typename C4> 1.736 +inline R DispatchToMethod(T* obj, Method method, 1.737 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.738 + const Tuple4<C1, C2, C3, C4>& c) { 1.739 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d); 1.740 +} 1.741 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.742 + typename P4, typename P5, typename C1, typename C2, typename C3, 1.743 + typename C4> 1.744 +inline R DispatchToFunction(Function function, 1.745 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.746 + const Tuple4<C1, C2, C3, C4>& c) { 1.747 + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d); 1.748 +} 1.749 + 1.750 +// 5 - 5 1.751 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.752 + typename P3, typename P4, typename P5, typename C1, typename C2, 1.753 + typename C3, typename C4, typename C5> 1.754 +inline R DispatchToMethod(T* obj, Method method, 1.755 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.756 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.757 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e); 1.758 +} 1.759 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.760 + typename P4, typename P5, typename C1, typename C2, typename C3, 1.761 + typename C4, typename C5> 1.762 +inline R DispatchToFunction(Function function, 1.763 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.764 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.765 + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e); 1.766 +} 1.767 + 1.768 +// 5 - 6 1.769 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.770 + typename P3, typename P4, typename P5, typename C1, typename C2, 1.771 + typename C3, typename C4, typename C5, typename C6> 1.772 +inline R DispatchToMethod(T* obj, Method method, 1.773 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.774 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.775 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e, c.f); 1.776 +} 1.777 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.778 + typename P4, typename P5, typename C1, typename C2, typename C3, 1.779 + typename C4, typename C5, typename C6> 1.780 +inline R DispatchToFunction(Function function, 1.781 + const Tuple5<P1, P2, P3, P4, P5>& p, 1.782 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.783 + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e, c.f); 1.784 +} 1.785 + 1.786 +// 6 - 0 1.787 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.788 + typename P3, typename P4, typename P5, typename P6> 1.789 +inline R DispatchToMethod(T* obj, Method method, 1.790 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.791 + const Tuple0& c) { 1.792 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f); 1.793 +} 1.794 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.795 + typename P4, typename P5, typename P6> 1.796 +inline R DispatchToFunction(Function function, 1.797 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.798 + const Tuple0& c) { 1.799 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f); 1.800 +} 1.801 + 1.802 +// 6 - 1 1.803 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.804 + typename P3, typename P4, typename P5, typename P6, typename C1> 1.805 +inline R DispatchToMethod(T* obj, Method method, 1.806 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.807 + const Tuple1<C1>& c) { 1.808 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a); 1.809 +} 1.810 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.811 + typename P4, typename P5, typename P6, typename C1> 1.812 +inline R DispatchToFunction(Function function, 1.813 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.814 + const Tuple1<C1>& c) { 1.815 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a); 1.816 +} 1.817 + 1.818 +// 6 - 2 1.819 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.820 + typename P3, typename P4, typename P5, typename P6, typename C1, 1.821 + typename C2> 1.822 +inline R DispatchToMethod(T* obj, Method method, 1.823 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.824 + const Tuple2<C1, C2>& c) { 1.825 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b); 1.826 +} 1.827 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.828 + typename P4, typename P5, typename P6, typename C1, typename C2> 1.829 +inline R DispatchToFunction(Function function, 1.830 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.831 + const Tuple2<C1, C2>& c) { 1.832 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b); 1.833 +} 1.834 + 1.835 +// 6 - 3 1.836 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.837 + typename P3, typename P4, typename P5, typename P6, typename C1, 1.838 + typename C2, typename C3> 1.839 +inline R DispatchToMethod(T* obj, Method method, 1.840 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.841 + const Tuple3<C1, C2, C3>& c) { 1.842 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c); 1.843 +} 1.844 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.845 + typename P4, typename P5, typename P6, typename C1, typename C2, 1.846 + typename C3> 1.847 +inline R DispatchToFunction(Function function, 1.848 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.849 + const Tuple3<C1, C2, C3>& c) { 1.850 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c); 1.851 +} 1.852 + 1.853 +// 6 - 4 1.854 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.855 + typename P3, typename P4, typename P5, typename P6, typename C1, 1.856 + typename C2, typename C3, typename C4> 1.857 +inline R DispatchToMethod(T* obj, Method method, 1.858 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.859 + const Tuple4<C1, C2, C3, C4>& c) { 1.860 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d); 1.861 +} 1.862 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.863 + typename P4, typename P5, typename P6, typename C1, typename C2, 1.864 + typename C3, typename C4> 1.865 +inline R DispatchToFunction(Function function, 1.866 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.867 + const Tuple4<C1, C2, C3, C4>& c) { 1.868 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d); 1.869 +} 1.870 + 1.871 +// 6 - 5 1.872 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.873 + typename P3, typename P4, typename P5, typename P6, typename C1, 1.874 + typename C2, typename C3, typename C4, typename C5> 1.875 +inline R DispatchToMethod(T* obj, Method method, 1.876 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.877 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.878 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e); 1.879 +} 1.880 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.881 + typename P4, typename P5, typename P6, typename C1, typename C2, 1.882 + typename C3, typename C4, typename C5> 1.883 +inline R DispatchToFunction(Function function, 1.884 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.885 + const Tuple5<C1, C2, C3, C4, C5>& c) { 1.886 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e); 1.887 +} 1.888 + 1.889 +// 6 - 6 1.890 +template <typename R, typename T, typename Method, typename P1, typename P2, 1.891 + typename P3, typename P4, typename P5, typename P6, typename C1, 1.892 + typename C2, typename C3, typename C4, typename C5, typename C6> 1.893 +inline R DispatchToMethod(T* obj, Method method, 1.894 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.895 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.896 + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e, c.f); 1.897 +} 1.898 +template <typename R, typename Function, typename P1, typename P2, typename P3, 1.899 + typename P4, typename P5, typename P6, typename C1, typename C2, 1.900 + typename C3, typename C4, typename C5, typename C6> 1.901 +inline R DispatchToFunction(Function function, 1.902 + const Tuple6<P1, P2, P3, P4, P5, P6>& p, 1.903 + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { 1.904 + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e, c.f); 1.905 +} 1.906 + 1.907 +// Interface that is exposed to the consumer, that does the actual calling 1.908 +// of the method. 1.909 +template <typename R, typename Params> 1.910 +class MutantRunner { 1.911 + public: 1.912 + virtual R RunWithParams(const Params& params) = 0; 1.913 + virtual ~MutantRunner() {} 1.914 +}; 1.915 + 1.916 +// Mutant holds pre-bound arguments (like Task). Like Callback 1.917 +// allows call-time arguments. You bind a pointer to the object 1.918 +// at creation time. 1.919 +template <typename R, typename T, typename Method, 1.920 + typename PreBound, typename Params> 1.921 +class Mutant : public MutantRunner<R, Params> { 1.922 + public: 1.923 + Mutant(T* obj, Method method, const PreBound& pb) 1.924 + : obj_(obj), method_(method), pb_(pb) { 1.925 + } 1.926 + 1.927 + // MutantRunner implementation 1.928 + virtual R RunWithParams(const Params& params) { 1.929 + return DispatchToMethod<R>(this->obj_, this->method_, pb_, params); 1.930 + } 1.931 + 1.932 + T* obj_; 1.933 + Method method_; 1.934 + PreBound pb_; 1.935 +}; 1.936 + 1.937 +template <typename R, typename Function, typename PreBound, typename Params> 1.938 +class MutantFunction : public MutantRunner<R, Params> { 1.939 + public: 1.940 + MutantFunction(Function function, const PreBound& pb) 1.941 + : function_(function), pb_(pb) { 1.942 + } 1.943 + 1.944 + // MutantRunner implementation 1.945 + virtual R RunWithParams(const Params& params) { 1.946 + return DispatchToFunction<R>(function_, pb_, params); 1.947 + } 1.948 + 1.949 + Function function_; 1.950 + PreBound pb_; 1.951 +}; 1.952 + 1.953 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.954 +// MutantLateBind is like Mutant, but you bind a pointer to a pointer 1.955 +// to the object. This way you can create actions for an object 1.956 +// that is not yet created (has only storage for a pointer to it). 1.957 +template <typename R, typename T, typename Method, 1.958 + typename PreBound, typename Params> 1.959 +class MutantLateObjectBind : public MutantRunner<R, Params> { 1.960 + public: 1.961 + MutantLateObjectBind(T** obj, Method method, const PreBound& pb) 1.962 + : obj_(obj), method_(method), pb_(pb) { 1.963 + } 1.964 + 1.965 + // MutantRunner implementation. 1.966 + virtual R RunWithParams(const Params& params) { 1.967 + EXPECT_THAT(*this->obj_, testing::NotNull()); 1.968 + if (NULL == *this->obj_) 1.969 + return R(); 1.970 + return DispatchToMethod<R>( *this->obj_, this->method_, pb_, params); 1.971 + } 1.972 + 1.973 + T** obj_; 1.974 + Method method_; 1.975 + PreBound pb_; 1.976 +}; 1.977 +#endif 1.978 + 1.979 +// Simple MutantRunner<> wrapper acting as a functor. 1.980 +// Redirects operator() to MutantRunner<Params>::Run() 1.981 +template <typename R, typename Params> 1.982 +struct MutantFunctor { 1.983 + explicit MutantFunctor(MutantRunner<R, Params>* cb) : impl_(cb) { 1.984 + } 1.985 + 1.986 + ~MutantFunctor() { 1.987 + } 1.988 + 1.989 + inline R operator()() { 1.990 + return impl_->RunWithParams(Tuple0()); 1.991 + } 1.992 + 1.993 + template <typename Arg1> 1.994 + inline R operator()(const Arg1& a) { 1.995 + return impl_->RunWithParams(Params(a)); 1.996 + } 1.997 + 1.998 + template <typename Arg1, typename Arg2> 1.999 + inline R operator()(const Arg1& a, const Arg2& b) { 1.1000 + return impl_->RunWithParams(Params(a, b)); 1.1001 + } 1.1002 + 1.1003 + template <typename Arg1, typename Arg2, typename Arg3> 1.1004 + inline R operator()(const Arg1& a, const Arg2& b, const Arg3& c) { 1.1005 + return impl_->RunWithParams(Params(a, b, c)); 1.1006 + } 1.1007 + 1.1008 + template <typename Arg1, typename Arg2, typename Arg3, typename Arg4> 1.1009 + inline R operator()(const Arg1& a, const Arg2& b, const Arg3& c, 1.1010 + const Arg4& d) { 1.1011 + return impl_->RunWithParams(Params(a, b, c, d)); 1.1012 + } 1.1013 + 1.1014 + private: 1.1015 + // We need copy constructor since MutantFunctor is copied few times 1.1016 + // inside GMock machinery, hence no DISALLOW_EVIL_CONTRUCTORS 1.1017 + MutantFunctor(); 1.1018 + linked_ptr<MutantRunner<R, Params> > impl_; 1.1019 +}; 1.1020 + 1.1021 +// 0 - 0 1.1022 +template <typename R, typename T, typename U> 1.1023 +inline MutantFunctor<R, Tuple0> 1.1024 +CreateFunctor(T* obj, R (U::*method)()) { 1.1025 + MutantRunner<R, Tuple0>* t = 1.1026 + new Mutant<R, T, R (U::*)(), 1.1027 + Tuple0, Tuple0> 1.1028 + (obj, method, MakeTuple()); 1.1029 + return MutantFunctor<R, Tuple0>(t); 1.1030 +} 1.1031 + 1.1032 +template <typename R> 1.1033 +inline MutantFunctor<R, Tuple0> 1.1034 +CreateFunctor(R (*function)()) { 1.1035 + MutantRunner<R, Tuple0>* t = 1.1036 + new MutantFunction<R, R (*)(), 1.1037 + Tuple0, Tuple0> 1.1038 + (function, MakeTuple()); 1.1039 + return MutantFunctor<R, Tuple0>(t); 1.1040 +} 1.1041 + 1.1042 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1043 +template <typename R, typename T, typename U> 1.1044 +inline MutantFunctor<R, Tuple0> 1.1045 +CreateFunctor(T** obj, R (U::*method)()) { 1.1046 + MutantRunner<R, Tuple0>* t = 1.1047 + new MutantLateObjectBind<R, T, R (U::*)(), 1.1048 + Tuple0, Tuple0> 1.1049 + (obj, method, MakeTuple()); 1.1050 + return MutantFunctor<R, Tuple0>(t); 1.1051 +} 1.1052 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1053 + 1.1054 +#if defined (OS_WIN) 1.1055 +template <typename R, typename T, typename U> 1.1056 +inline MutantFunctor<R, Tuple0> 1.1057 +CreateFunctor(T* obj, R (__stdcall U::*method)()) { 1.1058 + MutantRunner<R, Tuple0>* t = 1.1059 + new Mutant<R, T, R (__stdcall U::*)(), 1.1060 + Tuple0, Tuple0> 1.1061 + (obj, method, MakeTuple()); 1.1062 + return MutantFunctor<R, Tuple0>(t); 1.1063 +} 1.1064 + 1.1065 +template <typename R> 1.1066 +inline MutantFunctor<R, Tuple0> 1.1067 +CreateFunctor(R (__stdcall *function)()) { 1.1068 + MutantRunner<R, Tuple0>* t = 1.1069 + new MutantFunction<R, R (__stdcall *)(), 1.1070 + Tuple0, Tuple0> 1.1071 + (function, MakeTuple()); 1.1072 + return MutantFunctor<R, Tuple0>(t); 1.1073 +} 1.1074 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1075 +template <typename R, typename T, typename U> 1.1076 +inline MutantFunctor<R, Tuple0> 1.1077 +CreateFunctor(T** obj, R (__stdcall U::*method)()) { 1.1078 + MutantRunner<R, Tuple0>* t = 1.1079 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(), 1.1080 + Tuple0, Tuple0> 1.1081 + (obj, method, MakeTuple()); 1.1082 + return MutantFunctor<R, Tuple0>(t); 1.1083 +} 1.1084 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1085 +#endif // OS_WIN 1.1086 + 1.1087 +// 0 - 1 1.1088 +template <typename R, typename T, typename U, typename A1> 1.1089 +inline MutantFunctor<R, Tuple1<A1> > 1.1090 +CreateFunctor(T* obj, R (U::*method)(A1)) { 1.1091 + MutantRunner<R, Tuple1<A1> >* t = 1.1092 + new Mutant<R, T, R (U::*)(A1), 1.1093 + Tuple0, Tuple1<A1> > 1.1094 + (obj, method, MakeTuple()); 1.1095 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1096 +} 1.1097 + 1.1098 +template <typename R, typename A1> 1.1099 +inline MutantFunctor<R, Tuple1<A1> > 1.1100 +CreateFunctor(R (*function)(A1)) { 1.1101 + MutantRunner<R, Tuple1<A1> >* t = 1.1102 + new MutantFunction<R, R (*)(A1), 1.1103 + Tuple0, Tuple1<A1> > 1.1104 + (function, MakeTuple()); 1.1105 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1106 +} 1.1107 + 1.1108 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1109 +template <typename R, typename T, typename U, typename A1> 1.1110 +inline MutantFunctor<R, Tuple1<A1> > 1.1111 +CreateFunctor(T** obj, R (U::*method)(A1)) { 1.1112 + MutantRunner<R, Tuple1<A1> >* t = 1.1113 + new MutantLateObjectBind<R, T, R (U::*)(A1), 1.1114 + Tuple0, Tuple1<A1> > 1.1115 + (obj, method, MakeTuple()); 1.1116 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1117 +} 1.1118 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1119 + 1.1120 +#if defined (OS_WIN) 1.1121 +template <typename R, typename T, typename U, typename A1> 1.1122 +inline MutantFunctor<R, Tuple1<A1> > 1.1123 +CreateFunctor(T* obj, R (__stdcall U::*method)(A1)) { 1.1124 + MutantRunner<R, Tuple1<A1> >* t = 1.1125 + new Mutant<R, T, R (__stdcall U::*)(A1), 1.1126 + Tuple0, Tuple1<A1> > 1.1127 + (obj, method, MakeTuple()); 1.1128 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1129 +} 1.1130 + 1.1131 +template <typename R, typename A1> 1.1132 +inline MutantFunctor<R, Tuple1<A1> > 1.1133 +CreateFunctor(R (__stdcall *function)(A1)) { 1.1134 + MutantRunner<R, Tuple1<A1> >* t = 1.1135 + new MutantFunction<R, R (__stdcall *)(A1), 1.1136 + Tuple0, Tuple1<A1> > 1.1137 + (function, MakeTuple()); 1.1138 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1139 +} 1.1140 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1141 +template <typename R, typename T, typename U, typename A1> 1.1142 +inline MutantFunctor<R, Tuple1<A1> > 1.1143 +CreateFunctor(T** obj, R (__stdcall U::*method)(A1)) { 1.1144 + MutantRunner<R, Tuple1<A1> >* t = 1.1145 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1), 1.1146 + Tuple0, Tuple1<A1> > 1.1147 + (obj, method, MakeTuple()); 1.1148 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1149 +} 1.1150 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1151 +#endif // OS_WIN 1.1152 + 1.1153 +// 0 - 2 1.1154 +template <typename R, typename T, typename U, typename A1, typename A2> 1.1155 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1156 +CreateFunctor(T* obj, R (U::*method)(A1, A2)) { 1.1157 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1158 + new Mutant<R, T, R (U::*)(A1, A2), 1.1159 + Tuple0, Tuple2<A1, A2> > 1.1160 + (obj, method, MakeTuple()); 1.1161 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1162 +} 1.1163 + 1.1164 +template <typename R, typename A1, typename A2> 1.1165 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1166 +CreateFunctor(R (*function)(A1, A2)) { 1.1167 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1168 + new MutantFunction<R, R (*)(A1, A2), 1.1169 + Tuple0, Tuple2<A1, A2> > 1.1170 + (function, MakeTuple()); 1.1171 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1172 +} 1.1173 + 1.1174 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1175 +template <typename R, typename T, typename U, typename A1, typename A2> 1.1176 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1177 +CreateFunctor(T** obj, R (U::*method)(A1, A2)) { 1.1178 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1179 + new MutantLateObjectBind<R, T, R (U::*)(A1, A2), 1.1180 + Tuple0, Tuple2<A1, A2> > 1.1181 + (obj, method, MakeTuple()); 1.1182 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1183 +} 1.1184 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1185 + 1.1186 +#if defined (OS_WIN) 1.1187 +template <typename R, typename T, typename U, typename A1, typename A2> 1.1188 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1189 +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2)) { 1.1190 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1191 + new Mutant<R, T, R (__stdcall U::*)(A1, A2), 1.1192 + Tuple0, Tuple2<A1, A2> > 1.1193 + (obj, method, MakeTuple()); 1.1194 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1195 +} 1.1196 + 1.1197 +template <typename R, typename A1, typename A2> 1.1198 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1199 +CreateFunctor(R (__stdcall *function)(A1, A2)) { 1.1200 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1201 + new MutantFunction<R, R (__stdcall *)(A1, A2), 1.1202 + Tuple0, Tuple2<A1, A2> > 1.1203 + (function, MakeTuple()); 1.1204 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1205 +} 1.1206 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1207 +template <typename R, typename T, typename U, typename A1, typename A2> 1.1208 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1209 +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2)) { 1.1210 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1211 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2), 1.1212 + Tuple0, Tuple2<A1, A2> > 1.1213 + (obj, method, MakeTuple()); 1.1214 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1215 +} 1.1216 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1217 +#endif // OS_WIN 1.1218 + 1.1219 +// 0 - 3 1.1220 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1221 + typename A3> 1.1222 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1223 +CreateFunctor(T* obj, R (U::*method)(A1, A2, A3)) { 1.1224 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1225 + new Mutant<R, T, R (U::*)(A1, A2, A3), 1.1226 + Tuple0, Tuple3<A1, A2, A3> > 1.1227 + (obj, method, MakeTuple()); 1.1228 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1229 +} 1.1230 + 1.1231 +template <typename R, typename A1, typename A2, typename A3> 1.1232 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1233 +CreateFunctor(R (*function)(A1, A2, A3)) { 1.1234 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1235 + new MutantFunction<R, R (*)(A1, A2, A3), 1.1236 + Tuple0, Tuple3<A1, A2, A3> > 1.1237 + (function, MakeTuple()); 1.1238 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1239 +} 1.1240 + 1.1241 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1242 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1243 + typename A3> 1.1244 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1245 +CreateFunctor(T** obj, R (U::*method)(A1, A2, A3)) { 1.1246 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1247 + new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3), 1.1248 + Tuple0, Tuple3<A1, A2, A3> > 1.1249 + (obj, method, MakeTuple()); 1.1250 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1251 +} 1.1252 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1253 + 1.1254 +#if defined (OS_WIN) 1.1255 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1256 + typename A3> 1.1257 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1258 +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3)) { 1.1259 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1260 + new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3), 1.1261 + Tuple0, Tuple3<A1, A2, A3> > 1.1262 + (obj, method, MakeTuple()); 1.1263 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1264 +} 1.1265 + 1.1266 +template <typename R, typename A1, typename A2, typename A3> 1.1267 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1268 +CreateFunctor(R (__stdcall *function)(A1, A2, A3)) { 1.1269 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1270 + new MutantFunction<R, R (__stdcall *)(A1, A2, A3), 1.1271 + Tuple0, Tuple3<A1, A2, A3> > 1.1272 + (function, MakeTuple()); 1.1273 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1274 +} 1.1275 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1276 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1277 + typename A3> 1.1278 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1279 +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3)) { 1.1280 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1281 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3), 1.1282 + Tuple0, Tuple3<A1, A2, A3> > 1.1283 + (obj, method, MakeTuple()); 1.1284 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1285 +} 1.1286 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1287 +#endif // OS_WIN 1.1288 + 1.1289 +// 0 - 4 1.1290 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1291 + typename A3, typename A4> 1.1292 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1293 +CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4)) { 1.1294 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1295 + new Mutant<R, T, R (U::*)(A1, A2, A3, A4), 1.1296 + Tuple0, Tuple4<A1, A2, A3, A4> > 1.1297 + (obj, method, MakeTuple()); 1.1298 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1299 +} 1.1300 + 1.1301 +template <typename R, typename A1, typename A2, typename A3, typename A4> 1.1302 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1303 +CreateFunctor(R (*function)(A1, A2, A3, A4)) { 1.1304 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1305 + new MutantFunction<R, R (*)(A1, A2, A3, A4), 1.1306 + Tuple0, Tuple4<A1, A2, A3, A4> > 1.1307 + (function, MakeTuple()); 1.1308 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1309 +} 1.1310 + 1.1311 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1312 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1313 + typename A3, typename A4> 1.1314 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1315 +CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4)) { 1.1316 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1317 + new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4), 1.1318 + Tuple0, Tuple4<A1, A2, A3, A4> > 1.1319 + (obj, method, MakeTuple()); 1.1320 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1321 +} 1.1322 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1323 + 1.1324 +#if defined (OS_WIN) 1.1325 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1326 + typename A3, typename A4> 1.1327 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1328 +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4)) { 1.1329 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1330 + new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4), 1.1331 + Tuple0, Tuple4<A1, A2, A3, A4> > 1.1332 + (obj, method, MakeTuple()); 1.1333 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1334 +} 1.1335 + 1.1336 +template <typename R, typename A1, typename A2, typename A3, typename A4> 1.1337 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1338 +CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4)) { 1.1339 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1340 + new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4), 1.1341 + Tuple0, Tuple4<A1, A2, A3, A4> > 1.1342 + (function, MakeTuple()); 1.1343 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1344 +} 1.1345 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1346 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1347 + typename A3, typename A4> 1.1348 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1349 +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4)) { 1.1350 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1351 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4), 1.1352 + Tuple0, Tuple4<A1, A2, A3, A4> > 1.1353 + (obj, method, MakeTuple()); 1.1354 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1355 +} 1.1356 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1357 +#endif // OS_WIN 1.1358 + 1.1359 +// 0 - 5 1.1360 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1361 + typename A3, typename A4, typename A5> 1.1362 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1363 +CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4, A5)) { 1.1364 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1365 + new Mutant<R, T, R (U::*)(A1, A2, A3, A4, A5), 1.1366 + Tuple0, Tuple5<A1, A2, A3, A4, A5> > 1.1367 + (obj, method, MakeTuple()); 1.1368 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1369 +} 1.1370 + 1.1371 +template <typename R, typename A1, typename A2, typename A3, typename A4, 1.1372 + typename A5> 1.1373 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1374 +CreateFunctor(R (*function)(A1, A2, A3, A4, A5)) { 1.1375 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1376 + new MutantFunction<R, R (*)(A1, A2, A3, A4, A5), 1.1377 + Tuple0, Tuple5<A1, A2, A3, A4, A5> > 1.1378 + (function, MakeTuple()); 1.1379 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1380 +} 1.1381 + 1.1382 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1383 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1384 + typename A3, typename A4, typename A5> 1.1385 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1386 +CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4, A5)) { 1.1387 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1388 + new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4, A5), 1.1389 + Tuple0, Tuple5<A1, A2, A3, A4, A5> > 1.1390 + (obj, method, MakeTuple()); 1.1391 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1392 +} 1.1393 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1394 + 1.1395 +#if defined (OS_WIN) 1.1396 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1397 + typename A3, typename A4, typename A5> 1.1398 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1399 +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5)) { 1.1400 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1401 + new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5), 1.1402 + Tuple0, Tuple5<A1, A2, A3, A4, A5> > 1.1403 + (obj, method, MakeTuple()); 1.1404 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1405 +} 1.1406 + 1.1407 +template <typename R, typename A1, typename A2, typename A3, typename A4, 1.1408 + typename A5> 1.1409 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1410 +CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4, A5)) { 1.1411 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1412 + new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4, A5), 1.1413 + Tuple0, Tuple5<A1, A2, A3, A4, A5> > 1.1414 + (function, MakeTuple()); 1.1415 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1416 +} 1.1417 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1418 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1419 + typename A3, typename A4, typename A5> 1.1420 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1421 +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5)) { 1.1422 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1423 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5), 1.1424 + Tuple0, Tuple5<A1, A2, A3, A4, A5> > 1.1425 + (obj, method, MakeTuple()); 1.1426 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1427 +} 1.1428 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1429 +#endif // OS_WIN 1.1430 + 1.1431 +// 0 - 6 1.1432 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1433 + typename A3, typename A4, typename A5, typename A6> 1.1434 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1435 +CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4, A5, A6)) { 1.1436 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1437 + new Mutant<R, T, R (U::*)(A1, A2, A3, A4, A5, A6), 1.1438 + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1439 + (obj, method, MakeTuple()); 1.1440 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1441 +} 1.1442 + 1.1443 +template <typename R, typename A1, typename A2, typename A3, typename A4, 1.1444 + typename A5, typename A6> 1.1445 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1446 +CreateFunctor(R (*function)(A1, A2, A3, A4, A5, A6)) { 1.1447 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1448 + new MutantFunction<R, R (*)(A1, A2, A3, A4, A5, A6), 1.1449 + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1450 + (function, MakeTuple()); 1.1451 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1452 +} 1.1453 + 1.1454 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1455 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1456 + typename A3, typename A4, typename A5, typename A6> 1.1457 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1458 +CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4, A5, A6)) { 1.1459 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1460 + new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4, A5, A6), 1.1461 + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1462 + (obj, method, MakeTuple()); 1.1463 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1464 +} 1.1465 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1466 + 1.1467 +#if defined (OS_WIN) 1.1468 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1469 + typename A3, typename A4, typename A5, typename A6> 1.1470 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1471 +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5, A6)) { 1.1472 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1473 + new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5, A6), 1.1474 + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1475 + (obj, method, MakeTuple()); 1.1476 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1477 +} 1.1478 + 1.1479 +template <typename R, typename A1, typename A2, typename A3, typename A4, 1.1480 + typename A5, typename A6> 1.1481 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1482 +CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4, A5, A6)) { 1.1483 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1484 + new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4, A5, A6), 1.1485 + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1486 + (function, MakeTuple()); 1.1487 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1488 +} 1.1489 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1490 +template <typename R, typename T, typename U, typename A1, typename A2, 1.1491 + typename A3, typename A4, typename A5, typename A6> 1.1492 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1493 +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5, A6)) { 1.1494 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1495 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5, A6), 1.1496 + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1497 + (obj, method, MakeTuple()); 1.1498 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1499 +} 1.1500 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1501 +#endif // OS_WIN 1.1502 + 1.1503 +// 1 - 0 1.1504 +template <typename R, typename T, typename U, typename P1, typename X1> 1.1505 +inline MutantFunctor<R, Tuple0> 1.1506 +CreateFunctor(T* obj, R (U::*method)(X1), const P1& p1) { 1.1507 + MutantRunner<R, Tuple0>* t = 1.1508 + new Mutant<R, T, R (U::*)(X1), 1.1509 + Tuple1<P1>, Tuple0> 1.1510 + (obj, method, MakeTuple(p1)); 1.1511 + return MutantFunctor<R, Tuple0>(t); 1.1512 +} 1.1513 + 1.1514 +template <typename R, typename P1, typename X1> 1.1515 +inline MutantFunctor<R, Tuple0> 1.1516 +CreateFunctor(R (*function)(X1), const P1& p1) { 1.1517 + MutantRunner<R, Tuple0>* t = 1.1518 + new MutantFunction<R, R (*)(X1), 1.1519 + Tuple1<P1>, Tuple0> 1.1520 + (function, MakeTuple(p1)); 1.1521 + return MutantFunctor<R, Tuple0>(t); 1.1522 +} 1.1523 + 1.1524 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1525 +template <typename R, typename T, typename U, typename P1, typename X1> 1.1526 +inline MutantFunctor<R, Tuple0> 1.1527 +CreateFunctor(T** obj, R (U::*method)(X1), const P1& p1) { 1.1528 + MutantRunner<R, Tuple0>* t = 1.1529 + new MutantLateObjectBind<R, T, R (U::*)(X1), 1.1530 + Tuple1<P1>, Tuple0> 1.1531 + (obj, method, MakeTuple(p1)); 1.1532 + return MutantFunctor<R, Tuple0>(t); 1.1533 +} 1.1534 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1535 + 1.1536 +#if defined (OS_WIN) 1.1537 +template <typename R, typename T, typename U, typename P1, typename X1> 1.1538 +inline MutantFunctor<R, Tuple0> 1.1539 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1), const P1& p1) { 1.1540 + MutantRunner<R, Tuple0>* t = 1.1541 + new Mutant<R, T, R (__stdcall U::*)(X1), 1.1542 + Tuple1<P1>, Tuple0> 1.1543 + (obj, method, MakeTuple(p1)); 1.1544 + return MutantFunctor<R, Tuple0>(t); 1.1545 +} 1.1546 + 1.1547 +template <typename R, typename P1, typename X1> 1.1548 +inline MutantFunctor<R, Tuple0> 1.1549 +CreateFunctor(R (__stdcall *function)(X1), const P1& p1) { 1.1550 + MutantRunner<R, Tuple0>* t = 1.1551 + new MutantFunction<R, R (__stdcall *)(X1), 1.1552 + Tuple1<P1>, Tuple0> 1.1553 + (function, MakeTuple(p1)); 1.1554 + return MutantFunctor<R, Tuple0>(t); 1.1555 +} 1.1556 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1557 +template <typename R, typename T, typename U, typename P1, typename X1> 1.1558 +inline MutantFunctor<R, Tuple0> 1.1559 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1), const P1& p1) { 1.1560 + MutantRunner<R, Tuple0>* t = 1.1561 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1), 1.1562 + Tuple1<P1>, Tuple0> 1.1563 + (obj, method, MakeTuple(p1)); 1.1564 + return MutantFunctor<R, Tuple0>(t); 1.1565 +} 1.1566 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1567 +#endif // OS_WIN 1.1568 + 1.1569 +// 1 - 1 1.1570 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1571 + typename X1> 1.1572 +inline MutantFunctor<R, Tuple1<A1> > 1.1573 +CreateFunctor(T* obj, R (U::*method)(X1, A1), const P1& p1) { 1.1574 + MutantRunner<R, Tuple1<A1> >* t = 1.1575 + new Mutant<R, T, R (U::*)(X1, A1), 1.1576 + Tuple1<P1>, Tuple1<A1> > 1.1577 + (obj, method, MakeTuple(p1)); 1.1578 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1579 +} 1.1580 + 1.1581 +template <typename R, typename P1, typename A1, typename X1> 1.1582 +inline MutantFunctor<R, Tuple1<A1> > 1.1583 +CreateFunctor(R (*function)(X1, A1), const P1& p1) { 1.1584 + MutantRunner<R, Tuple1<A1> >* t = 1.1585 + new MutantFunction<R, R (*)(X1, A1), 1.1586 + Tuple1<P1>, Tuple1<A1> > 1.1587 + (function, MakeTuple(p1)); 1.1588 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1589 +} 1.1590 + 1.1591 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1592 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1593 + typename X1> 1.1594 +inline MutantFunctor<R, Tuple1<A1> > 1.1595 +CreateFunctor(T** obj, R (U::*method)(X1, A1), const P1& p1) { 1.1596 + MutantRunner<R, Tuple1<A1> >* t = 1.1597 + new MutantLateObjectBind<R, T, R (U::*)(X1, A1), 1.1598 + Tuple1<P1>, Tuple1<A1> > 1.1599 + (obj, method, MakeTuple(p1)); 1.1600 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1601 +} 1.1602 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1603 + 1.1604 +#if defined (OS_WIN) 1.1605 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1606 + typename X1> 1.1607 +inline MutantFunctor<R, Tuple1<A1> > 1.1608 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1), const P1& p1) { 1.1609 + MutantRunner<R, Tuple1<A1> >* t = 1.1610 + new Mutant<R, T, R (__stdcall U::*)(X1, A1), 1.1611 + Tuple1<P1>, Tuple1<A1> > 1.1612 + (obj, method, MakeTuple(p1)); 1.1613 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1614 +} 1.1615 + 1.1616 +template <typename R, typename P1, typename A1, typename X1> 1.1617 +inline MutantFunctor<R, Tuple1<A1> > 1.1618 +CreateFunctor(R (__stdcall *function)(X1, A1), const P1& p1) { 1.1619 + MutantRunner<R, Tuple1<A1> >* t = 1.1620 + new MutantFunction<R, R (__stdcall *)(X1, A1), 1.1621 + Tuple1<P1>, Tuple1<A1> > 1.1622 + (function, MakeTuple(p1)); 1.1623 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1624 +} 1.1625 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1626 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1627 + typename X1> 1.1628 +inline MutantFunctor<R, Tuple1<A1> > 1.1629 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1), const P1& p1) { 1.1630 + MutantRunner<R, Tuple1<A1> >* t = 1.1631 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1), 1.1632 + Tuple1<P1>, Tuple1<A1> > 1.1633 + (obj, method, MakeTuple(p1)); 1.1634 + return MutantFunctor<R, Tuple1<A1> >(t); 1.1635 +} 1.1636 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1637 +#endif // OS_WIN 1.1638 + 1.1639 +// 1 - 2 1.1640 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1641 + typename A2, typename X1> 1.1642 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1643 +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2), const P1& p1) { 1.1644 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1645 + new Mutant<R, T, R (U::*)(X1, A1, A2), 1.1646 + Tuple1<P1>, Tuple2<A1, A2> > 1.1647 + (obj, method, MakeTuple(p1)); 1.1648 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1649 +} 1.1650 + 1.1651 +template <typename R, typename P1, typename A1, typename A2, typename X1> 1.1652 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1653 +CreateFunctor(R (*function)(X1, A1, A2), const P1& p1) { 1.1654 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1655 + new MutantFunction<R, R (*)(X1, A1, A2), 1.1656 + Tuple1<P1>, Tuple2<A1, A2> > 1.1657 + (function, MakeTuple(p1)); 1.1658 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1659 +} 1.1660 + 1.1661 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1662 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1663 + typename A2, typename X1> 1.1664 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1665 +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2), const P1& p1) { 1.1666 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1667 + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2), 1.1668 + Tuple1<P1>, Tuple2<A1, A2> > 1.1669 + (obj, method, MakeTuple(p1)); 1.1670 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1671 +} 1.1672 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1673 + 1.1674 +#if defined (OS_WIN) 1.1675 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1676 + typename A2, typename X1> 1.1677 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1678 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2), const P1& p1) { 1.1679 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1680 + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2), 1.1681 + Tuple1<P1>, Tuple2<A1, A2> > 1.1682 + (obj, method, MakeTuple(p1)); 1.1683 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1684 +} 1.1685 + 1.1686 +template <typename R, typename P1, typename A1, typename A2, typename X1> 1.1687 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1688 +CreateFunctor(R (__stdcall *function)(X1, A1, A2), const P1& p1) { 1.1689 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1690 + new MutantFunction<R, R (__stdcall *)(X1, A1, A2), 1.1691 + Tuple1<P1>, Tuple2<A1, A2> > 1.1692 + (function, MakeTuple(p1)); 1.1693 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1694 +} 1.1695 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1696 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1697 + typename A2, typename X1> 1.1698 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.1699 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2), const P1& p1) { 1.1700 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.1701 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2), 1.1702 + Tuple1<P1>, Tuple2<A1, A2> > 1.1703 + (obj, method, MakeTuple(p1)); 1.1704 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.1705 +} 1.1706 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1707 +#endif // OS_WIN 1.1708 + 1.1709 +// 1 - 3 1.1710 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1711 + typename A2, typename A3, typename X1> 1.1712 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1713 +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3), const P1& p1) { 1.1714 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1715 + new Mutant<R, T, R (U::*)(X1, A1, A2, A3), 1.1716 + Tuple1<P1>, Tuple3<A1, A2, A3> > 1.1717 + (obj, method, MakeTuple(p1)); 1.1718 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1719 +} 1.1720 + 1.1721 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1722 + typename X1> 1.1723 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1724 +CreateFunctor(R (*function)(X1, A1, A2, A3), const P1& p1) { 1.1725 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1726 + new MutantFunction<R, R (*)(X1, A1, A2, A3), 1.1727 + Tuple1<P1>, Tuple3<A1, A2, A3> > 1.1728 + (function, MakeTuple(p1)); 1.1729 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1730 +} 1.1731 + 1.1732 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1733 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1734 + typename A2, typename A3, typename X1> 1.1735 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1736 +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3), const P1& p1) { 1.1737 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1738 + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3), 1.1739 + Tuple1<P1>, Tuple3<A1, A2, A3> > 1.1740 + (obj, method, MakeTuple(p1)); 1.1741 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1742 +} 1.1743 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1744 + 1.1745 +#if defined (OS_WIN) 1.1746 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1747 + typename A2, typename A3, typename X1> 1.1748 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1749 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3), const P1& p1) { 1.1750 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1751 + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3), 1.1752 + Tuple1<P1>, Tuple3<A1, A2, A3> > 1.1753 + (obj, method, MakeTuple(p1)); 1.1754 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1755 +} 1.1756 + 1.1757 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1758 + typename X1> 1.1759 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1760 +CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3), const P1& p1) { 1.1761 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1762 + new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3), 1.1763 + Tuple1<P1>, Tuple3<A1, A2, A3> > 1.1764 + (function, MakeTuple(p1)); 1.1765 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1766 +} 1.1767 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1768 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1769 + typename A2, typename A3, typename X1> 1.1770 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.1771 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3), const P1& p1) { 1.1772 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.1773 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3), 1.1774 + Tuple1<P1>, Tuple3<A1, A2, A3> > 1.1775 + (obj, method, MakeTuple(p1)); 1.1776 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.1777 +} 1.1778 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1779 +#endif // OS_WIN 1.1780 + 1.1781 +// 1 - 4 1.1782 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1783 + typename A2, typename A3, typename A4, typename X1> 1.1784 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1785 +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4), const P1& p1) { 1.1786 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1787 + new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4), 1.1788 + Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1.1789 + (obj, method, MakeTuple(p1)); 1.1790 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1791 +} 1.1792 + 1.1793 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1794 + typename A4, typename X1> 1.1795 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1796 +CreateFunctor(R (*function)(X1, A1, A2, A3, A4), const P1& p1) { 1.1797 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1798 + new MutantFunction<R, R (*)(X1, A1, A2, A3, A4), 1.1799 + Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1.1800 + (function, MakeTuple(p1)); 1.1801 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1802 +} 1.1803 + 1.1804 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1805 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1806 + typename A2, typename A3, typename A4, typename X1> 1.1807 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1808 +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4), const P1& p1) { 1.1809 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1810 + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4), 1.1811 + Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1.1812 + (obj, method, MakeTuple(p1)); 1.1813 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1814 +} 1.1815 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1816 + 1.1817 +#if defined (OS_WIN) 1.1818 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1819 + typename A2, typename A3, typename A4, typename X1> 1.1820 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1821 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4), 1.1822 + const P1& p1) { 1.1823 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1824 + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4), 1.1825 + Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1.1826 + (obj, method, MakeTuple(p1)); 1.1827 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1828 +} 1.1829 + 1.1830 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1831 + typename A4, typename X1> 1.1832 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1833 +CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4), const P1& p1) { 1.1834 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1835 + new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4), 1.1836 + Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1.1837 + (function, MakeTuple(p1)); 1.1838 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1839 +} 1.1840 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1841 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1842 + typename A2, typename A3, typename A4, typename X1> 1.1843 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.1844 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4), 1.1845 + const P1& p1) { 1.1846 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.1847 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4), 1.1848 + Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1.1849 + (obj, method, MakeTuple(p1)); 1.1850 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.1851 +} 1.1852 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1853 +#endif // OS_WIN 1.1854 + 1.1855 +// 1 - 5 1.1856 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1857 + typename A2, typename A3, typename A4, typename A5, typename X1> 1.1858 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1859 +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4, A5), const P1& p1) { 1.1860 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1861 + new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4, A5), 1.1862 + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > 1.1863 + (obj, method, MakeTuple(p1)); 1.1864 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1865 +} 1.1866 + 1.1867 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1868 + typename A4, typename A5, typename X1> 1.1869 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1870 +CreateFunctor(R (*function)(X1, A1, A2, A3, A4, A5), const P1& p1) { 1.1871 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1872 + new MutantFunction<R, R (*)(X1, A1, A2, A3, A4, A5), 1.1873 + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > 1.1874 + (function, MakeTuple(p1)); 1.1875 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1876 +} 1.1877 + 1.1878 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1879 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1880 + typename A2, typename A3, typename A4, typename A5, typename X1> 1.1881 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1882 +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4, A5), const P1& p1) { 1.1883 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1884 + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4, A5), 1.1885 + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > 1.1886 + (obj, method, MakeTuple(p1)); 1.1887 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1888 +} 1.1889 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1890 + 1.1891 +#if defined (OS_WIN) 1.1892 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1893 + typename A2, typename A3, typename A4, typename A5, typename X1> 1.1894 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1895 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5), 1.1896 + const P1& p1) { 1.1897 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1898 + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5), 1.1899 + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > 1.1900 + (obj, method, MakeTuple(p1)); 1.1901 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1902 +} 1.1903 + 1.1904 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1905 + typename A4, typename A5, typename X1> 1.1906 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1907 +CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4, A5), const P1& p1) { 1.1908 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1909 + new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4, A5), 1.1910 + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > 1.1911 + (function, MakeTuple(p1)); 1.1912 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1913 +} 1.1914 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1915 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1916 + typename A2, typename A3, typename A4, typename A5, typename X1> 1.1917 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.1918 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5), 1.1919 + const P1& p1) { 1.1920 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.1921 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5), 1.1922 + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > 1.1923 + (obj, method, MakeTuple(p1)); 1.1924 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.1925 +} 1.1926 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1927 +#endif // OS_WIN 1.1928 + 1.1929 +// 1 - 6 1.1930 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1931 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.1932 + typename X1> 1.1933 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1934 +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4, A5, A6), 1.1935 + const P1& p1) { 1.1936 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1937 + new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4, A5, A6), 1.1938 + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1939 + (obj, method, MakeTuple(p1)); 1.1940 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1941 +} 1.1942 + 1.1943 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1944 + typename A4, typename A5, typename A6, typename X1> 1.1945 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1946 +CreateFunctor(R (*function)(X1, A1, A2, A3, A4, A5, A6), const P1& p1) { 1.1947 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1948 + new MutantFunction<R, R (*)(X1, A1, A2, A3, A4, A5, A6), 1.1949 + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1950 + (function, MakeTuple(p1)); 1.1951 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1952 +} 1.1953 + 1.1954 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1955 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1956 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.1957 + typename X1> 1.1958 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1959 +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4, A5, A6), 1.1960 + const P1& p1) { 1.1961 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1962 + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4, A5, A6), 1.1963 + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1964 + (obj, method, MakeTuple(p1)); 1.1965 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1966 +} 1.1967 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1968 + 1.1969 +#if defined (OS_WIN) 1.1970 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1971 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.1972 + typename X1> 1.1973 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1974 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5, A6), 1.1975 + const P1& p1) { 1.1976 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1977 + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5, A6), 1.1978 + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1979 + (obj, method, MakeTuple(p1)); 1.1980 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1981 +} 1.1982 + 1.1983 +template <typename R, typename P1, typename A1, typename A2, typename A3, 1.1984 + typename A4, typename A5, typename A6, typename X1> 1.1985 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1986 +CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4, A5, A6), 1.1987 + const P1& p1) { 1.1988 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.1989 + new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4, A5, A6), 1.1990 + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1991 + (function, MakeTuple(p1)); 1.1992 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.1993 +} 1.1994 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.1995 +template <typename R, typename T, typename U, typename P1, typename A1, 1.1996 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.1997 + typename X1> 1.1998 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.1999 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5, A6), 1.2000 + const P1& p1) { 1.2001 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2002 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5, A6), 1.2003 + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2004 + (obj, method, MakeTuple(p1)); 1.2005 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2006 +} 1.2007 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2008 +#endif // OS_WIN 1.2009 + 1.2010 +// 2 - 0 1.2011 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2012 + typename X1, typename X2> 1.2013 +inline MutantFunctor<R, Tuple0> 1.2014 +CreateFunctor(T* obj, R (U::*method)(X1, X2), const P1& p1, const P2& p2) { 1.2015 + MutantRunner<R, Tuple0>* t = 1.2016 + new Mutant<R, T, R (U::*)(X1, X2), 1.2017 + Tuple2<P1, P2>, Tuple0> 1.2018 + (obj, method, MakeTuple(p1, p2)); 1.2019 + return MutantFunctor<R, Tuple0>(t); 1.2020 +} 1.2021 + 1.2022 +template <typename R, typename P1, typename P2, typename X1, typename X2> 1.2023 +inline MutantFunctor<R, Tuple0> 1.2024 +CreateFunctor(R (*function)(X1, X2), const P1& p1, const P2& p2) { 1.2025 + MutantRunner<R, Tuple0>* t = 1.2026 + new MutantFunction<R, R (*)(X1, X2), 1.2027 + Tuple2<P1, P2>, Tuple0> 1.2028 + (function, MakeTuple(p1, p2)); 1.2029 + return MutantFunctor<R, Tuple0>(t); 1.2030 +} 1.2031 + 1.2032 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2033 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2034 + typename X1, typename X2> 1.2035 +inline MutantFunctor<R, Tuple0> 1.2036 +CreateFunctor(T** obj, R (U::*method)(X1, X2), const P1& p1, const P2& p2) { 1.2037 + MutantRunner<R, Tuple0>* t = 1.2038 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2), 1.2039 + Tuple2<P1, P2>, Tuple0> 1.2040 + (obj, method, MakeTuple(p1, p2)); 1.2041 + return MutantFunctor<R, Tuple0>(t); 1.2042 +} 1.2043 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2044 + 1.2045 +#if defined (OS_WIN) 1.2046 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2047 + typename X1, typename X2> 1.2048 +inline MutantFunctor<R, Tuple0> 1.2049 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2), const P1& p1, 1.2050 + const P2& p2) { 1.2051 + MutantRunner<R, Tuple0>* t = 1.2052 + new Mutant<R, T, R (__stdcall U::*)(X1, X2), 1.2053 + Tuple2<P1, P2>, Tuple0> 1.2054 + (obj, method, MakeTuple(p1, p2)); 1.2055 + return MutantFunctor<R, Tuple0>(t); 1.2056 +} 1.2057 + 1.2058 +template <typename R, typename P1, typename P2, typename X1, typename X2> 1.2059 +inline MutantFunctor<R, Tuple0> 1.2060 +CreateFunctor(R (__stdcall *function)(X1, X2), const P1& p1, const P2& p2) { 1.2061 + MutantRunner<R, Tuple0>* t = 1.2062 + new MutantFunction<R, R (__stdcall *)(X1, X2), 1.2063 + Tuple2<P1, P2>, Tuple0> 1.2064 + (function, MakeTuple(p1, p2)); 1.2065 + return MutantFunctor<R, Tuple0>(t); 1.2066 +} 1.2067 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2068 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2069 + typename X1, typename X2> 1.2070 +inline MutantFunctor<R, Tuple0> 1.2071 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2), const P1& p1, 1.2072 + const P2& p2) { 1.2073 + MutantRunner<R, Tuple0>* t = 1.2074 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2), 1.2075 + Tuple2<P1, P2>, Tuple0> 1.2076 + (obj, method, MakeTuple(p1, p2)); 1.2077 + return MutantFunctor<R, Tuple0>(t); 1.2078 +} 1.2079 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2080 +#endif // OS_WIN 1.2081 + 1.2082 +// 2 - 1 1.2083 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2084 + typename A1, typename X1, typename X2> 1.2085 +inline MutantFunctor<R, Tuple1<A1> > 1.2086 +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1), const P1& p1, const P2& p2) { 1.2087 + MutantRunner<R, Tuple1<A1> >* t = 1.2088 + new Mutant<R, T, R (U::*)(X1, X2, A1), 1.2089 + Tuple2<P1, P2>, Tuple1<A1> > 1.2090 + (obj, method, MakeTuple(p1, p2)); 1.2091 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2092 +} 1.2093 + 1.2094 +template <typename R, typename P1, typename P2, typename A1, typename X1, 1.2095 + typename X2> 1.2096 +inline MutantFunctor<R, Tuple1<A1> > 1.2097 +CreateFunctor(R (*function)(X1, X2, A1), const P1& p1, const P2& p2) { 1.2098 + MutantRunner<R, Tuple1<A1> >* t = 1.2099 + new MutantFunction<R, R (*)(X1, X2, A1), 1.2100 + Tuple2<P1, P2>, Tuple1<A1> > 1.2101 + (function, MakeTuple(p1, p2)); 1.2102 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2103 +} 1.2104 + 1.2105 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2106 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2107 + typename A1, typename X1, typename X2> 1.2108 +inline MutantFunctor<R, Tuple1<A1> > 1.2109 +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1), const P1& p1, const P2& p2) { 1.2110 + MutantRunner<R, Tuple1<A1> >* t = 1.2111 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1), 1.2112 + Tuple2<P1, P2>, Tuple1<A1> > 1.2113 + (obj, method, MakeTuple(p1, p2)); 1.2114 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2115 +} 1.2116 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2117 + 1.2118 +#if defined (OS_WIN) 1.2119 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2120 + typename A1, typename X1, typename X2> 1.2121 +inline MutantFunctor<R, Tuple1<A1> > 1.2122 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1), const P1& p1, 1.2123 + const P2& p2) { 1.2124 + MutantRunner<R, Tuple1<A1> >* t = 1.2125 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1), 1.2126 + Tuple2<P1, P2>, Tuple1<A1> > 1.2127 + (obj, method, MakeTuple(p1, p2)); 1.2128 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2129 +} 1.2130 + 1.2131 +template <typename R, typename P1, typename P2, typename A1, typename X1, 1.2132 + typename X2> 1.2133 +inline MutantFunctor<R, Tuple1<A1> > 1.2134 +CreateFunctor(R (__stdcall *function)(X1, X2, A1), const P1& p1, 1.2135 + const P2& p2) { 1.2136 + MutantRunner<R, Tuple1<A1> >* t = 1.2137 + new MutantFunction<R, R (__stdcall *)(X1, X2, A1), 1.2138 + Tuple2<P1, P2>, Tuple1<A1> > 1.2139 + (function, MakeTuple(p1, p2)); 1.2140 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2141 +} 1.2142 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2143 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2144 + typename A1, typename X1, typename X2> 1.2145 +inline MutantFunctor<R, Tuple1<A1> > 1.2146 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1), const P1& p1, 1.2147 + const P2& p2) { 1.2148 + MutantRunner<R, Tuple1<A1> >* t = 1.2149 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1), 1.2150 + Tuple2<P1, P2>, Tuple1<A1> > 1.2151 + (obj, method, MakeTuple(p1, p2)); 1.2152 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2153 +} 1.2154 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2155 +#endif // OS_WIN 1.2156 + 1.2157 +// 2 - 2 1.2158 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2159 + typename A1, typename A2, typename X1, typename X2> 1.2160 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2161 +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2), const P1& p1, 1.2162 + const P2& p2) { 1.2163 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2164 + new Mutant<R, T, R (U::*)(X1, X2, A1, A2), 1.2165 + Tuple2<P1, P2>, Tuple2<A1, A2> > 1.2166 + (obj, method, MakeTuple(p1, p2)); 1.2167 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2168 +} 1.2169 + 1.2170 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2171 + typename X1, typename X2> 1.2172 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2173 +CreateFunctor(R (*function)(X1, X2, A1, A2), const P1& p1, const P2& p2) { 1.2174 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2175 + new MutantFunction<R, R (*)(X1, X2, A1, A2), 1.2176 + Tuple2<P1, P2>, Tuple2<A1, A2> > 1.2177 + (function, MakeTuple(p1, p2)); 1.2178 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2179 +} 1.2180 + 1.2181 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2182 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2183 + typename A1, typename A2, typename X1, typename X2> 1.2184 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2185 +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2), const P1& p1, 1.2186 + const P2& p2) { 1.2187 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2188 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2), 1.2189 + Tuple2<P1, P2>, Tuple2<A1, A2> > 1.2190 + (obj, method, MakeTuple(p1, p2)); 1.2191 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2192 +} 1.2193 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2194 + 1.2195 +#if defined (OS_WIN) 1.2196 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2197 + typename A1, typename A2, typename X1, typename X2> 1.2198 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2199 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2), const P1& p1, 1.2200 + const P2& p2) { 1.2201 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2202 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2), 1.2203 + Tuple2<P1, P2>, Tuple2<A1, A2> > 1.2204 + (obj, method, MakeTuple(p1, p2)); 1.2205 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2206 +} 1.2207 + 1.2208 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2209 + typename X1, typename X2> 1.2210 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2211 +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2), const P1& p1, 1.2212 + const P2& p2) { 1.2213 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2214 + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2), 1.2215 + Tuple2<P1, P2>, Tuple2<A1, A2> > 1.2216 + (function, MakeTuple(p1, p2)); 1.2217 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2218 +} 1.2219 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2220 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2221 + typename A1, typename A2, typename X1, typename X2> 1.2222 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2223 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2), const P1& p1, 1.2224 + const P2& p2) { 1.2225 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2226 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2), 1.2227 + Tuple2<P1, P2>, Tuple2<A1, A2> > 1.2228 + (obj, method, MakeTuple(p1, p2)); 1.2229 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2230 +} 1.2231 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2232 +#endif // OS_WIN 1.2233 + 1.2234 +// 2 - 3 1.2235 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2236 + typename A1, typename A2, typename A3, typename X1, typename X2> 1.2237 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2238 +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3), const P1& p1, 1.2239 + const P2& p2) { 1.2240 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2241 + new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3), 1.2242 + Tuple2<P1, P2>, Tuple3<A1, A2, A3> > 1.2243 + (obj, method, MakeTuple(p1, p2)); 1.2244 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2245 +} 1.2246 + 1.2247 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2248 + typename A3, typename X1, typename X2> 1.2249 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2250 +CreateFunctor(R (*function)(X1, X2, A1, A2, A3), const P1& p1, const P2& p2) { 1.2251 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2252 + new MutantFunction<R, R (*)(X1, X2, A1, A2, A3), 1.2253 + Tuple2<P1, P2>, Tuple3<A1, A2, A3> > 1.2254 + (function, MakeTuple(p1, p2)); 1.2255 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2256 +} 1.2257 + 1.2258 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2259 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2260 + typename A1, typename A2, typename A3, typename X1, typename X2> 1.2261 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2262 +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3), const P1& p1, 1.2263 + const P2& p2) { 1.2264 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2265 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3), 1.2266 + Tuple2<P1, P2>, Tuple3<A1, A2, A3> > 1.2267 + (obj, method, MakeTuple(p1, p2)); 1.2268 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2269 +} 1.2270 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2271 + 1.2272 +#if defined (OS_WIN) 1.2273 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2274 + typename A1, typename A2, typename A3, typename X1, typename X2> 1.2275 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2276 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3), 1.2277 + const P1& p1, const P2& p2) { 1.2278 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2279 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3), 1.2280 + Tuple2<P1, P2>, Tuple3<A1, A2, A3> > 1.2281 + (obj, method, MakeTuple(p1, p2)); 1.2282 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2283 +} 1.2284 + 1.2285 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2286 + typename A3, typename X1, typename X2> 1.2287 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2288 +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3), const P1& p1, 1.2289 + const P2& p2) { 1.2290 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2291 + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3), 1.2292 + Tuple2<P1, P2>, Tuple3<A1, A2, A3> > 1.2293 + (function, MakeTuple(p1, p2)); 1.2294 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2295 +} 1.2296 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2297 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2298 + typename A1, typename A2, typename A3, typename X1, typename X2> 1.2299 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2300 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3), 1.2301 + const P1& p1, const P2& p2) { 1.2302 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2303 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3), 1.2304 + Tuple2<P1, P2>, Tuple3<A1, A2, A3> > 1.2305 + (obj, method, MakeTuple(p1, p2)); 1.2306 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2307 +} 1.2308 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2309 +#endif // OS_WIN 1.2310 + 1.2311 +// 2 - 4 1.2312 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2313 + typename A1, typename A2, typename A3, typename A4, typename X1, 1.2314 + typename X2> 1.2315 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2316 +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4), const P1& p1, 1.2317 + const P2& p2) { 1.2318 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2319 + new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4), 1.2320 + Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 1.2321 + (obj, method, MakeTuple(p1, p2)); 1.2322 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2323 +} 1.2324 + 1.2325 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2326 + typename A3, typename A4, typename X1, typename X2> 1.2327 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2328 +CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4), const P1& p1, 1.2329 + const P2& p2) { 1.2330 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2331 + new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4), 1.2332 + Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 1.2333 + (function, MakeTuple(p1, p2)); 1.2334 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2335 +} 1.2336 + 1.2337 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2338 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2339 + typename A1, typename A2, typename A3, typename A4, typename X1, 1.2340 + typename X2> 1.2341 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2342 +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4), const P1& p1, 1.2343 + const P2& p2) { 1.2344 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2345 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4), 1.2346 + Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 1.2347 + (obj, method, MakeTuple(p1, p2)); 1.2348 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2349 +} 1.2350 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2351 + 1.2352 +#if defined (OS_WIN) 1.2353 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2354 + typename A1, typename A2, typename A3, typename A4, typename X1, 1.2355 + typename X2> 1.2356 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2357 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4), 1.2358 + const P1& p1, const P2& p2) { 1.2359 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2360 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4), 1.2361 + Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 1.2362 + (obj, method, MakeTuple(p1, p2)); 1.2363 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2364 +} 1.2365 + 1.2366 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2367 + typename A3, typename A4, typename X1, typename X2> 1.2368 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2369 +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4), const P1& p1, 1.2370 + const P2& p2) { 1.2371 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2372 + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4), 1.2373 + Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 1.2374 + (function, MakeTuple(p1, p2)); 1.2375 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2376 +} 1.2377 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2378 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2379 + typename A1, typename A2, typename A3, typename A4, typename X1, 1.2380 + typename X2> 1.2381 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2382 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4), 1.2383 + const P1& p1, const P2& p2) { 1.2384 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2385 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4), 1.2386 + Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 1.2387 + (obj, method, MakeTuple(p1, p2)); 1.2388 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2389 +} 1.2390 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2391 +#endif // OS_WIN 1.2392 + 1.2393 +// 2 - 5 1.2394 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2395 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2396 + typename X1, typename X2> 1.2397 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2398 +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, 1.2399 + const P2& p2) { 1.2400 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2401 + new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5), 1.2402 + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > 1.2403 + (obj, method, MakeTuple(p1, p2)); 1.2404 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2405 +} 1.2406 + 1.2407 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2408 + typename A3, typename A4, typename A5, typename X1, typename X2> 1.2409 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2410 +CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, 1.2411 + const P2& p2) { 1.2412 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2413 + new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4, A5), 1.2414 + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > 1.2415 + (function, MakeTuple(p1, p2)); 1.2416 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2417 +} 1.2418 + 1.2419 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2420 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2421 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2422 + typename X1, typename X2> 1.2423 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2424 +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, 1.2425 + const P2& p2) { 1.2426 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2427 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5), 1.2428 + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > 1.2429 + (obj, method, MakeTuple(p1, p2)); 1.2430 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2431 +} 1.2432 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2433 + 1.2434 +#if defined (OS_WIN) 1.2435 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2436 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2437 + typename X1, typename X2> 1.2438 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2439 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5), 1.2440 + const P1& p1, const P2& p2) { 1.2441 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2442 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5), 1.2443 + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > 1.2444 + (obj, method, MakeTuple(p1, p2)); 1.2445 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2446 +} 1.2447 + 1.2448 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2449 + typename A3, typename A4, typename A5, typename X1, typename X2> 1.2450 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2451 +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, 1.2452 + const P2& p2) { 1.2453 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2454 + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4, A5), 1.2455 + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > 1.2456 + (function, MakeTuple(p1, p2)); 1.2457 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2458 +} 1.2459 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2460 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2461 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2462 + typename X1, typename X2> 1.2463 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2464 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5), 1.2465 + const P1& p1, const P2& p2) { 1.2466 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2467 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5), 1.2468 + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > 1.2469 + (obj, method, MakeTuple(p1, p2)); 1.2470 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2471 +} 1.2472 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2473 +#endif // OS_WIN 1.2474 + 1.2475 +// 2 - 6 1.2476 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2477 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2478 + typename A6, typename X1, typename X2> 1.2479 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2480 +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2481 + const P1& p1, const P2& p2) { 1.2482 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2483 + new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2484 + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2485 + (obj, method, MakeTuple(p1, p2)); 1.2486 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2487 +} 1.2488 + 1.2489 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2490 + typename A3, typename A4, typename A5, typename A6, typename X1, 1.2491 + typename X2> 1.2492 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2493 +CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4, A5, A6), const P1& p1, 1.2494 + const P2& p2) { 1.2495 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2496 + new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2497 + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2498 + (function, MakeTuple(p1, p2)); 1.2499 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2500 +} 1.2501 + 1.2502 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2503 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2504 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2505 + typename A6, typename X1, typename X2> 1.2506 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2507 +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2508 + const P1& p1, const P2& p2) { 1.2509 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2510 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2511 + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2512 + (obj, method, MakeTuple(p1, p2)); 1.2513 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2514 +} 1.2515 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2516 + 1.2517 +#if defined (OS_WIN) 1.2518 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2519 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2520 + typename A6, typename X1, typename X2> 1.2521 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2522 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2523 + const P1& p1, const P2& p2) { 1.2524 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2525 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2526 + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2527 + (obj, method, MakeTuple(p1, p2)); 1.2528 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2529 +} 1.2530 + 1.2531 +template <typename R, typename P1, typename P2, typename A1, typename A2, 1.2532 + typename A3, typename A4, typename A5, typename A6, typename X1, 1.2533 + typename X2> 1.2534 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2535 +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2536 + const P1& p1, const P2& p2) { 1.2537 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2538 + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2539 + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2540 + (function, MakeTuple(p1, p2)); 1.2541 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2542 +} 1.2543 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2544 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2545 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.2546 + typename A6, typename X1, typename X2> 1.2547 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2548 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2549 + const P1& p1, const P2& p2) { 1.2550 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.2551 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5, A6), 1.2552 + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.2553 + (obj, method, MakeTuple(p1, p2)); 1.2554 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.2555 +} 1.2556 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2557 +#endif // OS_WIN 1.2558 + 1.2559 +// 3 - 0 1.2560 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2561 + typename P3, typename X1, typename X2, typename X3> 1.2562 +inline MutantFunctor<R, Tuple0> 1.2563 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3), const P1& p1, const P2& p2, 1.2564 + const P3& p3) { 1.2565 + MutantRunner<R, Tuple0>* t = 1.2566 + new Mutant<R, T, R (U::*)(X1, X2, X3), 1.2567 + Tuple3<P1, P2, P3>, Tuple0> 1.2568 + (obj, method, MakeTuple(p1, p2, p3)); 1.2569 + return MutantFunctor<R, Tuple0>(t); 1.2570 +} 1.2571 + 1.2572 +template <typename R, typename P1, typename P2, typename P3, typename X1, 1.2573 + typename X2, typename X3> 1.2574 +inline MutantFunctor<R, Tuple0> 1.2575 +CreateFunctor(R (*function)(X1, X2, X3), const P1& p1, const P2& p2, 1.2576 + const P3& p3) { 1.2577 + MutantRunner<R, Tuple0>* t = 1.2578 + new MutantFunction<R, R (*)(X1, X2, X3), 1.2579 + Tuple3<P1, P2, P3>, Tuple0> 1.2580 + (function, MakeTuple(p1, p2, p3)); 1.2581 + return MutantFunctor<R, Tuple0>(t); 1.2582 +} 1.2583 + 1.2584 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2585 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2586 + typename P3, typename X1, typename X2, typename X3> 1.2587 +inline MutantFunctor<R, Tuple0> 1.2588 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3), const P1& p1, const P2& p2, 1.2589 + const P3& p3) { 1.2590 + MutantRunner<R, Tuple0>* t = 1.2591 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3), 1.2592 + Tuple3<P1, P2, P3>, Tuple0> 1.2593 + (obj, method, MakeTuple(p1, p2, p3)); 1.2594 + return MutantFunctor<R, Tuple0>(t); 1.2595 +} 1.2596 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2597 + 1.2598 +#if defined (OS_WIN) 1.2599 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2600 + typename P3, typename X1, typename X2, typename X3> 1.2601 +inline MutantFunctor<R, Tuple0> 1.2602 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3), const P1& p1, 1.2603 + const P2& p2, const P3& p3) { 1.2604 + MutantRunner<R, Tuple0>* t = 1.2605 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3), 1.2606 + Tuple3<P1, P2, P3>, Tuple0> 1.2607 + (obj, method, MakeTuple(p1, p2, p3)); 1.2608 + return MutantFunctor<R, Tuple0>(t); 1.2609 +} 1.2610 + 1.2611 +template <typename R, typename P1, typename P2, typename P3, typename X1, 1.2612 + typename X2, typename X3> 1.2613 +inline MutantFunctor<R, Tuple0> 1.2614 +CreateFunctor(R (__stdcall *function)(X1, X2, X3), const P1& p1, const P2& p2, 1.2615 + const P3& p3) { 1.2616 + MutantRunner<R, Tuple0>* t = 1.2617 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3), 1.2618 + Tuple3<P1, P2, P3>, Tuple0> 1.2619 + (function, MakeTuple(p1, p2, p3)); 1.2620 + return MutantFunctor<R, Tuple0>(t); 1.2621 +} 1.2622 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2623 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2624 + typename P3, typename X1, typename X2, typename X3> 1.2625 +inline MutantFunctor<R, Tuple0> 1.2626 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3), const P1& p1, 1.2627 + const P2& p2, const P3& p3) { 1.2628 + MutantRunner<R, Tuple0>* t = 1.2629 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3), 1.2630 + Tuple3<P1, P2, P3>, Tuple0> 1.2631 + (obj, method, MakeTuple(p1, p2, p3)); 1.2632 + return MutantFunctor<R, Tuple0>(t); 1.2633 +} 1.2634 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2635 +#endif // OS_WIN 1.2636 + 1.2637 +// 3 - 1 1.2638 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2639 + typename P3, typename A1, typename X1, typename X2, typename X3> 1.2640 +inline MutantFunctor<R, Tuple1<A1> > 1.2641 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1), const P1& p1, 1.2642 + const P2& p2, const P3& p3) { 1.2643 + MutantRunner<R, Tuple1<A1> >* t = 1.2644 + new Mutant<R, T, R (U::*)(X1, X2, X3, A1), 1.2645 + Tuple3<P1, P2, P3>, Tuple1<A1> > 1.2646 + (obj, method, MakeTuple(p1, p2, p3)); 1.2647 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2648 +} 1.2649 + 1.2650 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2651 + typename X1, typename X2, typename X3> 1.2652 +inline MutantFunctor<R, Tuple1<A1> > 1.2653 +CreateFunctor(R (*function)(X1, X2, X3, A1), const P1& p1, const P2& p2, 1.2654 + const P3& p3) { 1.2655 + MutantRunner<R, Tuple1<A1> >* t = 1.2656 + new MutantFunction<R, R (*)(X1, X2, X3, A1), 1.2657 + Tuple3<P1, P2, P3>, Tuple1<A1> > 1.2658 + (function, MakeTuple(p1, p2, p3)); 1.2659 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2660 +} 1.2661 + 1.2662 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2663 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2664 + typename P3, typename A1, typename X1, typename X2, typename X3> 1.2665 +inline MutantFunctor<R, Tuple1<A1> > 1.2666 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1), const P1& p1, 1.2667 + const P2& p2, const P3& p3) { 1.2668 + MutantRunner<R, Tuple1<A1> >* t = 1.2669 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1), 1.2670 + Tuple3<P1, P2, P3>, Tuple1<A1> > 1.2671 + (obj, method, MakeTuple(p1, p2, p3)); 1.2672 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2673 +} 1.2674 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2675 + 1.2676 +#if defined (OS_WIN) 1.2677 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2678 + typename P3, typename A1, typename X1, typename X2, typename X3> 1.2679 +inline MutantFunctor<R, Tuple1<A1> > 1.2680 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1), const P1& p1, 1.2681 + const P2& p2, const P3& p3) { 1.2682 + MutantRunner<R, Tuple1<A1> >* t = 1.2683 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1), 1.2684 + Tuple3<P1, P2, P3>, Tuple1<A1> > 1.2685 + (obj, method, MakeTuple(p1, p2, p3)); 1.2686 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2687 +} 1.2688 + 1.2689 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2690 + typename X1, typename X2, typename X3> 1.2691 +inline MutantFunctor<R, Tuple1<A1> > 1.2692 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1), const P1& p1, 1.2693 + const P2& p2, const P3& p3) { 1.2694 + MutantRunner<R, Tuple1<A1> >* t = 1.2695 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1), 1.2696 + Tuple3<P1, P2, P3>, Tuple1<A1> > 1.2697 + (function, MakeTuple(p1, p2, p3)); 1.2698 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2699 +} 1.2700 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2701 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2702 + typename P3, typename A1, typename X1, typename X2, typename X3> 1.2703 +inline MutantFunctor<R, Tuple1<A1> > 1.2704 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1), const P1& p1, 1.2705 + const P2& p2, const P3& p3) { 1.2706 + MutantRunner<R, Tuple1<A1> >* t = 1.2707 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1), 1.2708 + Tuple3<P1, P2, P3>, Tuple1<A1> > 1.2709 + (obj, method, MakeTuple(p1, p2, p3)); 1.2710 + return MutantFunctor<R, Tuple1<A1> >(t); 1.2711 +} 1.2712 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2713 +#endif // OS_WIN 1.2714 + 1.2715 +// 3 - 2 1.2716 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2717 + typename P3, typename A1, typename A2, typename X1, typename X2, 1.2718 + typename X3> 1.2719 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2720 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2), const P1& p1, 1.2721 + const P2& p2, const P3& p3) { 1.2722 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2723 + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2), 1.2724 + Tuple3<P1, P2, P3>, Tuple2<A1, A2> > 1.2725 + (obj, method, MakeTuple(p1, p2, p3)); 1.2726 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2727 +} 1.2728 + 1.2729 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2730 + typename A2, typename X1, typename X2, typename X3> 1.2731 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2732 +CreateFunctor(R (*function)(X1, X2, X3, A1, A2), const P1& p1, const P2& p2, 1.2733 + const P3& p3) { 1.2734 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2735 + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2), 1.2736 + Tuple3<P1, P2, P3>, Tuple2<A1, A2> > 1.2737 + (function, MakeTuple(p1, p2, p3)); 1.2738 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2739 +} 1.2740 + 1.2741 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2742 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2743 + typename P3, typename A1, typename A2, typename X1, typename X2, 1.2744 + typename X3> 1.2745 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2746 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2), const P1& p1, 1.2747 + const P2& p2, const P3& p3) { 1.2748 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2749 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2), 1.2750 + Tuple3<P1, P2, P3>, Tuple2<A1, A2> > 1.2751 + (obj, method, MakeTuple(p1, p2, p3)); 1.2752 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2753 +} 1.2754 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2755 + 1.2756 +#if defined (OS_WIN) 1.2757 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2758 + typename P3, typename A1, typename A2, typename X1, typename X2, 1.2759 + typename X3> 1.2760 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2761 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2), 1.2762 + const P1& p1, const P2& p2, const P3& p3) { 1.2763 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2764 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2), 1.2765 + Tuple3<P1, P2, P3>, Tuple2<A1, A2> > 1.2766 + (obj, method, MakeTuple(p1, p2, p3)); 1.2767 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2768 +} 1.2769 + 1.2770 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2771 + typename A2, typename X1, typename X2, typename X3> 1.2772 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2773 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2), const P1& p1, 1.2774 + const P2& p2, const P3& p3) { 1.2775 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2776 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2), 1.2777 + Tuple3<P1, P2, P3>, Tuple2<A1, A2> > 1.2778 + (function, MakeTuple(p1, p2, p3)); 1.2779 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2780 +} 1.2781 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2782 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2783 + typename P3, typename A1, typename A2, typename X1, typename X2, 1.2784 + typename X3> 1.2785 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.2786 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2), 1.2787 + const P1& p1, const P2& p2, const P3& p3) { 1.2788 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.2789 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2), 1.2790 + Tuple3<P1, P2, P3>, Tuple2<A1, A2> > 1.2791 + (obj, method, MakeTuple(p1, p2, p3)); 1.2792 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.2793 +} 1.2794 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2795 +#endif // OS_WIN 1.2796 + 1.2797 +// 3 - 3 1.2798 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2799 + typename P3, typename A1, typename A2, typename A3, typename X1, 1.2800 + typename X2, typename X3> 1.2801 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2802 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3), const P1& p1, 1.2803 + const P2& p2, const P3& p3) { 1.2804 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2805 + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3), 1.2806 + Tuple3<P1, P2, P3>, Tuple3<A1, A2, A3> > 1.2807 + (obj, method, MakeTuple(p1, p2, p3)); 1.2808 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2809 +} 1.2810 + 1.2811 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2812 + typename A2, typename A3, typename X1, typename X2, typename X3> 1.2813 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2814 +CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3), const P1& p1, const P2& p2, 1.2815 + const P3& p3) { 1.2816 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2817 + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3), 1.2818 + Tuple3<P1, P2, P3>, Tuple3<A1, A2, A3> > 1.2819 + (function, MakeTuple(p1, p2, p3)); 1.2820 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2821 +} 1.2822 + 1.2823 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2824 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2825 + typename P3, typename A1, typename A2, typename A3, typename X1, 1.2826 + typename X2, typename X3> 1.2827 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2828 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3), const P1& p1, 1.2829 + const P2& p2, const P3& p3) { 1.2830 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2831 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3), 1.2832 + Tuple3<P1, P2, P3>, Tuple3<A1, A2, A3> > 1.2833 + (obj, method, MakeTuple(p1, p2, p3)); 1.2834 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2835 +} 1.2836 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2837 + 1.2838 +#if defined (OS_WIN) 1.2839 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2840 + typename P3, typename A1, typename A2, typename A3, typename X1, 1.2841 + typename X2, typename X3> 1.2842 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2843 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3), 1.2844 + const P1& p1, const P2& p2, const P3& p3) { 1.2845 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2846 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3), 1.2847 + Tuple3<P1, P2, P3>, Tuple3<A1, A2, A3> > 1.2848 + (obj, method, MakeTuple(p1, p2, p3)); 1.2849 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2850 +} 1.2851 + 1.2852 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2853 + typename A2, typename A3, typename X1, typename X2, typename X3> 1.2854 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2855 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3), const P1& p1, 1.2856 + const P2& p2, const P3& p3) { 1.2857 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2858 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3), 1.2859 + Tuple3<P1, P2, P3>, Tuple3<A1, A2, A3> > 1.2860 + (function, MakeTuple(p1, p2, p3)); 1.2861 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2862 +} 1.2863 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2864 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2865 + typename P3, typename A1, typename A2, typename A3, typename X1, 1.2866 + typename X2, typename X3> 1.2867 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.2868 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3), 1.2869 + const P1& p1, const P2& p2, const P3& p3) { 1.2870 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.2871 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3), 1.2872 + Tuple3<P1, P2, P3>, Tuple3<A1, A2, A3> > 1.2873 + (obj, method, MakeTuple(p1, p2, p3)); 1.2874 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.2875 +} 1.2876 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2877 +#endif // OS_WIN 1.2878 + 1.2879 +// 3 - 4 1.2880 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2881 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.2882 + typename X1, typename X2, typename X3> 1.2883 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2884 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4), const P1& p1, 1.2885 + const P2& p2, const P3& p3) { 1.2886 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2887 + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4), 1.2888 + Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 1.2889 + (obj, method, MakeTuple(p1, p2, p3)); 1.2890 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2891 +} 1.2892 + 1.2893 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2894 + typename A2, typename A3, typename A4, typename X1, typename X2, 1.2895 + typename X3> 1.2896 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2897 +CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4), const P1& p1, 1.2898 + const P2& p2, const P3& p3) { 1.2899 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2900 + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4), 1.2901 + Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 1.2902 + (function, MakeTuple(p1, p2, p3)); 1.2903 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2904 +} 1.2905 + 1.2906 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2907 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2908 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.2909 + typename X1, typename X2, typename X3> 1.2910 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2911 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4), const P1& p1, 1.2912 + const P2& p2, const P3& p3) { 1.2913 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2914 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4), 1.2915 + Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 1.2916 + (obj, method, MakeTuple(p1, p2, p3)); 1.2917 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2918 +} 1.2919 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2920 + 1.2921 +#if defined (OS_WIN) 1.2922 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2923 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.2924 + typename X1, typename X2, typename X3> 1.2925 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2926 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4), 1.2927 + const P1& p1, const P2& p2, const P3& p3) { 1.2928 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2929 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4), 1.2930 + Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 1.2931 + (obj, method, MakeTuple(p1, p2, p3)); 1.2932 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2933 +} 1.2934 + 1.2935 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2936 + typename A2, typename A3, typename A4, typename X1, typename X2, 1.2937 + typename X3> 1.2938 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2939 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4), const P1& p1, 1.2940 + const P2& p2, const P3& p3) { 1.2941 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2942 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4), 1.2943 + Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 1.2944 + (function, MakeTuple(p1, p2, p3)); 1.2945 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2946 +} 1.2947 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2948 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2949 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.2950 + typename X1, typename X2, typename X3> 1.2951 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.2952 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4), 1.2953 + const P1& p1, const P2& p2, const P3& p3) { 1.2954 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.2955 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4), 1.2956 + Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 1.2957 + (obj, method, MakeTuple(p1, p2, p3)); 1.2958 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.2959 +} 1.2960 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2961 +#endif // OS_WIN 1.2962 + 1.2963 +// 3 - 5 1.2964 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2965 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.2966 + typename A5, typename X1, typename X2, typename X3> 1.2967 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2968 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), 1.2969 + const P1& p1, const P2& p2, const P3& p3) { 1.2970 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2971 + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5), 1.2972 + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > 1.2973 + (obj, method, MakeTuple(p1, p2, p3)); 1.2974 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2975 +} 1.2976 + 1.2977 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.2978 + typename A2, typename A3, typename A4, typename A5, typename X1, 1.2979 + typename X2, typename X3> 1.2980 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2981 +CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4, A5), const P1& p1, 1.2982 + const P2& p2, const P3& p3) { 1.2983 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2984 + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4, A5), 1.2985 + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > 1.2986 + (function, MakeTuple(p1, p2, p3)); 1.2987 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.2988 +} 1.2989 + 1.2990 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.2991 +template <typename R, typename T, typename U, typename P1, typename P2, 1.2992 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.2993 + typename A5, typename X1, typename X2, typename X3> 1.2994 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.2995 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), 1.2996 + const P1& p1, const P2& p2, const P3& p3) { 1.2997 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.2998 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5), 1.2999 + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > 1.3000 + (obj, method, MakeTuple(p1, p2, p3)); 1.3001 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3002 +} 1.3003 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3004 + 1.3005 +#if defined (OS_WIN) 1.3006 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3007 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.3008 + typename A5, typename X1, typename X2, typename X3> 1.3009 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3010 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), 1.3011 + const P1& p1, const P2& p2, const P3& p3) { 1.3012 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3013 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5), 1.3014 + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > 1.3015 + (obj, method, MakeTuple(p1, p2, p3)); 1.3016 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3017 +} 1.3018 + 1.3019 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.3020 + typename A2, typename A3, typename A4, typename A5, typename X1, 1.3021 + typename X2, typename X3> 1.3022 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3023 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4, A5), 1.3024 + const P1& p1, const P2& p2, const P3& p3) { 1.3025 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3026 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4, A5), 1.3027 + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > 1.3028 + (function, MakeTuple(p1, p2, p3)); 1.3029 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3030 +} 1.3031 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3032 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3033 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.3034 + typename A5, typename X1, typename X2, typename X3> 1.3035 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3036 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), 1.3037 + const P1& p1, const P2& p2, const P3& p3) { 1.3038 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3039 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5), 1.3040 + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > 1.3041 + (obj, method, MakeTuple(p1, p2, p3)); 1.3042 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3043 +} 1.3044 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3045 +#endif // OS_WIN 1.3046 + 1.3047 +// 3 - 6 1.3048 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3049 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.3050 + typename A5, typename A6, typename X1, typename X2, typename X3> 1.3051 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3052 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3053 + const P1& p1, const P2& p2, const P3& p3) { 1.3054 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3055 + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3056 + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3057 + (obj, method, MakeTuple(p1, p2, p3)); 1.3058 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3059 +} 1.3060 + 1.3061 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.3062 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.3063 + typename X1, typename X2, typename X3> 1.3064 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3065 +CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4, A5, A6), const P1& p1, 1.3066 + const P2& p2, const P3& p3) { 1.3067 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3068 + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3069 + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3070 + (function, MakeTuple(p1, p2, p3)); 1.3071 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3072 +} 1.3073 + 1.3074 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3075 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3076 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.3077 + typename A5, typename A6, typename X1, typename X2, typename X3> 1.3078 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3079 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3080 + const P1& p1, const P2& p2, const P3& p3) { 1.3081 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3082 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3083 + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3084 + (obj, method, MakeTuple(p1, p2, p3)); 1.3085 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3086 +} 1.3087 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3088 + 1.3089 +#if defined (OS_WIN) 1.3090 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3091 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.3092 + typename A5, typename A6, typename X1, typename X2, typename X3> 1.3093 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3094 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, 1.3095 + A6), const P1& p1, const P2& p2, const P3& p3) { 1.3096 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3097 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3098 + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3099 + (obj, method, MakeTuple(p1, p2, p3)); 1.3100 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3101 +} 1.3102 + 1.3103 +template <typename R, typename P1, typename P2, typename P3, typename A1, 1.3104 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.3105 + typename X1, typename X2, typename X3> 1.3106 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3107 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3108 + const P1& p1, const P2& p2, const P3& p3) { 1.3109 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3110 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3111 + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3112 + (function, MakeTuple(p1, p2, p3)); 1.3113 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3114 +} 1.3115 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3116 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3117 + typename P3, typename A1, typename A2, typename A3, typename A4, 1.3118 + typename A5, typename A6, typename X1, typename X2, typename X3> 1.3119 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3120 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, 1.3121 + A6), const P1& p1, const P2& p2, const P3& p3) { 1.3122 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3123 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), 1.3124 + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3125 + (obj, method, MakeTuple(p1, p2, p3)); 1.3126 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3127 +} 1.3128 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3129 +#endif // OS_WIN 1.3130 + 1.3131 +// 4 - 0 1.3132 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3133 + typename P3, typename P4, typename X1, typename X2, typename X3, 1.3134 + typename X4> 1.3135 +inline MutantFunctor<R, Tuple0> 1.3136 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4), const P1& p1, 1.3137 + const P2& p2, const P3& p3, const P4& p4) { 1.3138 + MutantRunner<R, Tuple0>* t = 1.3139 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4), 1.3140 + Tuple4<P1, P2, P3, P4>, Tuple0> 1.3141 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3142 + return MutantFunctor<R, Tuple0>(t); 1.3143 +} 1.3144 + 1.3145 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3146 + typename X1, typename X2, typename X3, typename X4> 1.3147 +inline MutantFunctor<R, Tuple0> 1.3148 +CreateFunctor(R (*function)(X1, X2, X3, X4), const P1& p1, const P2& p2, 1.3149 + const P3& p3, const P4& p4) { 1.3150 + MutantRunner<R, Tuple0>* t = 1.3151 + new MutantFunction<R, R (*)(X1, X2, X3, X4), 1.3152 + Tuple4<P1, P2, P3, P4>, Tuple0> 1.3153 + (function, MakeTuple(p1, p2, p3, p4)); 1.3154 + return MutantFunctor<R, Tuple0>(t); 1.3155 +} 1.3156 + 1.3157 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3158 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3159 + typename P3, typename P4, typename X1, typename X2, typename X3, 1.3160 + typename X4> 1.3161 +inline MutantFunctor<R, Tuple0> 1.3162 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4), const P1& p1, 1.3163 + const P2& p2, const P3& p3, const P4& p4) { 1.3164 + MutantRunner<R, Tuple0>* t = 1.3165 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4), 1.3166 + Tuple4<P1, P2, P3, P4>, Tuple0> 1.3167 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3168 + return MutantFunctor<R, Tuple0>(t); 1.3169 +} 1.3170 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3171 + 1.3172 +#if defined (OS_WIN) 1.3173 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3174 + typename P3, typename P4, typename X1, typename X2, typename X3, 1.3175 + typename X4> 1.3176 +inline MutantFunctor<R, Tuple0> 1.3177 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4), const P1& p1, 1.3178 + const P2& p2, const P3& p3, const P4& p4) { 1.3179 + MutantRunner<R, Tuple0>* t = 1.3180 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4), 1.3181 + Tuple4<P1, P2, P3, P4>, Tuple0> 1.3182 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3183 + return MutantFunctor<R, Tuple0>(t); 1.3184 +} 1.3185 + 1.3186 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3187 + typename X1, typename X2, typename X3, typename X4> 1.3188 +inline MutantFunctor<R, Tuple0> 1.3189 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4), const P1& p1, 1.3190 + const P2& p2, const P3& p3, const P4& p4) { 1.3191 + MutantRunner<R, Tuple0>* t = 1.3192 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4), 1.3193 + Tuple4<P1, P2, P3, P4>, Tuple0> 1.3194 + (function, MakeTuple(p1, p2, p3, p4)); 1.3195 + return MutantFunctor<R, Tuple0>(t); 1.3196 +} 1.3197 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3198 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3199 + typename P3, typename P4, typename X1, typename X2, typename X3, 1.3200 + typename X4> 1.3201 +inline MutantFunctor<R, Tuple0> 1.3202 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4), const P1& p1, 1.3203 + const P2& p2, const P3& p3, const P4& p4) { 1.3204 + MutantRunner<R, Tuple0>* t = 1.3205 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4), 1.3206 + Tuple4<P1, P2, P3, P4>, Tuple0> 1.3207 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3208 + return MutantFunctor<R, Tuple0>(t); 1.3209 +} 1.3210 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3211 +#endif // OS_WIN 1.3212 + 1.3213 +// 4 - 1 1.3214 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3215 + typename P3, typename P4, typename A1, typename X1, typename X2, 1.3216 + typename X3, typename X4> 1.3217 +inline MutantFunctor<R, Tuple1<A1> > 1.3218 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1), const P1& p1, 1.3219 + const P2& p2, const P3& p3, const P4& p4) { 1.3220 + MutantRunner<R, Tuple1<A1> >* t = 1.3221 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1), 1.3222 + Tuple4<P1, P2, P3, P4>, Tuple1<A1> > 1.3223 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3224 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3225 +} 1.3226 + 1.3227 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3228 + typename A1, typename X1, typename X2, typename X3, typename X4> 1.3229 +inline MutantFunctor<R, Tuple1<A1> > 1.3230 +CreateFunctor(R (*function)(X1, X2, X3, X4, A1), const P1& p1, const P2& p2, 1.3231 + const P3& p3, const P4& p4) { 1.3232 + MutantRunner<R, Tuple1<A1> >* t = 1.3233 + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1), 1.3234 + Tuple4<P1, P2, P3, P4>, Tuple1<A1> > 1.3235 + (function, MakeTuple(p1, p2, p3, p4)); 1.3236 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3237 +} 1.3238 + 1.3239 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3240 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3241 + typename P3, typename P4, typename A1, typename X1, typename X2, 1.3242 + typename X3, typename X4> 1.3243 +inline MutantFunctor<R, Tuple1<A1> > 1.3244 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1), const P1& p1, 1.3245 + const P2& p2, const P3& p3, const P4& p4) { 1.3246 + MutantRunner<R, Tuple1<A1> >* t = 1.3247 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1), 1.3248 + Tuple4<P1, P2, P3, P4>, Tuple1<A1> > 1.3249 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3250 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3251 +} 1.3252 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3253 + 1.3254 +#if defined (OS_WIN) 1.3255 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3256 + typename P3, typename P4, typename A1, typename X1, typename X2, 1.3257 + typename X3, typename X4> 1.3258 +inline MutantFunctor<R, Tuple1<A1> > 1.3259 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1), 1.3260 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3261 + MutantRunner<R, Tuple1<A1> >* t = 1.3262 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1), 1.3263 + Tuple4<P1, P2, P3, P4>, Tuple1<A1> > 1.3264 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3265 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3266 +} 1.3267 + 1.3268 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3269 + typename A1, typename X1, typename X2, typename X3, typename X4> 1.3270 +inline MutantFunctor<R, Tuple1<A1> > 1.3271 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1), const P1& p1, 1.3272 + const P2& p2, const P3& p3, const P4& p4) { 1.3273 + MutantRunner<R, Tuple1<A1> >* t = 1.3274 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1), 1.3275 + Tuple4<P1, P2, P3, P4>, Tuple1<A1> > 1.3276 + (function, MakeTuple(p1, p2, p3, p4)); 1.3277 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3278 +} 1.3279 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3280 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3281 + typename P3, typename P4, typename A1, typename X1, typename X2, 1.3282 + typename X3, typename X4> 1.3283 +inline MutantFunctor<R, Tuple1<A1> > 1.3284 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1), 1.3285 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3286 + MutantRunner<R, Tuple1<A1> >* t = 1.3287 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1), 1.3288 + Tuple4<P1, P2, P3, P4>, Tuple1<A1> > 1.3289 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3290 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3291 +} 1.3292 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3293 +#endif // OS_WIN 1.3294 + 1.3295 +// 4 - 2 1.3296 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3297 + typename P3, typename P4, typename A1, typename A2, typename X1, 1.3298 + typename X2, typename X3, typename X4> 1.3299 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3300 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2), const P1& p1, 1.3301 + const P2& p2, const P3& p3, const P4& p4) { 1.3302 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3303 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2), 1.3304 + Tuple4<P1, P2, P3, P4>, Tuple2<A1, A2> > 1.3305 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3306 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3307 +} 1.3308 + 1.3309 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3310 + typename A1, typename A2, typename X1, typename X2, typename X3, 1.3311 + typename X4> 1.3312 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3313 +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2), const P1& p1, const P2& p2, 1.3314 + const P3& p3, const P4& p4) { 1.3315 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3316 + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2), 1.3317 + Tuple4<P1, P2, P3, P4>, Tuple2<A1, A2> > 1.3318 + (function, MakeTuple(p1, p2, p3, p4)); 1.3319 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3320 +} 1.3321 + 1.3322 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3323 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3324 + typename P3, typename P4, typename A1, typename A2, typename X1, 1.3325 + typename X2, typename X3, typename X4> 1.3326 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3327 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2), const P1& p1, 1.3328 + const P2& p2, const P3& p3, const P4& p4) { 1.3329 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3330 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2), 1.3331 + Tuple4<P1, P2, P3, P4>, Tuple2<A1, A2> > 1.3332 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3333 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3334 +} 1.3335 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3336 + 1.3337 +#if defined (OS_WIN) 1.3338 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3339 + typename P3, typename P4, typename A1, typename A2, typename X1, 1.3340 + typename X2, typename X3, typename X4> 1.3341 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3342 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2), 1.3343 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3344 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3345 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2), 1.3346 + Tuple4<P1, P2, P3, P4>, Tuple2<A1, A2> > 1.3347 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3348 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3349 +} 1.3350 + 1.3351 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3352 + typename A1, typename A2, typename X1, typename X2, typename X3, 1.3353 + typename X4> 1.3354 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3355 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2), const P1& p1, 1.3356 + const P2& p2, const P3& p3, const P4& p4) { 1.3357 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3358 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2), 1.3359 + Tuple4<P1, P2, P3, P4>, Tuple2<A1, A2> > 1.3360 + (function, MakeTuple(p1, p2, p3, p4)); 1.3361 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3362 +} 1.3363 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3364 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3365 + typename P3, typename P4, typename A1, typename A2, typename X1, 1.3366 + typename X2, typename X3, typename X4> 1.3367 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3368 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2), 1.3369 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3370 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3371 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2), 1.3372 + Tuple4<P1, P2, P3, P4>, Tuple2<A1, A2> > 1.3373 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3374 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3375 +} 1.3376 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3377 +#endif // OS_WIN 1.3378 + 1.3379 +// 4 - 3 1.3380 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3381 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3382 + typename X1, typename X2, typename X3, typename X4> 1.3383 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3384 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3), const P1& p1, 1.3385 + const P2& p2, const P3& p3, const P4& p4) { 1.3386 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3387 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3), 1.3388 + Tuple4<P1, P2, P3, P4>, Tuple3<A1, A2, A3> > 1.3389 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3390 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3391 +} 1.3392 + 1.3393 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3394 + typename A1, typename A2, typename A3, typename X1, typename X2, 1.3395 + typename X3, typename X4> 1.3396 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3397 +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3), const P1& p1, 1.3398 + const P2& p2, const P3& p3, const P4& p4) { 1.3399 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3400 + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3), 1.3401 + Tuple4<P1, P2, P3, P4>, Tuple3<A1, A2, A3> > 1.3402 + (function, MakeTuple(p1, p2, p3, p4)); 1.3403 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3404 +} 1.3405 + 1.3406 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3407 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3408 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3409 + typename X1, typename X2, typename X3, typename X4> 1.3410 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3411 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3), const P1& p1, 1.3412 + const P2& p2, const P3& p3, const P4& p4) { 1.3413 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3414 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3), 1.3415 + Tuple4<P1, P2, P3, P4>, Tuple3<A1, A2, A3> > 1.3416 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3417 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3418 +} 1.3419 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3420 + 1.3421 +#if defined (OS_WIN) 1.3422 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3423 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3424 + typename X1, typename X2, typename X3, typename X4> 1.3425 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3426 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3), 1.3427 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3428 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3429 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3), 1.3430 + Tuple4<P1, P2, P3, P4>, Tuple3<A1, A2, A3> > 1.3431 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3432 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3433 +} 1.3434 + 1.3435 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3436 + typename A1, typename A2, typename A3, typename X1, typename X2, 1.3437 + typename X3, typename X4> 1.3438 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3439 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3), const P1& p1, 1.3440 + const P2& p2, const P3& p3, const P4& p4) { 1.3441 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3442 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3), 1.3443 + Tuple4<P1, P2, P3, P4>, Tuple3<A1, A2, A3> > 1.3444 + (function, MakeTuple(p1, p2, p3, p4)); 1.3445 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3446 +} 1.3447 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3448 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3449 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3450 + typename X1, typename X2, typename X3, typename X4> 1.3451 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3452 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3), 1.3453 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3454 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3455 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3), 1.3456 + Tuple4<P1, P2, P3, P4>, Tuple3<A1, A2, A3> > 1.3457 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3458 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3459 +} 1.3460 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3461 +#endif // OS_WIN 1.3462 + 1.3463 +// 4 - 4 1.3464 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3465 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3466 + typename A4, typename X1, typename X2, typename X3, typename X4> 1.3467 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.3468 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3469 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3470 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.3471 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3472 + Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 1.3473 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3474 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.3475 +} 1.3476 + 1.3477 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3478 + typename A1, typename A2, typename A3, typename A4, typename X1, 1.3479 + typename X2, typename X3, typename X4> 1.3480 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.3481 +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4), const P1& p1, 1.3482 + const P2& p2, const P3& p3, const P4& p4) { 1.3483 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.3484 + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3485 + Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 1.3486 + (function, MakeTuple(p1, p2, p3, p4)); 1.3487 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.3488 +} 1.3489 + 1.3490 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3491 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3492 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3493 + typename A4, typename X1, typename X2, typename X3, typename X4> 1.3494 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.3495 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3496 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3497 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.3498 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3499 + Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 1.3500 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3501 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.3502 +} 1.3503 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3504 + 1.3505 +#if defined (OS_WIN) 1.3506 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3507 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3508 + typename A4, typename X1, typename X2, typename X3, typename X4> 1.3509 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.3510 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3511 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3512 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.3513 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3514 + Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 1.3515 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3516 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.3517 +} 1.3518 + 1.3519 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3520 + typename A1, typename A2, typename A3, typename A4, typename X1, 1.3521 + typename X2, typename X3, typename X4> 1.3522 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.3523 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3524 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3525 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.3526 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3527 + Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 1.3528 + (function, MakeTuple(p1, p2, p3, p4)); 1.3529 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.3530 +} 1.3531 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3532 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3533 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3534 + typename A4, typename X1, typename X2, typename X3, typename X4> 1.3535 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.3536 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3537 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3538 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.3539 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4), 1.3540 + Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 1.3541 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3542 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.3543 +} 1.3544 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3545 +#endif // OS_WIN 1.3546 + 1.3547 +// 4 - 5 1.3548 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3549 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3550 + typename A4, typename A5, typename X1, typename X2, typename X3, 1.3551 + typename X4> 1.3552 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3553 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3554 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3555 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3556 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3557 + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > 1.3558 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3559 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3560 +} 1.3561 + 1.3562 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3563 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.3564 + typename X1, typename X2, typename X3, typename X4> 1.3565 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3566 +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4, A5), const P1& p1, 1.3567 + const P2& p2, const P3& p3, const P4& p4) { 1.3568 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3569 + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3570 + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > 1.3571 + (function, MakeTuple(p1, p2, p3, p4)); 1.3572 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3573 +} 1.3574 + 1.3575 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3576 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3577 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3578 + typename A4, typename A5, typename X1, typename X2, typename X3, 1.3579 + typename X4> 1.3580 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3581 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3582 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3583 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3584 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3585 + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > 1.3586 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3587 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3588 +} 1.3589 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3590 + 1.3591 +#if defined (OS_WIN) 1.3592 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3593 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3594 + typename A4, typename A5, typename X1, typename X2, typename X3, 1.3595 + typename X4> 1.3596 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3597 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, 1.3598 + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3599 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3600 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3601 + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > 1.3602 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3603 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3604 +} 1.3605 + 1.3606 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3607 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.3608 + typename X1, typename X2, typename X3, typename X4> 1.3609 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3610 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3611 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3612 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3613 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3614 + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > 1.3615 + (function, MakeTuple(p1, p2, p3, p4)); 1.3616 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3617 +} 1.3618 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3619 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3620 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3621 + typename A4, typename A5, typename X1, typename X2, typename X3, 1.3622 + typename X4> 1.3623 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.3624 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, 1.3625 + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3626 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.3627 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), 1.3628 + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > 1.3629 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3630 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.3631 +} 1.3632 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3633 +#endif // OS_WIN 1.3634 + 1.3635 +// 4 - 6 1.3636 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3637 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3638 + typename A4, typename A5, typename A6, typename X1, typename X2, 1.3639 + typename X3, typename X4> 1.3640 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3641 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3642 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3643 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3644 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3645 + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3646 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3647 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3648 +} 1.3649 + 1.3650 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3651 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.3652 + typename A6, typename X1, typename X2, typename X3, typename X4> 1.3653 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3654 +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3655 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3656 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3657 + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3658 + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3659 + (function, MakeTuple(p1, p2, p3, p4)); 1.3660 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3661 +} 1.3662 + 1.3663 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3664 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3665 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3666 + typename A4, typename A5, typename A6, typename X1, typename X2, 1.3667 + typename X3, typename X4> 1.3668 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3669 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3670 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3671 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3672 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3673 + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3674 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3675 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3676 +} 1.3677 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3678 + 1.3679 +#if defined (OS_WIN) 1.3680 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3681 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3682 + typename A4, typename A5, typename A6, typename X1, typename X2, 1.3683 + typename X3, typename X4> 1.3684 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3685 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, 1.3686 + A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3687 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3688 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3689 + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3690 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3691 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3692 +} 1.3693 + 1.3694 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3695 + typename A1, typename A2, typename A3, typename A4, typename A5, 1.3696 + typename A6, typename X1, typename X2, typename X3, typename X4> 1.3697 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3698 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3699 + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3700 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3701 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3702 + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3703 + (function, MakeTuple(p1, p2, p3, p4)); 1.3704 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3705 +} 1.3706 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3707 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3708 + typename P3, typename P4, typename A1, typename A2, typename A3, 1.3709 + typename A4, typename A5, typename A6, typename X1, typename X2, 1.3710 + typename X3, typename X4> 1.3711 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3712 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, 1.3713 + A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 1.3714 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.3715 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), 1.3716 + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.3717 + (obj, method, MakeTuple(p1, p2, p3, p4)); 1.3718 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.3719 +} 1.3720 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3721 +#endif // OS_WIN 1.3722 + 1.3723 +// 5 - 0 1.3724 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3725 + typename P3, typename P4, typename P5, typename X1, typename X2, 1.3726 + typename X3, typename X4, typename X5> 1.3727 +inline MutantFunctor<R, Tuple0> 1.3728 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5), const P1& p1, 1.3729 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3730 + MutantRunner<R, Tuple0>* t = 1.3731 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5), 1.3732 + Tuple5<P1, P2, P3, P4, P5>, Tuple0> 1.3733 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3734 + return MutantFunctor<R, Tuple0>(t); 1.3735 +} 1.3736 + 1.3737 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3738 + typename P5, typename X1, typename X2, typename X3, typename X4, 1.3739 + typename X5> 1.3740 +inline MutantFunctor<R, Tuple0> 1.3741 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5), const P1& p1, const P2& p2, 1.3742 + const P3& p3, const P4& p4, const P5& p5) { 1.3743 + MutantRunner<R, Tuple0>* t = 1.3744 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5), 1.3745 + Tuple5<P1, P2, P3, P4, P5>, Tuple0> 1.3746 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.3747 + return MutantFunctor<R, Tuple0>(t); 1.3748 +} 1.3749 + 1.3750 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3751 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3752 + typename P3, typename P4, typename P5, typename X1, typename X2, 1.3753 + typename X3, typename X4, typename X5> 1.3754 +inline MutantFunctor<R, Tuple0> 1.3755 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5), const P1& p1, 1.3756 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3757 + MutantRunner<R, Tuple0>* t = 1.3758 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5), 1.3759 + Tuple5<P1, P2, P3, P4, P5>, Tuple0> 1.3760 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3761 + return MutantFunctor<R, Tuple0>(t); 1.3762 +} 1.3763 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3764 + 1.3765 +#if defined (OS_WIN) 1.3766 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3767 + typename P3, typename P4, typename P5, typename X1, typename X2, 1.3768 + typename X3, typename X4, typename X5> 1.3769 +inline MutantFunctor<R, Tuple0> 1.3770 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5), 1.3771 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3772 + MutantRunner<R, Tuple0>* t = 1.3773 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5), 1.3774 + Tuple5<P1, P2, P3, P4, P5>, Tuple0> 1.3775 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3776 + return MutantFunctor<R, Tuple0>(t); 1.3777 +} 1.3778 + 1.3779 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3780 + typename P5, typename X1, typename X2, typename X3, typename X4, 1.3781 + typename X5> 1.3782 +inline MutantFunctor<R, Tuple0> 1.3783 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5), const P1& p1, 1.3784 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3785 + MutantRunner<R, Tuple0>* t = 1.3786 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5), 1.3787 + Tuple5<P1, P2, P3, P4, P5>, Tuple0> 1.3788 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.3789 + return MutantFunctor<R, Tuple0>(t); 1.3790 +} 1.3791 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3792 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3793 + typename P3, typename P4, typename P5, typename X1, typename X2, 1.3794 + typename X3, typename X4, typename X5> 1.3795 +inline MutantFunctor<R, Tuple0> 1.3796 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5), 1.3797 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3798 + MutantRunner<R, Tuple0>* t = 1.3799 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5), 1.3800 + Tuple5<P1, P2, P3, P4, P5>, Tuple0> 1.3801 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3802 + return MutantFunctor<R, Tuple0>(t); 1.3803 +} 1.3804 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3805 +#endif // OS_WIN 1.3806 + 1.3807 +// 5 - 1 1.3808 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3809 + typename P3, typename P4, typename P5, typename A1, typename X1, 1.3810 + typename X2, typename X3, typename X4, typename X5> 1.3811 +inline MutantFunctor<R, Tuple1<A1> > 1.3812 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1), const P1& p1, 1.3813 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3814 + MutantRunner<R, Tuple1<A1> >* t = 1.3815 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1), 1.3816 + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > 1.3817 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3818 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3819 +} 1.3820 + 1.3821 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3822 + typename P5, typename A1, typename X1, typename X2, typename X3, 1.3823 + typename X4, typename X5> 1.3824 +inline MutantFunctor<R, Tuple1<A1> > 1.3825 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1), const P1& p1, const P2& p2, 1.3826 + const P3& p3, const P4& p4, const P5& p5) { 1.3827 + MutantRunner<R, Tuple1<A1> >* t = 1.3828 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1), 1.3829 + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > 1.3830 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.3831 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3832 +} 1.3833 + 1.3834 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3835 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3836 + typename P3, typename P4, typename P5, typename A1, typename X1, 1.3837 + typename X2, typename X3, typename X4, typename X5> 1.3838 +inline MutantFunctor<R, Tuple1<A1> > 1.3839 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1), const P1& p1, 1.3840 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3841 + MutantRunner<R, Tuple1<A1> >* t = 1.3842 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1), 1.3843 + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > 1.3844 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3845 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3846 +} 1.3847 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3848 + 1.3849 +#if defined (OS_WIN) 1.3850 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3851 + typename P3, typename P4, typename P5, typename A1, typename X1, 1.3852 + typename X2, typename X3, typename X4, typename X5> 1.3853 +inline MutantFunctor<R, Tuple1<A1> > 1.3854 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1), 1.3855 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3856 + MutantRunner<R, Tuple1<A1> >* t = 1.3857 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1), 1.3858 + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > 1.3859 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3860 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3861 +} 1.3862 + 1.3863 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3864 + typename P5, typename A1, typename X1, typename X2, typename X3, 1.3865 + typename X4, typename X5> 1.3866 +inline MutantFunctor<R, Tuple1<A1> > 1.3867 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1), const P1& p1, 1.3868 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3869 + MutantRunner<R, Tuple1<A1> >* t = 1.3870 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1), 1.3871 + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > 1.3872 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.3873 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3874 +} 1.3875 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3876 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3877 + typename P3, typename P4, typename P5, typename A1, typename X1, 1.3878 + typename X2, typename X3, typename X4, typename X5> 1.3879 +inline MutantFunctor<R, Tuple1<A1> > 1.3880 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1), 1.3881 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3882 + MutantRunner<R, Tuple1<A1> >* t = 1.3883 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1), 1.3884 + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > 1.3885 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3886 + return MutantFunctor<R, Tuple1<A1> >(t); 1.3887 +} 1.3888 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3889 +#endif // OS_WIN 1.3890 + 1.3891 +// 5 - 2 1.3892 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3893 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.3894 + typename X1, typename X2, typename X3, typename X4, typename X5> 1.3895 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3896 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, 1.3897 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3898 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3899 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2), 1.3900 + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > 1.3901 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3902 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3903 +} 1.3904 + 1.3905 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3906 + typename P5, typename A1, typename A2, typename X1, typename X2, 1.3907 + typename X3, typename X4, typename X5> 1.3908 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3909 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, 1.3910 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3911 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3912 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2), 1.3913 + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > 1.3914 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.3915 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3916 +} 1.3917 + 1.3918 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3919 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3920 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.3921 + typename X1, typename X2, typename X3, typename X4, typename X5> 1.3922 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3923 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, 1.3924 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3925 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3926 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2), 1.3927 + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > 1.3928 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3929 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3930 +} 1.3931 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3932 + 1.3933 +#if defined (OS_WIN) 1.3934 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3935 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.3936 + typename X1, typename X2, typename X3, typename X4, typename X5> 1.3937 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3938 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2), 1.3939 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3940 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3941 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2), 1.3942 + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > 1.3943 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3944 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3945 +} 1.3946 + 1.3947 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3948 + typename P5, typename A1, typename A2, typename X1, typename X2, 1.3949 + typename X3, typename X4, typename X5> 1.3950 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3951 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, 1.3952 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3953 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3954 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2), 1.3955 + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > 1.3956 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.3957 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3958 +} 1.3959 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3960 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3961 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.3962 + typename X1, typename X2, typename X3, typename X4, typename X5> 1.3963 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.3964 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2), 1.3965 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3966 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.3967 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2), 1.3968 + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > 1.3969 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3970 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.3971 +} 1.3972 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.3973 +#endif // OS_WIN 1.3974 + 1.3975 +// 5 - 3 1.3976 +template <typename R, typename T, typename U, typename P1, typename P2, 1.3977 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.3978 + typename A3, typename X1, typename X2, typename X3, typename X4, 1.3979 + typename X5> 1.3980 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3981 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), 1.3982 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3983 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3984 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3), 1.3985 + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > 1.3986 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.3987 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.3988 +} 1.3989 + 1.3990 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.3991 + typename P5, typename A1, typename A2, typename A3, typename X1, 1.3992 + typename X2, typename X3, typename X4, typename X5> 1.3993 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.3994 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3), const P1& p1, 1.3995 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.3996 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.3997 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3), 1.3998 + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > 1.3999 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4000 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4001 +} 1.4002 + 1.4003 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4004 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4005 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4006 + typename A3, typename X1, typename X2, typename X3, typename X4, 1.4007 + typename X5> 1.4008 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4009 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4010 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4011 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4012 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4013 + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > 1.4014 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4015 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4016 +} 1.4017 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4018 + 1.4019 +#if defined (OS_WIN) 1.4020 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4021 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4022 + typename A3, typename X1, typename X2, typename X3, typename X4, 1.4023 + typename X5> 1.4024 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4025 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4026 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4027 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4028 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4029 + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > 1.4030 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4031 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4032 +} 1.4033 + 1.4034 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4035 + typename P5, typename A1, typename A2, typename A3, typename X1, 1.4036 + typename X2, typename X3, typename X4, typename X5> 1.4037 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4038 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4039 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4040 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4041 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4042 + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > 1.4043 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4044 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4045 +} 1.4046 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4047 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4048 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4049 + typename A3, typename X1, typename X2, typename X3, typename X4, 1.4050 + typename X5> 1.4051 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4052 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4053 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4054 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4055 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3), 1.4056 + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > 1.4057 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4058 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4059 +} 1.4060 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4061 +#endif // OS_WIN 1.4062 + 1.4063 +// 5 - 4 1.4064 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4065 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4066 + typename A3, typename A4, typename X1, typename X2, typename X3, 1.4067 + typename X4, typename X5> 1.4068 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4069 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4070 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4071 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4072 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4073 + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > 1.4074 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4075 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4076 +} 1.4077 + 1.4078 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4079 + typename P5, typename A1, typename A2, typename A3, typename A4, 1.4080 + typename X1, typename X2, typename X3, typename X4, typename X5> 1.4081 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4082 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4), const P1& p1, 1.4083 + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4084 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4085 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4086 + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > 1.4087 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4088 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4089 +} 1.4090 + 1.4091 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4092 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4093 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4094 + typename A3, typename A4, typename X1, typename X2, typename X3, 1.4095 + typename X4, typename X5> 1.4096 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4097 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4098 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4099 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4100 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4101 + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > 1.4102 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4103 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4104 +} 1.4105 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4106 + 1.4107 +#if defined (OS_WIN) 1.4108 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4109 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4110 + typename A3, typename A4, typename X1, typename X2, typename X3, 1.4111 + typename X4, typename X5> 1.4112 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4113 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, 1.4114 + A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4115 + const P5& p5) { 1.4116 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4117 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4118 + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > 1.4119 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4120 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4121 +} 1.4122 + 1.4123 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4124 + typename P5, typename A1, typename A2, typename A3, typename A4, 1.4125 + typename X1, typename X2, typename X3, typename X4, typename X5> 1.4126 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4127 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4128 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4129 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4130 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4131 + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > 1.4132 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4133 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4134 +} 1.4135 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4136 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4137 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4138 + typename A3, typename A4, typename X1, typename X2, typename X3, 1.4139 + typename X4, typename X5> 1.4140 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4141 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, 1.4142 + A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4143 + const P5& p5) { 1.4144 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4145 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), 1.4146 + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > 1.4147 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4148 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4149 +} 1.4150 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4151 +#endif // OS_WIN 1.4152 + 1.4153 +// 5 - 5 1.4154 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4155 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4156 + typename A3, typename A4, typename A5, typename X1, typename X2, 1.4157 + typename X3, typename X4, typename X5> 1.4158 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4159 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4160 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4161 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4162 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4163 + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > 1.4164 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4165 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4166 +} 1.4167 + 1.4168 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4169 + typename P5, typename A1, typename A2, typename A3, typename A4, 1.4170 + typename A5, typename X1, typename X2, typename X3, typename X4, 1.4171 + typename X5> 1.4172 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4173 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4174 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4175 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4176 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4177 + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > 1.4178 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4179 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4180 +} 1.4181 + 1.4182 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4183 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4184 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4185 + typename A3, typename A4, typename A5, typename X1, typename X2, 1.4186 + typename X3, typename X4, typename X5> 1.4187 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4188 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4189 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4190 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4191 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4192 + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > 1.4193 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4194 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4195 +} 1.4196 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4197 + 1.4198 +#if defined (OS_WIN) 1.4199 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4200 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4201 + typename A3, typename A4, typename A5, typename X1, typename X2, 1.4202 + typename X3, typename X4, typename X5> 1.4203 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4204 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, 1.4205 + A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4206 + const P5& p5) { 1.4207 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4208 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4209 + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > 1.4210 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4211 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4212 +} 1.4213 + 1.4214 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4215 + typename P5, typename A1, typename A2, typename A3, typename A4, 1.4216 + typename A5, typename X1, typename X2, typename X3, typename X4, 1.4217 + typename X5> 1.4218 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4219 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4220 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4221 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4222 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4223 + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > 1.4224 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4225 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4226 +} 1.4227 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4228 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4229 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4230 + typename A3, typename A4, typename A5, typename X1, typename X2, 1.4231 + typename X3, typename X4, typename X5> 1.4232 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4233 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, 1.4234 + A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4235 + const P5& p5) { 1.4236 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4237 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), 1.4238 + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > 1.4239 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4240 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4241 +} 1.4242 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4243 +#endif // OS_WIN 1.4244 + 1.4245 +// 5 - 6 1.4246 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4247 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4248 + typename A3, typename A4, typename A5, typename A6, typename X1, 1.4249 + typename X2, typename X3, typename X4, typename X5> 1.4250 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4251 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, 1.4252 + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4253 + const P5& p5) { 1.4254 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4255 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4256 + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4257 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4258 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4259 +} 1.4260 + 1.4261 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4262 + typename P5, typename A1, typename A2, typename A3, typename A4, 1.4263 + typename A5, typename A6, typename X1, typename X2, typename X3, 1.4264 + typename X4, typename X5> 1.4265 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4266 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4267 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { 1.4268 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4269 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4270 + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4271 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4272 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4273 +} 1.4274 + 1.4275 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4276 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4277 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4278 + typename A3, typename A4, typename A5, typename A6, typename X1, 1.4279 + typename X2, typename X3, typename X4, typename X5> 1.4280 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4281 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, 1.4282 + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4283 + const P5& p5) { 1.4284 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4285 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4286 + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4287 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4288 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4289 +} 1.4290 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4291 + 1.4292 +#if defined (OS_WIN) 1.4293 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4294 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4295 + typename A3, typename A4, typename A5, typename A6, typename X1, 1.4296 + typename X2, typename X3, typename X4, typename X5> 1.4297 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4298 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, 1.4299 + A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4300 + const P5& p5) { 1.4301 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4302 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4303 + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4304 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4305 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4306 +} 1.4307 + 1.4308 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4309 + typename P5, typename A1, typename A2, typename A3, typename A4, 1.4310 + typename A5, typename A6, typename X1, typename X2, typename X3, 1.4311 + typename X4, typename X5> 1.4312 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4313 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, 1.4314 + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4315 + const P5& p5) { 1.4316 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4317 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4318 + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4319 + (function, MakeTuple(p1, p2, p3, p4, p5)); 1.4320 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4321 +} 1.4322 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4323 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4324 + typename P3, typename P4, typename P5, typename A1, typename A2, 1.4325 + typename A3, typename A4, typename A5, typename A6, typename X1, 1.4326 + typename X2, typename X3, typename X4, typename X5> 1.4327 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4328 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, 1.4329 + A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4330 + const P5& p5) { 1.4331 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4332 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), 1.4333 + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4334 + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); 1.4335 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4336 +} 1.4337 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4338 +#endif // OS_WIN 1.4339 + 1.4340 +// 6 - 0 1.4341 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4342 + typename P3, typename P4, typename P5, typename P6, typename X1, 1.4343 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4344 +inline MutantFunctor<R, Tuple0> 1.4345 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6), const P1& p1, 1.4346 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4347 + MutantRunner<R, Tuple0>* t = 1.4348 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6), 1.4349 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> 1.4350 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4351 + return MutantFunctor<R, Tuple0>(t); 1.4352 +} 1.4353 + 1.4354 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4355 + typename P5, typename P6, typename X1, typename X2, typename X3, 1.4356 + typename X4, typename X5, typename X6> 1.4357 +inline MutantFunctor<R, Tuple0> 1.4358 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6), const P1& p1, const P2& p2, 1.4359 + const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4360 + MutantRunner<R, Tuple0>* t = 1.4361 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6), 1.4362 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> 1.4363 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4364 + return MutantFunctor<R, Tuple0>(t); 1.4365 +} 1.4366 + 1.4367 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4368 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4369 + typename P3, typename P4, typename P5, typename P6, typename X1, 1.4370 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4371 +inline MutantFunctor<R, Tuple0> 1.4372 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6), const P1& p1, 1.4373 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4374 + MutantRunner<R, Tuple0>* t = 1.4375 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6), 1.4376 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> 1.4377 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4378 + return MutantFunctor<R, Tuple0>(t); 1.4379 +} 1.4380 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4381 + 1.4382 +#if defined (OS_WIN) 1.4383 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4384 + typename P3, typename P4, typename P5, typename P6, typename X1, 1.4385 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4386 +inline MutantFunctor<R, Tuple0> 1.4387 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6), 1.4388 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4389 + const P6& p6) { 1.4390 + MutantRunner<R, Tuple0>* t = 1.4391 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6), 1.4392 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> 1.4393 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4394 + return MutantFunctor<R, Tuple0>(t); 1.4395 +} 1.4396 + 1.4397 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4398 + typename P5, typename P6, typename X1, typename X2, typename X3, 1.4399 + typename X4, typename X5, typename X6> 1.4400 +inline MutantFunctor<R, Tuple0> 1.4401 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6), const P1& p1, 1.4402 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4403 + MutantRunner<R, Tuple0>* t = 1.4404 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6), 1.4405 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> 1.4406 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4407 + return MutantFunctor<R, Tuple0>(t); 1.4408 +} 1.4409 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4410 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4411 + typename P3, typename P4, typename P5, typename P6, typename X1, 1.4412 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4413 +inline MutantFunctor<R, Tuple0> 1.4414 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6), 1.4415 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4416 + const P6& p6) { 1.4417 + MutantRunner<R, Tuple0>* t = 1.4418 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6), 1.4419 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> 1.4420 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4421 + return MutantFunctor<R, Tuple0>(t); 1.4422 +} 1.4423 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4424 +#endif // OS_WIN 1.4425 + 1.4426 +// 6 - 1 1.4427 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4428 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4429 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4430 + typename X6> 1.4431 +inline MutantFunctor<R, Tuple1<A1> > 1.4432 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, 1.4433 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4434 + MutantRunner<R, Tuple1<A1> >* t = 1.4435 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1), 1.4436 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > 1.4437 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4438 + return MutantFunctor<R, Tuple1<A1> >(t); 1.4439 +} 1.4440 + 1.4441 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4442 + typename P5, typename P6, typename A1, typename X1, typename X2, 1.4443 + typename X3, typename X4, typename X5, typename X6> 1.4444 +inline MutantFunctor<R, Tuple1<A1> > 1.4445 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, 1.4446 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4447 + MutantRunner<R, Tuple1<A1> >* t = 1.4448 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1), 1.4449 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > 1.4450 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4451 + return MutantFunctor<R, Tuple1<A1> >(t); 1.4452 +} 1.4453 + 1.4454 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4455 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4456 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4457 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4458 + typename X6> 1.4459 +inline MutantFunctor<R, Tuple1<A1> > 1.4460 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, 1.4461 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4462 + MutantRunner<R, Tuple1<A1> >* t = 1.4463 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1), 1.4464 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > 1.4465 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4466 + return MutantFunctor<R, Tuple1<A1> >(t); 1.4467 +} 1.4468 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4469 + 1.4470 +#if defined (OS_WIN) 1.4471 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4472 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4473 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4474 + typename X6> 1.4475 +inline MutantFunctor<R, Tuple1<A1> > 1.4476 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1), 1.4477 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4478 + const P6& p6) { 1.4479 + MutantRunner<R, Tuple1<A1> >* t = 1.4480 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1), 1.4481 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > 1.4482 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4483 + return MutantFunctor<R, Tuple1<A1> >(t); 1.4484 +} 1.4485 + 1.4486 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4487 + typename P5, typename P6, typename A1, typename X1, typename X2, 1.4488 + typename X3, typename X4, typename X5, typename X6> 1.4489 +inline MutantFunctor<R, Tuple1<A1> > 1.4490 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, 1.4491 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4492 + MutantRunner<R, Tuple1<A1> >* t = 1.4493 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1), 1.4494 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > 1.4495 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4496 + return MutantFunctor<R, Tuple1<A1> >(t); 1.4497 +} 1.4498 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4499 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4500 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4501 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4502 + typename X6> 1.4503 +inline MutantFunctor<R, Tuple1<A1> > 1.4504 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1), 1.4505 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4506 + const P6& p6) { 1.4507 + MutantRunner<R, Tuple1<A1> >* t = 1.4508 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1), 1.4509 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > 1.4510 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4511 + return MutantFunctor<R, Tuple1<A1> >(t); 1.4512 +} 1.4513 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4514 +#endif // OS_WIN 1.4515 + 1.4516 +// 6 - 2 1.4517 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4518 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4519 + typename A2, typename X1, typename X2, typename X3, typename X4, 1.4520 + typename X5, typename X6> 1.4521 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.4522 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4523 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4524 + const P6& p6) { 1.4525 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.4526 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4527 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > 1.4528 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4529 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.4530 +} 1.4531 + 1.4532 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4533 + typename P5, typename P6, typename A1, typename A2, typename X1, 1.4534 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4535 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.4536 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2), const P1& p1, 1.4537 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4538 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.4539 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4540 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > 1.4541 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4542 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.4543 +} 1.4544 + 1.4545 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4546 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4547 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4548 + typename A2, typename X1, typename X2, typename X3, typename X4, 1.4549 + typename X5, typename X6> 1.4550 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.4551 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4552 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4553 + const P6& p6) { 1.4554 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.4555 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4556 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > 1.4557 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4558 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.4559 +} 1.4560 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4561 + 1.4562 +#if defined (OS_WIN) 1.4563 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4564 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4565 + typename A2, typename X1, typename X2, typename X3, typename X4, 1.4566 + typename X5, typename X6> 1.4567 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.4568 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4569 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4570 + const P6& p6) { 1.4571 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.4572 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4573 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > 1.4574 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4575 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.4576 +} 1.4577 + 1.4578 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4579 + typename P5, typename P6, typename A1, typename A2, typename X1, 1.4580 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4581 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.4582 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4583 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4584 + const P6& p6) { 1.4585 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.4586 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4587 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > 1.4588 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4589 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.4590 +} 1.4591 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4592 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4593 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4594 + typename A2, typename X1, typename X2, typename X3, typename X4, 1.4595 + typename X5, typename X6> 1.4596 +inline MutantFunctor<R, Tuple2<A1, A2> > 1.4597 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4598 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4599 + const P6& p6) { 1.4600 + MutantRunner<R, Tuple2<A1, A2> >* t = 1.4601 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2), 1.4602 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > 1.4603 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4604 + return MutantFunctor<R, Tuple2<A1, A2> >(t); 1.4605 +} 1.4606 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4607 +#endif // OS_WIN 1.4608 + 1.4609 +// 6 - 3 1.4610 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4611 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4612 + typename A2, typename A3, typename X1, typename X2, typename X3, 1.4613 + typename X4, typename X5, typename X6> 1.4614 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4615 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4616 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4617 + const P6& p6) { 1.4618 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4619 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4620 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > 1.4621 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4622 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4623 +} 1.4624 + 1.4625 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4626 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4627 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4628 + typename X6> 1.4629 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4630 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3), const P1& p1, 1.4631 + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { 1.4632 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4633 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4634 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > 1.4635 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4636 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4637 +} 1.4638 + 1.4639 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4640 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4641 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4642 + typename A2, typename A3, typename X1, typename X2, typename X3, 1.4643 + typename X4, typename X5, typename X6> 1.4644 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4645 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4646 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4647 + const P6& p6) { 1.4648 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4649 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4650 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > 1.4651 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4652 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4653 +} 1.4654 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4655 + 1.4656 +#if defined (OS_WIN) 1.4657 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4658 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4659 + typename A2, typename A3, typename X1, typename X2, typename X3, 1.4660 + typename X4, typename X5, typename X6> 1.4661 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4662 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4663 + A3), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4664 + const P6& p6) { 1.4665 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4666 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4667 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > 1.4668 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4669 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4670 +} 1.4671 + 1.4672 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4673 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4674 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4675 + typename X6> 1.4676 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4677 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4678 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4679 + const P6& p6) { 1.4680 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4681 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4682 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > 1.4683 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4684 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4685 +} 1.4686 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4687 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4688 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4689 + typename A2, typename A3, typename X1, typename X2, typename X3, 1.4690 + typename X4, typename X5, typename X6> 1.4691 +inline MutantFunctor<R, Tuple3<A1, A2, A3> > 1.4692 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4693 + A3), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4694 + const P6& p6) { 1.4695 + MutantRunner<R, Tuple3<A1, A2, A3> >* t = 1.4696 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), 1.4697 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > 1.4698 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4699 + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); 1.4700 +} 1.4701 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4702 +#endif // OS_WIN 1.4703 + 1.4704 +// 6 - 4 1.4705 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4706 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4707 + typename A2, typename A3, typename A4, typename X1, typename X2, 1.4708 + typename X3, typename X4, typename X5, typename X6> 1.4709 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4710 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4711 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4712 + const P6& p6) { 1.4713 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4714 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4715 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > 1.4716 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4717 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4718 +} 1.4719 + 1.4720 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4721 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4722 + typename A4, typename X1, typename X2, typename X3, typename X4, 1.4723 + typename X5, typename X6> 1.4724 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4725 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4726 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4727 + const P6& p6) { 1.4728 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4729 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4730 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > 1.4731 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4732 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4733 +} 1.4734 + 1.4735 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4736 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4737 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4738 + typename A2, typename A3, typename A4, typename X1, typename X2, 1.4739 + typename X3, typename X4, typename X5, typename X6> 1.4740 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4741 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4742 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4743 + const P6& p6) { 1.4744 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4745 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4746 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > 1.4747 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4748 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4749 +} 1.4750 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4751 + 1.4752 +#if defined (OS_WIN) 1.4753 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4754 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4755 + typename A2, typename A3, typename A4, typename X1, typename X2, 1.4756 + typename X3, typename X4, typename X5, typename X6> 1.4757 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4758 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4759 + A3, A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4760 + const P5& p5, const P6& p6) { 1.4761 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4762 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4763 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > 1.4764 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4765 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4766 +} 1.4767 + 1.4768 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4769 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4770 + typename A4, typename X1, typename X2, typename X3, typename X4, 1.4771 + typename X5, typename X6> 1.4772 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4773 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4774 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4775 + const P6& p6) { 1.4776 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4777 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4778 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > 1.4779 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4780 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4781 +} 1.4782 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4783 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4784 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4785 + typename A2, typename A3, typename A4, typename X1, typename X2, 1.4786 + typename X3, typename X4, typename X5, typename X6> 1.4787 +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > 1.4788 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4789 + A3, A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4790 + const P5& p5, const P6& p6) { 1.4791 + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1.4792 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), 1.4793 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > 1.4794 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4795 + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1.4796 +} 1.4797 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4798 +#endif // OS_WIN 1.4799 + 1.4800 +// 6 - 5 1.4801 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4802 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4803 + typename A2, typename A3, typename A4, typename A5, typename X1, 1.4804 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4805 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4806 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, 1.4807 + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4808 + const P6& p6) { 1.4809 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4810 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4811 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > 1.4812 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4813 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4814 +} 1.4815 + 1.4816 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4817 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4818 + typename A4, typename A5, typename X1, typename X2, typename X3, 1.4819 + typename X4, typename X5, typename X6> 1.4820 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4821 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4822 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4823 + const P6& p6) { 1.4824 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4825 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4826 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > 1.4827 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4828 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4829 +} 1.4830 + 1.4831 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4832 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4833 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4834 + typename A2, typename A3, typename A4, typename A5, typename X1, 1.4835 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4836 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4837 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, 1.4838 + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4839 + const P6& p6) { 1.4840 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4841 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4842 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > 1.4843 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4844 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4845 +} 1.4846 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4847 + 1.4848 +#if defined (OS_WIN) 1.4849 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4850 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4851 + typename A2, typename A3, typename A4, typename A5, typename X1, 1.4852 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4853 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4854 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4855 + A3, A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4856 + const P5& p5, const P6& p6) { 1.4857 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4858 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4859 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > 1.4860 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4861 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4862 +} 1.4863 + 1.4864 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4865 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4866 + typename A4, typename A5, typename X1, typename X2, typename X3, 1.4867 + typename X4, typename X5, typename X6> 1.4868 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4869 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, 1.4870 + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4871 + const P6& p6) { 1.4872 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4873 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4874 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > 1.4875 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4876 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4877 +} 1.4878 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4879 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4880 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4881 + typename A2, typename A3, typename A4, typename A5, typename X1, 1.4882 + typename X2, typename X3, typename X4, typename X5, typename X6> 1.4883 +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > 1.4884 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4885 + A3, A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4886 + const P5& p5, const P6& p6) { 1.4887 + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = 1.4888 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), 1.4889 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > 1.4890 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4891 + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); 1.4892 +} 1.4893 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4894 +#endif // OS_WIN 1.4895 + 1.4896 +// 6 - 6 1.4897 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4898 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4899 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.4900 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4901 + typename X6> 1.4902 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4903 +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, 1.4904 + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4905 + const P6& p6) { 1.4906 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4907 + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4908 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4909 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4910 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4911 +} 1.4912 + 1.4913 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4914 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4915 + typename A4, typename A5, typename A6, typename X1, typename X2, 1.4916 + typename X3, typename X4, typename X5, typename X6> 1.4917 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4918 +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4919 + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4920 + const P6& p6) { 1.4921 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4922 + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4923 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4924 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4925 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4926 +} 1.4927 + 1.4928 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4929 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4930 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4931 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.4932 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4933 + typename X6> 1.4934 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4935 +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, 1.4936 + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, 1.4937 + const P6& p6) { 1.4938 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4939 + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4940 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4941 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4942 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4943 +} 1.4944 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4945 + 1.4946 +#if defined (OS_WIN) 1.4947 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4948 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4949 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.4950 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4951 + typename X6> 1.4952 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4953 +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4954 + A3, A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4955 + const P5& p5, const P6& p6) { 1.4956 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4957 + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4958 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4959 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4960 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4961 +} 1.4962 + 1.4963 +template <typename R, typename P1, typename P2, typename P3, typename P4, 1.4964 + typename P5, typename P6, typename A1, typename A2, typename A3, 1.4965 + typename A4, typename A5, typename A6, typename X1, typename X2, 1.4966 + typename X3, typename X4, typename X5, typename X6> 1.4967 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4968 +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, 1.4969 + A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4970 + const P5& p5, const P6& p6) { 1.4971 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4972 + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4973 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4974 + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4975 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4976 +} 1.4977 +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4978 +template <typename R, typename T, typename U, typename P1, typename P2, 1.4979 + typename P3, typename P4, typename P5, typename P6, typename A1, 1.4980 + typename A2, typename A3, typename A4, typename A5, typename A6, 1.4981 + typename X1, typename X2, typename X3, typename X4, typename X5, 1.4982 + typename X6> 1.4983 +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4984 +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, 1.4985 + A3, A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, 1.4986 + const P5& p5, const P6& p6) { 1.4987 + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = 1.4988 + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), 1.4989 + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > 1.4990 + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); 1.4991 + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); 1.4992 +} 1.4993 +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1.4994 +#endif // OS_WIN 1.4995 + 1.4996 +} // namespace testing 1.4997 + 1.4998 +#endif // TESTING_GMOCK_MUTANT_H_