summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-04-25 14:29:50 -0400
committerAdam <Adam@anope.org>2012-04-25 14:29:50 -0400
commit1081ecdae80d10bcac0f8543d665c5579f271e61 (patch)
tree7b2665bc103c7306b2ec08afc46bac5e7689eb38 /include
parent2370c16f1e9d395e47fc8963b1c301dff160c547 (diff)
Fixed non-debug build
Diffstat (limited to 'include')
-rw-r--r--include/anope.h22
-rw-r--r--include/extensible.h2
-rw-r--r--include/modes.h2
3 files changed, 19 insertions, 7 deletions
diff --git a/include/anope.h b/include/anope.h
index c67b1decb..a5056d50c 100644
--- a/include/anope.h
+++ b/include/anope.h
@@ -596,25 +596,37 @@ template<typename T> inline T convertTo(const Anope::string &s, bool failIfLefto
return x;
}
-/** Debug cast to be used instead of dynamic_cast, this uses dynamic_cast
- * for debug builds and static_cast on releass builds to speed up the program
- * because dynamic_cast relies on RTTI.
+/** Casts to be used instead of dynamic_cast, this uses dynamic_cast
+ * for debug builds and static_cast/reinterpret_cast on releass builds
+ * to speed up the program because dynamic_cast relies on RTTI.
*/
#ifdef DEBUG_BUILD
# include <typeinfo>
#endif
-template<typename T, typename O> inline T debug_cast(O ptr)
+template<typename T, typename O> inline T anope_dynamic_static_cast(O ptr)
{
#ifdef DEBUG_BUILD
T ret = dynamic_cast<T>(ptr);
if (ptr != NULL && ret == NULL)
- throw CoreException(Anope::string("debug_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;
#else
return static_cast<T>(ptr);
#endif
}
+template<typename T, typename O> inline T anope_dynamic_reinterpret_cast(O ptr)
+{
+#ifdef DEBUG_BUILD
+ T ret = dynamic_cast<T>(ptr);
+ if (ptr != NULL && ret == NULL)
+ throw CoreException(Anope::string("anope_dynamic_reinterpret_cast<") + typeid(T).name() + ">(" + typeid(O).name() + ") fail");
+ return ret;
+#else
+ return reinterpret_cast<T>(ptr);
+#endif
+}
+
/*************************************************************************/
/** Class with the ability to keep flags on items, they should extend from this
diff --git a/include/extensible.h b/include/extensible.h
index e0281c197..6e6d42fb7 100644
--- a/include/extensible.h
+++ b/include/extensible.h
@@ -90,7 +90,7 @@ class CoreExport Extensible
{
extensible_map::const_iterator it = this->extension_items.find(key);
if (it != this->extension_items.end())
- return debug_cast<T>(it->second);
+ return anope_dynamic_static_cast<T>(it->second);
return NULL;
}
diff --git a/include/modes.h b/include/modes.h
index 0fb822b7e..52545d1b9 100644
--- a/include/modes.h
+++ b/include/modes.h
@@ -113,7 +113,7 @@ enum ModeClass
/** This class is the basis of all modes in Anope
*/
-class CoreExport Mode : public virtual Base
+class CoreExport Mode : public Base
{
public:
/* Class of mode this is */