Newer
Older
* @param name :: The name of the property
* @returns A pointer to an algorithm
*/
template <>
MANTID_API_DLL API::IAlgorithm_sptr
IPropertyManager::getValue<API::IAlgorithm_sptr>(
const std::string &name) const {
auto *prop = dynamic_cast<PropertyWithValue<API::IAlgorithm_sptr> *>(
getPointerToProperty(name));
if (prop) {
return *prop;
} else {
std::string message = "Attempt to assign property " + name +
" to incorrect type. Expected shared_ptr<IAlgorithm>";
throw std::runtime_error(message);
}
}
/**
* Get the value of a given property as the declared concrete type (const
* version)
* @param name :: The name of the property
* @returns A pointer to an algorithm
*/
template <>
MANTID_API_DLL API::IAlgorithm_const_sptr
IPropertyManager::getValue<API::IAlgorithm_const_sptr>(
const std::string &name) const {
auto *prop = dynamic_cast<PropertyWithValue<API::IAlgorithm_sptr> *>(
getPointerToProperty(name));
if (prop) {
return prop->operator()();
} else {
std::string message =
"Attempt to assign property " + name +
" to incorrect type. Expected const shared_ptr<IAlgorithm>";
throw std::runtime_error(message);
Gigg, Martyn Anthony
committed
}
} // namespace Kernel
Gigg, Martyn Anthony
committed
Peterson, Peter
committed
} // namespace Mantid