The Gaudi Framework
v30r3 (a5ef0a68)
|
Helper class to implement the IProperty interface. More...
#include <GaudiKernel/PropertyHolder.h>
Public Types | |
using | PropertyHolderImpl = PropertyHolder< BASE > |
Typedef used to refer to this class from derived classes, as in. More... | |
Public Member Functions | |
PropertyHolder ()=default | |
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop) |
Declare a property. More... | |
template<typename TYPE , typename = std::enable_if_t<!Gaudi::Details::is_gaudi_property<TYPE>::value>> | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") |
Helper to wrap a regular data member and use it as a regular property. More... | |
template<class TYPE , class VERIFIER , class HANDLERS > | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none") |
Declare a PropertyBase instance setting name and documentation. More... | |
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") |
Declare a remote property. More... | |
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) override |
set the property form another property More... | |
StatusCode | setProperty (const std::string &s) override |
set the property from the formatted string More... | |
StatusCode | setProperty (const std::string &n, const std::string &v) override |
set the property from name and the value More... | |
template<class TYPE > | |
StatusCode | setProperty (const std::string &name, const TYPE &value) |
set the property form the value More... | |
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override |
get the property More... | |
const Gaudi::Details::PropertyBase & | getProperty (const std::string &name) const override |
get the property by name More... | |
StatusCode | getProperty (const std::string &n, std::string &v) const override |
convert the property to the string More... | |
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override |
get all properties More... | |
bool | hasProperty (const std::string &name) const override |
Return true if we have a property with the given name. More... | |
PropertyHolder (const PropertyHolder &)=delete | |
PropertyHolder & | operator= (const PropertyHolder &)=delete |
Protected Member Functions | |
Gaudi::Details::PropertyBase * | property (const std::string &name) const |
Private Types | |
typedef std::vector< Gaudi::Details::PropertyBase * > | Properties |
typedef std::pair< std::string, std::pair< IProperty *, std::string > > | RemProperty |
typedef std::vector< RemProperty > | RemoteProperties |
Private Member Functions | |
Gaudi::Details::PropertyBase * | property (const std::string &name, const std::vector< Gaudi::Details::PropertyBase * > &props) const |
get the property by name form the proposed list More... | |
void | assertUniqueName (const std::string &name) const |
Issue a runtime warning if the name is already present in the list of properties (see GAUDI-1023). More... | |
Private Attributes | |
Properties | m_properties |
Collection of all declared properties. More... | |
RemoteProperties | m_remoteProperties |
Collection of all declared remote properties. More... | |
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > | m_todelete |
Properties owned by PropertyHolder, to be deleted. More... | |
Helper class to implement the IProperty interface.
PropertyHolder is used by components base classes (Algorithm, Service, etc.) to provide a default implementation the IProperty interface.
When needing to implement the IProperty interface in a class, it is enough to wrap the base of the class with PropertyHolder, as in
where BaseClass
should inherit from IProperty and INamedInterface.
Definition at line 77 of file PropertyHolder.h.
|
private |
Definition at line 323 of file PropertyHolder.h.
using PropertyHolder< BASE >::PropertyHolderImpl = PropertyHolder<BASE> |
Typedef used to refer to this class from derived classes, as in.
Definition at line 89 of file PropertyHolder.h.
|
private |
Definition at line 325 of file PropertyHolder.h.
|
private |
Definition at line 324 of file PropertyHolder.h.
|
default |
|
delete |
prevent copies
|
inlineprivate |
Issue a runtime warning if the name is already present in the list of properties (see GAUDI-1023).
Definition at line 312 of file PropertyHolder.h.
|
inline |
Declare a property.
Record a PropertyBase instance to be managed by PropertyHolder.
Definition at line 102 of file PropertyHolder.h.
|
inline |
Helper to wrap a regular data member and use it as a regular property.
Definition at line 112 of file PropertyHolder.h.
|
inline |
Declare a PropertyBase instance setting name and documentation.
Definition at line 124 of file PropertyHolder.h.
|
inline |
Declare a remote property.
Bind name
to the property rname
of rsvc
.
Definition at line 137 of file PropertyHolder.h.
|
inlineoverride |
get all properties
Definition at line 270 of file PropertyHolder.h.
|
inlineoverride |
get the property
Definition at line 234 of file PropertyHolder.h.
|
inlineoverride |
get the property by name
Definition at line 247 of file PropertyHolder.h.
|
inlineoverride |
convert the property to the string
Definition at line 257 of file PropertyHolder.h.
|
inlineoverride |
Return true if we have a property with the given name.
Definition at line 275 of file PropertyHolder.h.
|
delete |
|
inlineprotected |
Definition at line 284 of file PropertyHolder.h.
|
inlineprivate |
get the property by name form the proposed list
Definition at line 301 of file PropertyHolder.h.
|
inlineoverride |
set the property form another property
Definition at line 155 of file PropertyHolder.h.
|
inlineoverride |
set the property from the formatted string
Definition at line 168 of file PropertyHolder.h.
|
inlineoverride |
set the property from name and the value
Definition at line 180 of file PropertyHolder.h.
|
inline |
set the property form the value
Note: the interface IProperty allows setting of the properties either directly from other properties or from strings only
This is very convenient in resetting of the default properties in the derived classes. E.g. without this method one needs to convert everything into strings to use IProperty::setProperty
For simple cases it is more or less ok, but for complicated properties it is just ugly..
name | name of the property |
value | value of the property |
Definition at line 226 of file PropertyHolder.h.
|
private |
Collection of all declared properties.
Definition at line 328 of file PropertyHolder.h.
|
private |
Collection of all declared remote properties.
Definition at line 330 of file PropertyHolder.h.
|
private |
Properties owned by PropertyHolder, to be deleted.
Definition at line 332 of file PropertyHolder.h.