From 98700edbca8cdcaf074db5909fa69c31123e472d Mon Sep 17 00:00:00 2001 From: Eivind Kvedalen Date: Sat, 29 Aug 2015 18:06:34 +0200 Subject: [PATCH] Added Base::freecad_dynamic_cast(...) --- src/Base/BaseClass.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/Base/BaseClass.h b/src/Base/BaseClass.h index ee7294856..b23ec97b5 100644 --- a/src/Base/BaseClass.h +++ b/src/Base/BaseClass.h @@ -103,8 +103,33 @@ public: }; +/** + * Template that works just like dynamic_cast, but expects the argument to + * inherit from Base::BaseClass. + * + */ +template T * freecad_dynamic_cast(Base::BaseClass * t) +{ + if (t && t->isDerivedFrom(T::getClassTypeId())) + return static_cast(t); + else + return 0; +} +/** + * Template that works just like dynamic_cast, but expects the argument to + * inherit from a const Base::BaseClass. + * + */ + +template const T * freecad_dynamic_cast(const Base::BaseClass * t) +{ + if (t && t->isDerivedFrom(T::getClassTypeId())) + return static_cast(t); + else + return 0; +} } //namespace Base