Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3900)

Unified Diff: base/tuple.h

Issue 17911007: Have DispatchToMethod use base::internal::UnwrapTraits when dispatching (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Retry Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/tuple.h
diff --git a/base/tuple.h b/base/tuple.h
index 04809d9bdb096112966a6e7e8fba0145367d2197..12f7f84ea50b79e4a0f92c1cb47ae0e2319a1d4a 100644
--- a/base/tuple.h
+++ b/base/tuple.h
@@ -29,6 +29,8 @@
#ifndef BASE_TUPLE_H__
#define BASE_TUPLE_H__
+#include "base/bind_helpers.h"
+
// Traits ----------------------------------------------------------------------
//
// A simple traits class for tuple arguments.
@@ -538,58 +540,86 @@ inline void DispatchToMethod(ObjT* obj, Method method, const Tuple0& arg) {
template <class ObjT, class Method, class A>
inline void DispatchToMethod(ObjT* obj, Method method, const A& arg) {
- (obj->*method)(arg);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg));
}
template <class ObjT, class Method, class A>
inline void DispatchToMethod(ObjT* obj, Method method, const Tuple1<A>& arg) {
- (obj->*method)(arg.a);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a));
}
template<class ObjT, class Method, class A, class B>
inline void DispatchToMethod(ObjT* obj,
Method method,
const Tuple2<A, B>& arg) {
- (obj->*method)(arg.a, arg.b);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b));
}
template<class ObjT, class Method, class A, class B, class C>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<A, B, C>& arg) {
- (obj->*method)(arg.a, arg.b, arg.c);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c));
}
template<class ObjT, class Method, class A, class B, class C, class D>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<A, B, C, D>& arg) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d));
}
template<class ObjT, class Method, class A, class B, class C, class D, class E>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<A, B, C, D, E>& arg) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d, arg.e);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e));
}
template<class ObjT, class Method, class A, class B, class C, class D, class E,
class F>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<A, B, C, D, E, F>& arg) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f));
}
template<class ObjT, class Method, class A, class B, class C, class D, class E,
class F, class G>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple7<A, B, C, D, E, F, G>& arg) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f, arg.g);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f),
+ base::internal::UnwrapTraits<G>::Unwrap(arg.g));
}
template<class ObjT, class Method, class A, class B, class C, class D, class E,
class F, class G, class H>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple8<A, B, C, D, E, F, G, H>& arg) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f, arg.g, arg.h);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f),
+ base::internal::UnwrapTraits<G>::Unwrap(arg.g),
+ base::internal::UnwrapTraits<H>::Unwrap(arg.h));
}
// Static Dispatchers with no out params.
@@ -606,49 +636,77 @@ inline void DispatchToFunction(Function function, const A& arg) {
template <class Function, class A>
inline void DispatchToFunction(Function function, const Tuple1<A>& arg) {
- (*function)(arg.a);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a));
}
template<class Function, class A, class B>
inline void DispatchToFunction(Function function, const Tuple2<A, B>& arg) {
- (*function)(arg.a, arg.b);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b));
}
template<class Function, class A, class B, class C>
inline void DispatchToFunction(Function function, const Tuple3<A, B, C>& arg) {
- (*function)(arg.a, arg.b, arg.c);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c));
}
template<class Function, class A, class B, class C, class D>
inline void DispatchToFunction(Function function,
const Tuple4<A, B, C, D>& arg) {
- (*function)(arg.a, arg.b, arg.c, arg.d);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d));
}
template<class Function, class A, class B, class C, class D, class E>
inline void DispatchToFunction(Function function,
const Tuple5<A, B, C, D, E>& arg) {
- (*function)(arg.a, arg.b, arg.c, arg.d, arg.e);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e));
}
template<class Function, class A, class B, class C, class D, class E, class F>
inline void DispatchToFunction(Function function,
const Tuple6<A, B, C, D, E, F>& arg) {
- (*function)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f));
}
template<class Function, class A, class B, class C, class D, class E, class F,
class G>
inline void DispatchToFunction(Function function,
const Tuple7<A, B, C, D, E, F, G>& arg) {
- (*function)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f, arg.g);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f),
+ base::internal::UnwrapTraits<G>::Unwrap(arg.g));
}
template<class Function, class A, class B, class C, class D, class E, class F,
class G, class H>
inline void DispatchToFunction(Function function,
const Tuple8<A, B, C, D, E, F, G, H>& arg) {
- (*function)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f, arg.g, arg.h);
+ (*function)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f),
+ base::internal::UnwrapTraits<G>::Unwrap(arg.g),
+ base::internal::UnwrapTraits<H>::Unwrap(arg.h));
}
// Dispatchers with 0 out param (as a Tuple0).
@@ -662,46 +720,61 @@ inline void DispatchToMethod(ObjT* obj,
template <class ObjT, class Method, class A>
inline void DispatchToMethod(ObjT* obj, Method method, const A& arg, Tuple0*) {
- (obj->*method)(arg);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg));
}
template <class ObjT, class Method, class A>
inline void DispatchToMethod(ObjT* obj,
Method method,
const Tuple1<A>& arg, Tuple0*) {
- (obj->*method)(arg.a);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a));
}
template<class ObjT, class Method, class A, class B>
inline void DispatchToMethod(ObjT* obj,
Method method,
const Tuple2<A, B>& arg, Tuple0*) {
- (obj->*method)(arg.a, arg.b);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b));
}
template<class ObjT, class Method, class A, class B, class C>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<A, B, C>& arg, Tuple0*) {
- (obj->*method)(arg.a, arg.b, arg.c);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c));
}
template<class ObjT, class Method, class A, class B, class C, class D>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<A, B, C, D>& arg, Tuple0*) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d));
}
template<class ObjT, class Method, class A, class B, class C, class D, class E>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<A, B, C, D, E>& arg, Tuple0*) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d, arg.e);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e));
}
template<class ObjT, class Method, class A, class B, class C, class D, class E,
class F>
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<A, B, C, D, E, F>& arg, Tuple0*) {
- (obj->*method)(arg.a, arg.b, arg.c, arg.d, arg.e, arg.f);
+ (obj->*method)(base::internal::UnwrapTraits<A>::Unwrap(arg.a),
+ base::internal::UnwrapTraits<B>::Unwrap(arg.b),
+ base::internal::UnwrapTraits<C>::Unwrap(arg.c),
+ base::internal::UnwrapTraits<D>::Unwrap(arg.d),
+ base::internal::UnwrapTraits<E>::Unwrap(arg.e),
+ base::internal::UnwrapTraits<F>::Unwrap(arg.f));
}
// Dispatchers with 1 out param.
@@ -727,7 +800,7 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple1<InA>& in,
Tuple1<OutA>* out) {
- (obj->*method)(in.a, &out->a);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a), &out->a);
}
template<class ObjT, class Method, class InA, class InB,
@@ -735,7 +808,9 @@ template<class ObjT, class Method, class InA, class InB,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple2<InA, InB>& in,
Tuple1<OutA>* out) {
- (obj->*method)(in.a, in.b, &out->a);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ &out->a);
}
template<class ObjT, class Method, class InA, class InB, class InC,
@@ -743,7 +818,10 @@ template<class ObjT, class Method, class InA, class InB, class InC,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<InA, InB, InC>& in,
Tuple1<OutA>* out) {
- (obj->*method)(in.a, in.b, in.c, &out->a);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ &out->a);
}
template<class ObjT, class Method, class InA, class InB, class InC, class InD,
@@ -751,7 +829,11 @@ template<class ObjT, class Method, class InA, class InB, class InC, class InD,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<InA, InB, InC, InD>& in,
Tuple1<OutA>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, &out->a);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ &out->a);
}
template<class ObjT, class Method, class InA, class InB, class InC, class InD,
@@ -759,7 +841,12 @@ template<class ObjT, class Method, class InA, class InB, class InC, class InD,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<InA, InB, InC, InD, InE>& in,
Tuple1<OutA>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, &out->a);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ &out->a);
}
template<class ObjT, class Method,
@@ -768,7 +855,13 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<InA, InB, InC, InD, InE, InF>& in,
Tuple1<OutA>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, in.f, &out->a);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ base::internal::UnwrapTraits<InF>::Unwrap(in.f),
+ &out->a);
}
// Dispatchers with 2 out params.
@@ -794,7 +887,8 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple1<InA>& in,
Tuple2<OutA, OutB>* out) {
- (obj->*method)(in.a, &out->a, &out->b);
+ (obj->*method)(
+ base::internal::UnwrapTraits<InA>::Unwrap(in.a), &out->a, &out->b);
}
template<class ObjT, class Method, class InA, class InB,
@@ -802,7 +896,10 @@ template<class ObjT, class Method, class InA, class InB,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple2<InA, InB>& in,
Tuple2<OutA, OutB>* out) {
- (obj->*method)(in.a, in.b, &out->a, &out->b);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ &out->a,
+ &out->b);
}
template<class ObjT, class Method, class InA, class InB, class InC,
@@ -810,7 +907,11 @@ template<class ObjT, class Method, class InA, class InB, class InC,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<InA, InB, InC>& in,
Tuple2<OutA, OutB>* out) {
- (obj->*method)(in.a, in.b, in.c, &out->a, &out->b);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ &out->a,
+ &out->b);
}
template<class ObjT, class Method, class InA, class InB, class InC, class InD,
@@ -818,7 +919,12 @@ template<class ObjT, class Method, class InA, class InB, class InC, class InD,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<InA, InB, InC, InD>& in,
Tuple2<OutA, OutB>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, &out->a, &out->b);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ &out->a,
+ &out->b);
}
template<class ObjT, class Method,
@@ -827,7 +933,13 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<InA, InB, InC, InD, InE>& in,
Tuple2<OutA, OutB>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, &out->a, &out->b);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ &out->a,
+ &out->b);
}
template<class ObjT, class Method,
@@ -836,7 +948,14 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<InA, InB, InC, InD, InE, InF>& in,
Tuple2<OutA, OutB>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, in.f, &out->a, &out->b);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ base::internal::UnwrapTraits<InF>::Unwrap(in.f),
+ &out->a,
+ &out->b);
}
// Dispatchers with 3 out params.
@@ -862,7 +981,10 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple1<InA>& in,
Tuple3<OutA, OutB, OutC>* out) {
- (obj->*method)(in.a, &out->a, &out->b, &out->c);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ &out->a,
+ &out->b,
+ &out->c);
}
template<class ObjT, class Method, class InA, class InB,
@@ -870,7 +992,11 @@ template<class ObjT, class Method, class InA, class InB,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple2<InA, InB>& in,
Tuple3<OutA, OutB, OutC>* out) {
- (obj->*method)(in.a, in.b, &out->a, &out->b, &out->c);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ &out->a,
+ &out->b,
+ &out->c);
}
template<class ObjT, class Method, class InA, class InB, class InC,
@@ -878,7 +1004,12 @@ template<class ObjT, class Method, class InA, class InB, class InC,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<InA, InB, InC>& in,
Tuple3<OutA, OutB, OutC>* out) {
- (obj->*method)(in.a, in.b, in.c, &out->a, &out->b, &out->c);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ &out->a,
+ &out->b,
+ &out->c);
}
template<class ObjT, class Method, class InA, class InB, class InC, class InD,
@@ -886,7 +1017,13 @@ template<class ObjT, class Method, class InA, class InB, class InC, class InD,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<InA, InB, InC, InD>& in,
Tuple3<OutA, OutB, OutC>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, &out->a, &out->b, &out->c);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ &out->a,
+ &out->b,
+ &out->c);
}
template<class ObjT, class Method,
@@ -895,7 +1032,14 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<InA, InB, InC, InD, InE>& in,
Tuple3<OutA, OutB, OutC>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, &out->a, &out->b, &out->c);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ &out->a,
+ &out->b,
+ &out->c);
}
template<class ObjT, class Method,
@@ -904,7 +1048,15 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<InA, InB, InC, InD, InE, InF>& in,
Tuple3<OutA, OutB, OutC>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, in.f, &out->a, &out->b, &out->c);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ base::internal::UnwrapTraits<InF>::Unwrap(in.f),
+ &out->a,
+ &out->b,
+ &out->c);
}
// Dispatchers with 4 out params.
@@ -922,7 +1074,11 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const InA& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in, &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
template<class ObjT, class Method, class InA,
@@ -930,7 +1086,11 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple1<InA>& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in.a, &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
template<class ObjT, class Method, class InA, class InB,
@@ -938,7 +1098,12 @@ template<class ObjT, class Method, class InA, class InB,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple2<InA, InB>& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in.a, in.b, &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
template<class ObjT, class Method, class InA, class InB, class InC,
@@ -946,7 +1111,13 @@ template<class ObjT, class Method, class InA, class InB, class InC,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<InA, InB, InC>& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in.a, in.b, in.c, &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
template<class ObjT, class Method, class InA, class InB, class InC, class InD,
@@ -954,7 +1125,14 @@ template<class ObjT, class Method, class InA, class InB, class InC, class InD,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<InA, InB, InC, InD>& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
template<class ObjT, class Method,
@@ -963,8 +1141,15 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<InA, InB, InC, InD, InE>& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e,
- &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
template<class ObjT, class Method,
@@ -973,8 +1158,16 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<InA, InB, InC, InD, InE, InF>& in,
Tuple4<OutA, OutB, OutC, OutD>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, in.f,
- &out->a, &out->b, &out->c, &out->d);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ base::internal::UnwrapTraits<InF>::Unwrap(in.f),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d);
}
// Dispatchers with 5 out params.
@@ -992,7 +1185,12 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const InA& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in, &out->a, &out->b, &out->c, &out->d, &out->e);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
+ &out->e);
}
template<class ObjT, class Method, class InA,
@@ -1000,7 +1198,12 @@ template<class ObjT, class Method, class InA,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple1<InA>& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in.a, &out->a, &out->b, &out->c, &out->d, &out->e);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
+ &out->e);
}
template<class ObjT, class Method, class InA, class InB,
@@ -1008,7 +1211,13 @@ template<class ObjT, class Method, class InA, class InB,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple2<InA, InB>& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in.a, in.b, &out->a, &out->b, &out->c, &out->d, &out->e);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
+ &out->e);
}
template<class ObjT, class Method, class InA, class InB, class InC,
@@ -1016,7 +1225,14 @@ template<class ObjT, class Method, class InA, class InB, class InC,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple3<InA, InB, InC>& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in.a, in.b, in.c, &out->a, &out->b, &out->c, &out->d, &out->e);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
+ &out->e);
}
template<class ObjT, class Method, class InA, class InB, class InC, class InD,
@@ -1024,7 +1240,14 @@ template<class ObjT, class Method, class InA, class InB, class InC, class InD,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple4<InA, InB, InC, InD>& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, &out->a, &out->b, &out->c, &out->d,
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
&out->e);
}
@@ -1034,8 +1257,16 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple5<InA, InB, InC, InD, InE>& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e,
- &out->a, &out->b, &out->c, &out->d, &out->e);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
+ &out->e);
}
template<class ObjT, class Method,
@@ -1044,8 +1275,17 @@ template<class ObjT, class Method,
inline void DispatchToMethod(ObjT* obj, Method method,
const Tuple6<InA, InB, InC, InD, InE, InF>& in,
Tuple5<OutA, OutB, OutC, OutD, OutE>* out) {
- (obj->*method)(in.a, in.b, in.c, in.d, in.e, in.f,
- &out->a, &out->b, &out->c, &out->d, &out->e);
+ (obj->*method)(base::internal::UnwrapTraits<InA>::Unwrap(in.a),
+ base::internal::UnwrapTraits<InB>::Unwrap(in.b),
+ base::internal::UnwrapTraits<InC>::Unwrap(in.c),
+ base::internal::UnwrapTraits<InD>::Unwrap(in.d),
+ base::internal::UnwrapTraits<InE>::Unwrap(in.e),
+ base::internal::UnwrapTraits<InF>::Unwrap(in.f),
+ &out->a,
+ &out->b,
+ &out->c,
+ &out->d,
+ &out->e);
}
#endif // BASE_TUPLE_H__
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698