Improved the speed of the ValueObject get/setting by utilizing typeid() and static_cast<> in place of original dynamic_cast<>'s

This commit is contained in:
Robert Osfield
2016-02-04 13:10:28 +00:00
parent d8d37e3da7
commit b4eb8d4597
3 changed files with 83 additions and 9 deletions

View File

@@ -141,7 +141,7 @@ class OSG_EXPORT Object : public Referenced
/** Convert 'this' into a Camera pointer if Node is a Camera, otherwise return 0.
* Equivalent to dynamic_cast<Camera*>(this).*/
virtual Camera* asCamera() { return 0; }
/** convert 'const this' into a const Camera pointer if Node is a Camera, otherwise return 0.
* Equivalent to dynamic_cast<const Camera*>(this).*/
virtual const Camera* asCamera() const { return 0; }
@@ -170,6 +170,14 @@ class OSG_EXPORT Object : public Referenced
* Equivalent to dynamic_cast<const CallbackObject*>(this).*/
virtual const CallbackObject* asCallbackObject() const { return 0; }
/** Convert 'this' into a UserDataContainer pointer if Object is a UserDataContainer, otherwise return 0.
* Equivalent to dynamic_cast<UserDataContainer*>(this).*/
virtual UserDataContainer* asUserDataContainer() { return 0; }
/** convert 'const this' into a const UserDataContainer pointer if Object is a UserDataContainer, otherwise return 0.
* Equivalent to dynamic_cast<const UserDataContainer*>(this).*/
virtual const UserDataContainer* asUserDataContainer() const { return 0; }
/** Set whether to use a mutex to ensure ref() and unref() are thread safe.*/
virtual void setThreadSafeRefUnref(bool threadSafe);
@@ -366,7 +374,6 @@ protected:
};
}
#endif