diff options
author | ajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-10 03:14:35 +0000 |
---|---|---|
committer | ajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-10 03:14:35 +0000 |
commit | 481915a77d8a2d0a968f1963271a13618bea9908 (patch) | |
tree | 40b0ae8b2616cff35cccfa87b3ef21999aad7346 /base/callback.h | |
parent | 81814bce7954f38311b39c488ba076a297458534 (diff) | |
download | chromium_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.h | 28 |
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, |