The Gaudi Framework
v29r0 (ff2e7097)
|
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 | |
~PropertyHolder () override=default | |
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop) |
Declare a property. More... | |
template<class TYPE , typename = typename std::enable_if<!std::is_base_of<GaudiHandleBase, TYPE>::value && !std::is_base_of<GaudiHandleArrayBase, TYPE>::value && !std::is_base_of<DataObjectHandleBase, TYPE>::value>::type> | |
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 , typename = typename std::enable_if<!std::is_base_of<GaudiHandleBase, TYPE>::value && !std::is_base_of<GaudiHandleArrayBase, TYPE>::value && !std::is_base_of<DataObjectHandleBase, TYPE>::value>::type> | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const |
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 |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleBase &ref, const std::string &doc="none") |
Specializations for various GaudiHandles. More... | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, GaudiHandleArrayBase &ref, const std::string &doc="none") |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, DataObjectHandleBase &ref, const std::string &doc="none") |
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 73 of file PropertyHolder.h.
|
private |
Definition at line 390 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 85 of file PropertyHolder.h.
|
private |
Definition at line 392 of file PropertyHolder.h.
|
private |
Definition at line 391 of file PropertyHolder.h.
|
default |
|
overridedefault |
|
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 377 of file PropertyHolder.h.
|
inline |
Declare a property.
Record a PropertyBase instance to be managed by PropertyHolder.
Definition at line 99 of file PropertyHolder.h.
|
inline |
Helper to wrap a regular data member and use it as a regular property.
Definition at line 111 of file PropertyHolder.h.
|
inline |
Definition at line 128 of file PropertyHolder.h.
|
inline |
Declare a PropertyBase instance setting name and documentation.
Definition at line 136 of file PropertyHolder.h.
|
inline |
Specializations for various GaudiHandles.
Definition at line 164 of file PropertyHolder.h.
|
inline |
Definition at line 176 of file PropertyHolder.h.
|
inline |
Definition at line 188 of file PropertyHolder.h.
|
inline |
Declare a remote property.
Bind name
to the property rname
of rsvc
.
Definition at line 150 of file PropertyHolder.h.
|
inlineoverride |
get all properties
Definition at line 329 of file PropertyHolder.h.
|
inlineoverride |
get the property
Definition at line 291 of file PropertyHolder.h.
|
inlineoverride |
get the property by name
Definition at line 304 of file PropertyHolder.h.
|
inlineoverride |
convert the property to the string
Definition at line 314 of file PropertyHolder.h.
|
inlineoverride |
Return true if we have a property with the given name.
Definition at line 334 of file PropertyHolder.h.
|
delete |
|
inlineprotected |
Definition at line 343 of file PropertyHolder.h.
|
inlineprivate |
get the property by name form the proposed list
Definition at line 366 of file PropertyHolder.h.
|
inlineoverride |
set the property form another property
Definition at line 208 of file PropertyHolder.h.
|
inlineoverride |
set the property from the formatted string
Definition at line 223 of file PropertyHolder.h.
|
inlineoverride |
set the property from name and the value
Definition at line 237 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 283 of file PropertyHolder.h.
|
private |
Collection of all declared properties.
Definition at line 395 of file PropertyHolder.h.
|
private |
Collection of all declared remote properties.
Definition at line 397 of file PropertyHolder.h.
|
private |
Properties owned by PropertyHolder, to be deleted.
Definition at line 399 of file PropertyHolder.h.