kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #24177
dyn_cast
What is the purpose of dyn_cast<> in include/core/typeinfo.h? Why don't we just
use dynamic_cast<>? And can we either replace the former with the latter, or
add a comment to the former explaining its purpose?
Looks like an optimization for speed, but has anyone actually profiled and
found dynamic_cast to be a bottleneck? It's not exactly heavy.
/**
* Function dyn_cast()
*
* A lightweight dynamic downcast. Casts aObject to type Casted*.
* Uses EDA_ITEM::Type() and EDA_ITEM::ClassOf() to check if type matches.
* @param aObject object to be casted
* @return down-casted object or NULL if type doesn't match Casted.
*/
template<class Casted, class From>
Casted dyn_cast( From aObject )
{
if( remove_pointer<Casted>::type::ClassOf ( aObject ) )
return static_cast<Casted>( aObject );
return NULL;
}
--
Chris
Follow ups