summaryrefslogtreecommitdiffstats
path: root/base/callback.h
diff options
context:
space:
mode:
authorajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-10 03:14:35 +0000
committerajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-10 03:14:35 +0000
commit481915a77d8a2d0a968f1963271a13618bea9908 (patch)
tree40b0ae8b2616cff35cccfa87b3ef21999aad7346 /base/callback.h
parent81814bce7954f38311b39c488ba076a297458534 (diff)
downloadchromium_src-481915a77d8a2d0a968f1963271a13618bea9908.zip
chromium_src-481915a77d8a2d0a968f1963271a13618bea9908.tar.gz
chromium_src-481915a77d8a2d0a968f1963271a13618bea9908.tar.bz2
Make Callback.Equals() only work when comparing against the same type.
Previously, we were using the base class's comparator to check equality, which allows us to make comparisons across callbacks of different types. This disallows such a thing. BUG=none TEST=New no-compile test. Review URL: http://codereview.chromium.org/7780016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100565 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/callback.h')
-rw-r--r--base/callback.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/base/callback.h b/base/callback.h
index c1f584d..03abb4b 100644
--- a/base/callback.h
+++ b/base/callback.h
@@ -258,6 +258,10 @@ class Callback<R(void)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run() const {
PolymorphicInvoke f =
reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_);
@@ -292,6 +296,10 @@ class Callback<R(A1)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run(typename internal::ParamTraits<A1>::ForwardType a1) const {
PolymorphicInvoke f =
reinterpret_cast<PolymorphicInvoke>(polymorphic_invoke_);
@@ -327,6 +335,10 @@ class Callback<R(A1, A2)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run(typename internal::ParamTraits<A1>::ForwardType a1,
typename internal::ParamTraits<A2>::ForwardType a2) const {
PolymorphicInvoke f =
@@ -365,6 +377,10 @@ class Callback<R(A1, A2, A3)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run(typename internal::ParamTraits<A1>::ForwardType a1,
typename internal::ParamTraits<A2>::ForwardType a2,
typename internal::ParamTraits<A3>::ForwardType a3) const {
@@ -406,6 +422,10 @@ class Callback<R(A1, A2, A3, A4)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run(typename internal::ParamTraits<A1>::ForwardType a1,
typename internal::ParamTraits<A2>::ForwardType a2,
typename internal::ParamTraits<A3>::ForwardType a3,
@@ -451,6 +471,10 @@ class Callback<R(A1, A2, A3, A4, A5)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run(typename internal::ParamTraits<A1>::ForwardType a1,
typename internal::ParamTraits<A2>::ForwardType a2,
typename internal::ParamTraits<A3>::ForwardType a3,
@@ -499,6 +523,10 @@ class Callback<R(A1, A2, A3, A4, A5, A6)> : public internal::CallbackBase {
callback_type_does_not_match_bind_result);
}
+ bool Equals(const Callback& other) const {
+ return CallbackBase::Equals(other);
+ }
+
R Run(typename internal::ParamTraits<A1>::ForwardType a1,
typename internal::ParamTraits<A2>::ForwardType a2,
typename internal::ParamTraits<A3>::ForwardType a3,