1
0
mirror of https://github.com/anope/anope.git synced 2026-07-02 06:06:39 +02:00
This commit is contained in:
Adam
2013-11-01 05:19:48 -04:00
parent 70e9b20274
commit 6e8d2bf09d
2 changed files with 4 additions and 17 deletions
+2 -15
View File
@@ -762,26 +762,13 @@ template<typename T> inline T convertTo(const Anope::string &s, bool failIfLefto
*/
#ifdef DEBUG_BUILD
# include <typeinfo>
template<typename T, typename O> inline T anope_dynamic_static_cast(O* ptr)
template<typename T, typename O> inline T anope_dynamic_static_cast(O ptr)
{
T ret = dynamic_cast<T>(ptr);
if (ptr != NULL && ret == NULL)
throw CoreException(Anope::string("anope_dynamic_static_cast<") + typeid(T).name() + ">(" + typeid(O*).name() + ") fail");
throw CoreException(Anope::string("anope_dynamic_static_cast<") + typeid(T).name() + ">(" + typeid(O).name() + ") fail");
return ret;
}
template<typename T, typename O> inline T anope_dynamic_static_cast(O& ref)
{
try
{
return dynamic_cast<T>(ref);
}
catch (const std::bad_cast &ex)
{
throw CoreException(Anope::string("std::bad_cast from anope_dynamic_static_cast<") + typeid(T).name() + ">(" + typeid(O&).name() + "): " + ex.what());
}
}
#else
template<typename T, typename O> inline T anope_dynamic_static_cast(O ptr)
{
+2 -2
View File
@@ -49,7 +49,7 @@ class AccessChanAccess : public ChanAccess
if (this->provider != other.provider)
return ChanAccess::operator>(other);
else
return this->level > anope_dynamic_static_cast<const AccessChanAccess &, const ChanAccess &>(other).level;
return this->level > anope_dynamic_static_cast<const AccessChanAccess *>(&other)->level;
}
bool operator<(const ChanAccess &other) const anope_override
@@ -57,7 +57,7 @@ class AccessChanAccess : public ChanAccess
if (this->provider != other.provider)
return ChanAccess::operator<(other);
else
return this->level < anope_dynamic_static_cast<const AccessChanAccess &, const ChanAccess &>(other).level;
return this->level < anope_dynamic_static_cast<const AccessChanAccess *>(&other)->level;
}
};