diff options
Diffstat (limited to 'testing/gmock_mutant.h')
-rw-r--r-- | testing/gmock_mutant.h | 2490 |
1 files changed, 2490 insertions, 0 deletions
diff --git a/testing/gmock_mutant.h b/testing/gmock_mutant.h index 897d68a..b90bf7b 100644 --- a/testing/gmock_mutant.h +++ b/testing/gmock_mutant.h @@ -181,6 +181,38 @@ inline R DispatchToFunction(Function function, return (*function)(c.a, c.b, c.c, c.d); } +// 0 - 5 +template <typename R, typename T, typename Method, typename C1, typename C2, + typename C3, typename C4, typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple0& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (obj->*method)(c.a, c.b, c.c, c.d, c.e); +} +template <typename R, typename Function, typename C1, typename C2, typename C3, + typename C4, typename C5> +inline R DispatchToFunction(Function function, + const Tuple0& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(c.a, c.b, c.c, c.d, c.e); +} + +// 0 - 6 +template <typename R, typename T, typename Method, typename C1, typename C2, + typename C3, typename C4, typename C5, typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple0& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (obj->*method)(c.a, c.b, c.c, c.d, c.e, c.f); +} +template <typename R, typename Function, typename C1, typename C2, typename C3, + typename C4, typename C5, typename C6> +inline R DispatchToFunction(Function function, + const Tuple0& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (*function)(c.a, c.b, c.c, c.d, c.e, c.f); +} + // 1 - 0 template <typename R, typename T, typename Method, typename P1> inline R DispatchToMethod(T* obj, Method method, @@ -256,6 +288,38 @@ inline R DispatchToFunction(Function function, return (*function)(p.a, c.a, c.b, c.c, c.d); } +// 1 - 5 +template <typename R, typename T, typename Method, typename P1, typename C1, + typename C2, typename C3, typename C4, typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple1<P1>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (obj->*method)(p.a, c.a, c.b, c.c, c.d, c.e); +} +template <typename R, typename Function, typename P1, typename C1, typename C2, + typename C3, typename C4, typename C5> +inline R DispatchToFunction(Function function, + const Tuple1<P1>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(p.a, c.a, c.b, c.c, c.d, c.e); +} + +// 1 - 6 +template <typename R, typename T, typename Method, typename P1, typename C1, + typename C2, typename C3, typename C4, typename C5, typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple1<P1>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (obj->*method)(p.a, c.a, c.b, c.c, c.d, c.e, c.f); +} +template <typename R, typename Function, typename P1, typename C1, typename C2, + typename C3, typename C4, typename C5, typename C6> +inline R DispatchToFunction(Function function, + const Tuple1<P1>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (*function)(p.a, c.a, c.b, c.c, c.d, c.e, c.f); +} + // 2 - 0 template <typename R, typename T, typename Method, typename P1, typename P2> inline R DispatchToMethod(T* obj, Method method, @@ -333,6 +397,39 @@ inline R DispatchToFunction(Function function, return (*function)(p.a, p.b, c.a, c.b, c.c, c.d); } +// 2 - 5 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename C1, typename C2, typename C3, typename C4, typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple2<P1, P2>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d, c.e); +} +template <typename R, typename Function, typename P1, typename P2, typename C1, + typename C2, typename C3, typename C4, typename C5> +inline R DispatchToFunction(Function function, + const Tuple2<P1, P2>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(p.a, p.b, c.a, c.b, c.c, c.d, c.e); +} + +// 2 - 6 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename C1, typename C2, typename C3, typename C4, typename C5, + typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple2<P1, P2>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d, c.e, c.f); +} +template <typename R, typename Function, typename P1, typename P2, typename C1, + typename C2, typename C3, typename C4, typename C5, typename C6> +inline R DispatchToFunction(Function function, + const Tuple2<P1, P2>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (*function)(p.a, p.b, c.a, c.b, c.c, c.d, c.e, c.f); +} + // 3 - 0 template <typename R, typename T, typename Method, typename P1, typename P2, typename P3> @@ -412,6 +509,41 @@ inline R DispatchToFunction(Function function, return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d); } +// 3 - 5 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename C1, typename C2, typename C3, typename C4, + typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple3<P1, P2, P3>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename C1, typename C2, typename C3, typename C4, typename C5> +inline R DispatchToFunction(Function function, + const Tuple3<P1, P2, P3>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e); +} + +// 3 - 6 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename C1, typename C2, typename C3, typename C4, + typename C5, typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple3<P1, P2, P3>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e, c.f); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename C1, typename C2, typename C3, typename C4, typename C5, + typename C6> +inline R DispatchToFunction(Function function, + const Tuple3<P1, P2, P3>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e, c.f); +} + // 4 - 0 template <typename R, typename T, typename Method, typename P1, typename P2, typename P3, typename P4> @@ -493,6 +625,282 @@ inline R DispatchToFunction(Function function, return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d); } +// 4 - 5 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename C1, typename C2, typename C3, + typename C4, typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple4<P1, P2, P3, P4>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename C1, typename C2, typename C3, typename C4, + typename C5> +inline R DispatchToFunction(Function function, + const Tuple4<P1, P2, P3, P4>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e); +} + +// 4 - 6 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename C1, typename C2, typename C3, + typename C4, typename C5, typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple4<P1, P2, P3, P4>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e, c.f); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename C1, typename C2, typename C3, typename C4, + typename C5, typename C6> +inline R DispatchToFunction(Function function, + const Tuple4<P1, P2, P3, P4>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e, c.f); +} + +// 5 - 0 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple0& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple0& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e); +} + +// 5 - 1 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename C1> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple1<C1>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename C1> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple1<C1>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a); +} + +// 5 - 2 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename C1, typename C2> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple2<C1, C2>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename C1, typename C2> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple2<C1, C2>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b); +} + +// 5 - 3 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename C1, typename C2, + typename C3> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple3<C1, C2, C3>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename C1, typename C2, typename C3> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple3<C1, C2, C3>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c); +} + +// 5 - 4 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename C1, typename C2, + typename C3, typename C4> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple4<C1, C2, C3, C4>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename C1, typename C2, typename C3, + typename C4> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple4<C1, C2, C3, C4>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d); +} + +// 5 - 5 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename C1, typename C2, + typename C3, typename C4, typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename C1, typename C2, typename C3, + typename C4, typename C5> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e); +} + +// 5 - 6 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename C1, typename C2, + typename C3, typename C4, typename C5, typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + 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); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename C1, typename C2, typename C3, + typename C4, typename C5, typename C6> +inline R DispatchToFunction(Function function, + const Tuple5<P1, P2, P3, P4, P5>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e, c.f); +} + +// 6 - 0 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple0& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple0& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f); +} + +// 6 - 1 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename C1> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple1<C1>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6, typename C1> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple1<C1>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a); +} + +// 6 - 2 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename C1, + typename C2> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple2<C1, C2>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6, typename C1, typename C2> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple2<C1, C2>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b); +} + +// 6 - 3 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename C1, + typename C2, typename C3> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple3<C1, C2, C3>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6, typename C1, typename C2, + typename C3> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple3<C1, C2, C3>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c); +} + +// 6 - 4 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename C1, + typename C2, typename C3, typename C4> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple4<C1, C2, C3, C4>& c) { + return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6, typename C1, typename C2, + typename C3, typename C4> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple4<C1, C2, C3, C4>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d); +} + +// 6 - 5 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename C1, + typename C2, typename C3, typename C4, typename C5> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + 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); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6, typename C1, typename C2, + typename C3, typename C4, typename C5> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple5<C1, C2, C3, C4, C5>& c) { + return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e); +} + +// 6 - 6 +template <typename R, typename T, typename Method, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename C1, + typename C2, typename C3, typename C4, typename C5, typename C6> +inline R DispatchToMethod(T* obj, Method method, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + 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); +} +template <typename R, typename Function, typename P1, typename P2, typename P3, + typename P4, typename P5, typename P6, typename C1, typename C2, + typename C3, typename C4, typename C5, typename C6> +inline R DispatchToFunction(Function function, + const Tuple6<P1, P2, P3, P4, P5, P6>& p, + const Tuple6<C1, C2, C3, C4, C5, C6>& c) { + 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); +} + // Interface that is exposed to the consumer, that does the actual calling // of the method. template <typename R, typename Params> @@ -945,6 +1353,150 @@ CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4)) { #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING #endif // OS_WIN +// 0 - 5 +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4, A5)) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(A1, A2, A3, A4, A5), + Tuple0, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename A1, typename A2, typename A3, typename A4, + typename A5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(A1, A2, A3, A4, A5)) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(A1, A2, A3, A4, A5), + Tuple0, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple()); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4, A5)) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4, A5), + Tuple0, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5)) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5), + Tuple0, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename A1, typename A2, typename A3, typename A4, + typename A5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4, A5)) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4, A5), + Tuple0, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple()); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5)) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5), + Tuple0, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 0 - 6 +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4, A5, A6)) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(A1, A2, A3, A4, A5, A6), + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(A1, A2, A3, A4, A5, A6)) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(A1, A2, A3, A4, A5, A6), + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple()); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4, A5, A6)) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4, A5, A6), + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5, A6)) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5, A6), + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4, A5, A6)) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4, A5, A6), + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple()); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5, A6)) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5, A6), + Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple()); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + // 1 - 0 template <typename R, typename T, typename U, typename P1, typename X1> inline MutantFunctor<R, Tuple0> @@ -1297,6 +1849,161 @@ CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4), #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING #endif // OS_WIN +// 1 - 5 +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4, A5), const P1& p1) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4, A5), + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(X1, A1, A2, A3, A4, A5), const P1& p1) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(X1, A1, A2, A3, A4, A5), + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4, A5), const P1& p1) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4, A5), + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5), + const P1& p1) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5), + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4, A5), const P1& p1) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4, A5), + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5), + const P1& p1) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5), + Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 1 - 6 +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4, A5, A6), + const P1& p1) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4, A5, A6), + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(X1, A1, A2, A3, A4, A5, A6), const P1& p1) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(X1, A1, A2, A3, A4, A5, A6), + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4, A5, A6), + const P1& p1) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4, A5, A6), + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5, A6), + const P1& p1) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5, A6), + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4, A5, A6), + const P1& p1) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4, A5, A6), + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5, A6), + const P1& p1) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5, A6), + Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + // 2 - 0 template <typename R, typename T, typename U, typename P1, typename P2, typename X1, typename X2> @@ -1680,6 +2387,172 @@ CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4), #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING #endif // OS_WIN +// 2 - 5 +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename X1, typename X2> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, + const P2& p2) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5), + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename A1, typename A2, + typename A3, typename A4, typename A5, typename X1, typename X2> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, + const P2& p2) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4, A5), + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename X1, typename X2> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, + const P2& p2) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5), + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename X1, typename X2> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5), + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename A1, typename A2, + typename A3, typename A4, typename A5, typename X1, typename X2> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4, A5), const P1& p1, + const P2& p2) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4, A5), + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename X1, typename X2> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5), + Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 2 - 6 +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename A6, typename X1, typename X2> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5, A6), + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6, typename X1, + typename X2> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4, A5, A6), const P1& p1, + const P2& p2) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4, A5, A6), + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename A6, typename X1, typename X2> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5, A6), + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename A6, typename X1, typename X2> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5, A6), + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6, typename X1, + typename X2> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4, A5, A6), + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename A6, typename X1, typename X2> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5, A6), + Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + // 3 - 0 template <typename R, typename T, typename U, typename P1, typename P2, typename P3, typename X1, typename X2, typename X3> @@ -2084,6 +2957,174 @@ CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4), #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING #endif // OS_WIN +// 3 - 5 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5), + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1, + typename X2, typename X3> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4, A5), const P1& p1, + const P2& p2, const P3& p3) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4, A5), + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5), + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5), + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1, + typename X2, typename X3> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4, A5), + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5), + Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 3 - 6 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4, A5, A6), const P1& p1, + const P2& p2, const P3& p3) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6, typename X1, typename X2, typename X3> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6), + Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + // 4 - 0 template <typename R, typename T, typename U, typename P1, typename P2, typename P3, typename P4, typename X1, typename X2, typename X3, @@ -2500,6 +3541,1455 @@ CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4), #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING #endif // OS_WIN +// 4 - 5 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1, typename X2, typename X3, + typename X4> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename X1, typename X2, typename X3, typename X4> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4, A5), const P1& p1, + const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1, typename X2, typename X3, + typename X4> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1, typename X2, typename X3, + typename X4> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename X1, typename X2, typename X3, typename X4> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1, typename X2, typename X3, + typename X4> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5), + Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 4 - 6 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1, typename X2, + typename X3, typename X4> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename A6, typename X1, typename X2, typename X3, typename X4> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1, typename X2, + typename X3, typename X4> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1, typename X2, + typename X3, typename X4> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, + A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename A1, typename A2, typename A3, typename A4, typename A5, + typename A6, typename X1, typename X2, typename X3, typename X4> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1, typename X2, + typename X3, typename X4> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, + A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6), + Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 0 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple0>* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5), + Tuple5<P1, P2, P3, P4, P5>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple0>(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple0> +CreateFunctor(R (*function)(X1, X2, X3, X4, X5), const P1& p1, const P2& p2, + const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple0>* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5), + Tuple5<P1, P2, P3, P4, P5>, Tuple0> + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple0>(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple0>* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5), + Tuple5<P1, P2, P3, P4, P5>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple0>(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple0>* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5), + Tuple5<P1, P2, P3, P4, P5>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple0>(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple0> +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple0>* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5), + Tuple5<P1, P2, P3, P4, P5>, Tuple0> + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple0>(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple0>* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5), + Tuple5<P1, P2, P3, P4, P5>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple0>(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 1 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple1<A1> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1), + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple1<A1> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1), const P1& p1, const P2& p2, + const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1), + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple1<A1> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1), + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple1<A1> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple1<A1> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1), + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple1<A1> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1), + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple1<A1> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1), + Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple1<A1> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 2 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename X1, typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2), + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2), + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename X1, typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2), + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename X1, typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2), + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2), + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename X1, typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2), + Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 3 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3), + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3), + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3), + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3), + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3), + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3), + Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 4 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename A4, + typename X1, typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, + A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename A4, + typename X1, typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, + A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4), + Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 5 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename A4, + typename A5, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, + A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename A4, + typename A5, typename X1, typename X2, typename X3, typename X4, + typename X5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename X1, typename X2, + typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, + A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5), + Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 5 - 6 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, + A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename A1, typename A2, typename A3, typename A4, + typename A5, typename A6, typename X1, typename X2, typename X3, + typename X4, typename X5> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename A1, typename A2, + typename A3, typename A4, typename A5, typename A6, typename X1, + typename X2, typename X3, typename X4, typename X5> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, + A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6), + Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 0 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple0>* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple0>(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple0> +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6), const P1& p1, const P2& p2, + const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple0>* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple0>(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple0>* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple0>(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple0>* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple0>(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple0> +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple0>* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple0>(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple0> +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple0>* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0> + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple0>(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 1 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple1<A1> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple1<A1> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple1<A1> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple1<A1> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple1<A1> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple1<A1> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple1<A1> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple1<A1> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple1<A1> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple1<A1> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 2 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +inline MutantFunctor<R, Tuple2<A1, A2> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple2<A1, A2> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple2<A1, A2> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 3 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3), const P1& p1, + const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple3<A1, A2, A3> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple3<A1, A2, A3> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple3<A1, A2, A3> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 4 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename A4, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3, A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename A4, typename X1, typename X2, typename X3, typename X4, + typename X5, typename X6> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3, A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 5 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3, A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename A4, typename A5, typename X1, typename X2, typename X3, + typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, + A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename X1, + typename X2, typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3, A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + +// 6 - 6 +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, + A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5, + const P6& p6) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING + +#if defined (OS_WIN) +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3, A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} + +template <typename R, typename P1, typename P2, typename P3, typename P4, + typename P5, typename P6, typename A1, typename A2, typename A3, + typename A4, typename A5, typename A6, typename X1, typename X2, + typename X3, typename X4, typename X5, typename X6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, + A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > + (function, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +template <typename R, typename T, typename U, typename P1, typename P2, + typename P3, typename P4, typename P5, typename P6, typename A1, + typename A2, typename A3, typename A4, typename A5, typename A6, + typename X1, typename X2, typename X3, typename X4, typename X5, + typename X6> +inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> > +CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, + A3, A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, + const P5& p5, const P6& p6) { + MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t = + new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6), + Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> > + (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6)); + return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t); +} +#endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING +#endif // OS_WIN + } // namespace testing #endif // TESTING_GMOCK_MUTANT_H_ |