]> granicus.if.org Git - icinga2/commitdiff
Avoid using dynamic_pointer_cast when possible.
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 2 Dec 2013 08:16:46 +0000 (09:16 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 2 Dec 2013 10:18:16 +0000 (11:18 +0100)
Refs #5246

lib/base/dynamicobject.h
lib/base/dynamictype.cpp
lib/base/dynamictype.h
lib/base/value.h

index 1383f66f3a0f98c607ce6293b7ccf7c498ef04f5..9c7cfacb98e128e804e7cbe62fe084f7580c3adf 100644 (file)
@@ -89,7 +89,7 @@ public:
        {
                DynamicObject::Ptr object = GetObject(T::GetTypeName(), name);
 
-               return dynamic_pointer_cast<T>(object);
+               return static_pointer_cast<T>(object);
        }
 
        static void DumpObjects(const String& filename, int attributeTypes = FAState);
index eecdc21342713ab018bb314165f2903f373a6a9f..1f0ad3f764aa9c4788841378807d16c844708d6e 100644 (file)
@@ -134,7 +134,7 @@ DynamicObject::Ptr DynamicType::CreateObject(const Dictionary::Ptr& serializedUp
 
        Deserialize(object, serializedUpdate, FAConfig);
 
-       return dynamic_pointer_cast<DynamicObject>(object);
+       return static_pointer_cast<DynamicObject>(object);
 }
 
 boost::mutex& DynamicType::GetStaticMutex(void)
index a547652a5f8726d76b1da35c21044a6575c1ab57..4862b1e2fd82d88baf6abd119763bb992a61ac51 100644 (file)
@@ -56,7 +56,7 @@ public:
                std::vector<shared_ptr<T> > objects;
 
                BOOST_FOREACH(const DynamicObject::Ptr& object, GetObjects(T::GetTypeName())) {
-                       shared_ptr<T> tobject = dynamic_pointer_cast<T>(object);
+                       shared_ptr<T> tobject = static_pointer_cast<T>(object);
 
                        ASSERT(tobject);
 
index ecac6ee8668bf318f2c3fde5b3b8db023f89f51f..6c232444008b2c58ce5940b1619e33ee4f4f88ee 100644 (file)
@@ -97,10 +97,14 @@ public:
                if (IsEmpty())
                        return shared_ptr<T>();
 
+#ifdef _DEBUG
                shared_ptr<T> object = dynamic_pointer_cast<T>(boost::get<Object::Ptr>(m_Value));
 
                if (!object)
                        BOOST_THROW_EXCEPTION(std::bad_cast());
+#else /* _DEBUG */
+               shared_ptr<T> object = static_pointer_cast<T>(boost::get<Object::Ptr>(m_Value));
+#endif /* _DEBUG */
 
                return object;
        }