mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-14 02:57:45 +01:00
Add a get method that doesn't throw, but returns a default argument instead
This commit is contained in:
parent
a39b33b3e9
commit
fb94876de2
@ -141,6 +141,32 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T get(const std::string& name, const T& def) const
|
||||||
|
/// Returns the element with the given name and tries to convert
|
||||||
|
/// it to the template type. When the element is not found, or
|
||||||
|
/// has the wrong type, the def argument will be returned.
|
||||||
|
{
|
||||||
|
Element::Ptr element = get(name);
|
||||||
|
if ( element.isNull() )
|
||||||
|
{
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ElementTraits<T>::TypeId == element->type() )
|
||||||
|
{
|
||||||
|
ConcreteElement<T>* concrete = dynamic_cast<ConcreteElement<T>* >(element.get());
|
||||||
|
if ( concrete != NULL )
|
||||||
|
{
|
||||||
|
return concrete->value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Element::Ptr get(const std::string& name) const;
|
Element::Ptr get(const std::string& name) const;
|
||||||
/// Returns the element with the given name.
|
/// Returns the element with the given name.
|
||||||
/// An empty element will be returned when the element is not found.
|
/// An empty element will be returned when the element is not found.
|
||||||
|
Loading…
Reference in New Issue
Block a user