| The Gaudi Framework v32r1 (f65d50dc)

Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
PropertyHolder< BASE > Class Template Reference

Helper class to implement the IProperty interface. More...

`#include <GaudiKernel/PropertyHolder.h>`

Inheritance diagram for PropertyHolder< BASE >:
[legend]
Collaboration diagram for PropertyHolder< BASE >:
[legend]

## 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...

## Detailed Description

### template<class BASE>
class PropertyHolder< BASE >

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

class MyClass : public PropertyHolder<BaseClass> {
// ...
};

where `BaseClass` should inherit from IProperty and INamedInterface.

Author
  Paul Maley
  David Quarrie
  Marco Clemencic

Definition at line 71 of file PropertyHolder.h.

## Member Typedef Documentation

## ◆ Properties

template<class BASE>

typedef std::vector<Gaudi::Details::PropertyBase*> PropertyHolder< BASE >::Properties
| private

Definition at line 300 of file PropertyHolder.h.

## ◆ PropertyHolderImpl

template<class BASE>

using PropertyHolder< BASE >::PropertyHolderImpl = PropertyHolder<BASE>

Typedef used to refer to this class from derived classes, as in.

class MyClass : public PropertyHolder<BaseClass> {
using PropertyHolderImpl::declareProperty;
};

Definition at line 82 of file PropertyHolder.h.

## ◆ RemoteProperties

template<class BASE>

typedef std::vector<RemProperty> PropertyHolder< BASE >::RemoteProperties
| private

Definition at line 302 of file PropertyHolder.h.

## ◆ RemProperty

template<class BASE>

typedef std::pair<std::string, std::pair<IProperty*, std::string> > PropertyHolder< BASE >::RemProperty
| private

Definition at line 301 of file PropertyHolder.h.

## Constructor & Destructor Documentation

## ◆ PropertyHolder() [1/2]

template<class BASE>

PropertyHolder< BASE >::PropertyHolder | ( |  | ) |
| default

## ◆ PropertyHolder() [2/2]

template<class BASE>

PropertyHolder< BASE >::PropertyHolder | ( | const PropertyHolder< BASE > & |  | ) |
| delete

prevent copies

## Member Function Documentation

## ◆ assertUniqueName()

template<class BASE>

void PropertyHolder< BASE >::assertUniqueName | ( | const std::string & | name | ) | const
| inline private

Issue a runtime warning if the name is already present in the list of properties (see GAUDI-1023).

Definition at line 290 of file PropertyHolder.h.

290 {
291 if ( UNLIKELY( hasProperty( name ) ) ) {
292 auto msgSvc = Gaudi::svcLocator()->service<IMessageSvc>( "MessageSvc" );
293 if ( !msgSvc ) std::cerr << "error: cannot get MessageSvc!" << std::endl;
294 MsgStream log( msgSvc, this->name() );
295 log << MSG::WARNING << "duplicated property name '" << name << "', see https://its.cern.ch/jira/browse/GAUDI-1023"
296 << endmsg;
297 }
298 }
UNLIKELY
#define UNLIKELY(x)
Definition: Kernel.h:96
MsgStream
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
std::endl
T endl(T... args)
PropertyHolder::hasProperty
bool hasProperty(const std::string &name) const override
Return true if we have a property with the given name.
Definition: PropertyHolder.h:256
AvalancheSchedulerErrorTest.msgSvc
msgSvc
Definition: AvalancheSchedulerErrorTest.py:67
ISvcLocator::service
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:76
Gaudi::svcLocator
GAUDI_API ISvcLocator * svcLocator()
IMessageSvc
The IMessage is the interface implemented by the message service.
Definition: IMessageSvc.h:37
MSG::WARNING
Definition: IMessageSvc.h:15
std::cerr
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Gaudi.Configuration.log
log
Definition: Configuration.py:13

## ◆ declareProperty() [1/3]

template<class BASE>

Gaudi::Details::PropertyBase& PropertyHolder< BASE >::declareProperty | ( | Gaudi::Details::PropertyBase & | prop | ) |
| inline

Declare a property.

Record a PropertyBase instance to be managed by PropertyHolder.

Definition at line 95 of file PropertyHolder.h.

95 {
96 assertUniqueName( prop.name() );
97 m_properties.push_back( &prop );
98 return prop;
99 }
PropertyHolder::m_properties
Properties m_properties
Collection of all declared properties.
Definition: PropertyHolder.h:305
Gaudi::Details::PropertyBase::name
const std::string name() const
property name
Definition: Property.h:36
std::vector::push_back
T push_back(T... args)
PropertyHolder::assertUniqueName
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).
Definition: PropertyHolder.h:290

## ◆ declareProperty() [2/3]

template<class BASE>
template<typename TYPE , typename = std::enable_if_t<!Gaudi::Details::is_gaudi_property<TYPE>::value>>

Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty | ( | const std::string & | name,
|  | TYPE & | value,
|  | const std::string & | doc = `"none"`
| ) |  |
| inline

Helper to wrap a regular data member and use it as a regular property.

Deprecated:
  Prefer the signatures using a a fully initialized PropertyBase instance.

Definition at line 104 of file PropertyHolder.h.

105 {
106 m_todelete.push_back( std::make_unique<Gaudi::Details::PropertyType<TYPE&>>( name, value ) );
107 Gaudi::Details::PropertyBase* p = m_todelete.back().get();
108
109 p->setDocumentation( doc );
110 return &declareProperty( *p );
111 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
Gaudi::Details::PropertyBase::setDocumentation
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:86
PropertyHolder::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Details::PropertyBase &prop)
Declare a property.
Definition: PropertyHolder.h:95
std::vector::push_back
T push_back(T... args)
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
std::unique_ptr::get
T get(T... args)
std::vector::back
T back(T... args)
PropertyHolder::m_todelete
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
Definition: PropertyHolder.h:309

## ◆ declareProperty() [3/3]

template<class BASE>
template<class TYPE , class VERIFIER , class HANDLERS >

Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty | ( | const std::string & | name,
|  | Gaudi::Property< TYPE, VERIFIER, HANDLERS > & | prop,
|  | const std::string & | doc = `"none"`
| ) |  |
| inline

Declare a PropertyBase instance setting name and documentation.

Deprecated:
  Prefer the signatures using a fully initialized PropertyBase instance.

Definition at line 116 of file PropertyHolder.h.

118 {
119 Gaudi::Details::PropertyBase* p = &prop;
120 p->setName( name );
121
122 p->setDocumentation( doc );
123 return &declareProperty( *p );
124 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
Gaudi::Details::PropertyBase::setDocumentation
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:86
PropertyHolder::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Details::PropertyBase &prop)
Declare a property.
Definition: PropertyHolder.h:95
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
Gaudi::Details::PropertyBase::setName
void setName(std::string value)
set the new value for the property name
Definition: Property.h:84

## ◆ declareRemoteProperty()

template<class BASE>

Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareRemoteProperty | ( | const std::string & | name,
|  | IProperty * | rsvc,
|  | const std::string & | rname = `""`
| ) |  |
| inline

Declare a remote property.

Bind `name` to the property `rname` of `rsvc`.

Definition at line 128 of file PropertyHolder.h.

129 {
130 if ( !rsvc ) return nullptr;
131 const std::string& nam = rname.empty() ? name : rname;
132 Gaudi::Details::PropertyBase* p = property( nam, rsvc->getProperties() );
133 m_remoteProperties.emplace_back( name, std::make_pair( rsvc, nam ) );
134 return p;
135 }
std::string::empty
T empty(T... args)
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
std::string
STL class.
PropertyHolder::m_remoteProperties
RemoteProperties m_remoteProperties
Collection of all declared remote properties.
Definition: PropertyHolder.h:307
std::make_pair
T make_pair(T... args)
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
IProperty::getProperties
virtual const std::vector< Gaudi::Details::PropertyBase * > & getProperties() const =0
Get list of properties.
std::vector::emplace_back
T emplace_back(T... args)

## ◆ getProperties()

template<class BASE>

const std::vector<Gaudi::Details::PropertyBase*>& PropertyHolder< BASE >::getProperties | ( |  | ) | const
| inline override

get all properties

See also
  IProperty

Definition at line 251 of file PropertyHolder.h.

251 { return m_properties; }
PropertyHolder::m_properties
Properties m_properties
Collection of all declared properties.
Definition: PropertyHolder.h:305

## ◆ getProperty() [1/3]

template<class BASE>

StatusCode PropertyHolder< BASE >::getProperty | ( | Gaudi::Details::PropertyBase * | p | ) | const
| inline override

get the property

See also
  IProperty

Definition at line 219 of file PropertyHolder.h.

219 {
220 try {
221 const Gaudi::Details::PropertyBase* pp = property( p->name() );
222 if ( pp && pp->load( *p ) ) return StatusCode::SUCCESS;
223 } catch ( ... ) {}
224 return StatusCode::FAILURE;
225 }
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::Details::PropertyBase::name
const std::string name() const
property name
Definition: Property.h:36
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:495
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ getProperty() [2/3]

template<class BASE>

const Gaudi::Details::PropertyBase& PropertyHolder< BASE >::getProperty | ( | const std::string & | name | ) | const
| inline override

get the property by name

See also
  IProperty

Definition at line 230 of file PropertyHolder.h.

230 {
231 const Gaudi::Details::PropertyBase* p = property( name );
232 if ( !p ) throw std::out_of_range( "Property " + name + " not found." );
233 return *p;
234 }
std::out_of_range
STL class.
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32

## ◆ getProperty() [3/3]

template<class BASE>

StatusCode PropertyHolder< BASE >::getProperty | ( | const std::string & | n,
|  | std::string & | v
| ) |  | const
| inline override

convert the property to the string

See also
  IProperty

Definition at line 239 of file PropertyHolder.h.

239 {
240 // get the property
241 const Gaudi::Details::PropertyBase* p = property( n );
242 if ( !p ) return StatusCode::FAILURE;
243 // convert the value into the string
244 v = p->toString();
245 return StatusCode::SUCCESS;
246 }
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86
Gaudi::Details::PropertyBase::toString
virtual std::string toString() const =0
value -> string

## ◆ hasProperty()

template<class BASE>

bool PropertyHolder< BASE >::hasProperty | ( | const std::string & | name | ) | const
| inline override

Return true if we have a property with the given name.

See also
  IProperty

Definition at line 256 of file PropertyHolder.h.

256 {
257 return any_of( begin( m_properties ), end( m_properties ), [&name]( const Gaudi::Details::PropertyBase* prop ) {
258 return Gaudi::Utils::iequal( prop->name(), name );
259 } );
260 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
PropertyHolder::m_properties
Properties m_properties
Collection of all declared properties.
Definition: PropertyHolder.h:305
Gaudi::Details::PropertyBase::name
const std::string name() const
property name
Definition: Property.h:36
Gaudi::Utils::iequal
bool iequal(const std::string &v1, const std::string &v2)
Helper for case insensitive string comparison.
Definition: PropertyHolder.h:44
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
IOTest.end
def end
Definition: IOTest.py:112
std::any_of
T any_of(T... args)
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120

## ◆ operator=()

template<class BASE>

PropertyHolder& PropertyHolder< BASE >::operator= | ( | const PropertyHolder< BASE > & |  | ) |
| delete

## ◆ property() [1/2]

template<class BASE>

Gaudi::Details::PropertyBase* PropertyHolder< BASE >::property | ( | const std::string & | name | ) | const
| inline protected

Definition at line 264 of file PropertyHolder.h.

264 {
265 // local property ?
266 Gaudi::Details::PropertyBase* lp = property( name, m_properties );
267 if ( lp ) return lp;
268 // look for remote property
269 for ( const auto& it : m_remoteProperties ) {
270 if ( !Gaudi::Utils::iequal( it.first, name ) ) continue;
271 const IProperty* p = it.second.first;
272 if ( !p ) continue;
273 return property( it.second.second, p->getProperties() );
274 }
275 return nullptr; // RETURN
276 }
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
PropertyHolder::m_properties
Properties m_properties
Collection of all declared properties.
Definition: PropertyHolder.h:305
PropertyHolder::m_remoteProperties
RemoteProperties m_remoteProperties
Collection of all declared remote properties.
Definition: PropertyHolder.h:307
Gaudi::Utils::iequal
bool iequal(const std::string &v1, const std::string &v2)
Helper for case insensitive string comparison.
Definition: PropertyHolder.h:44
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
IProperty::getProperties
virtual const std::vector< Gaudi::Details::PropertyBase * > & getProperties() const =0
Get list of properties.
IProperty
The IProperty is the basic interface for all components which have properties that can be set or get.
Definition: IProperty.h:20

## ◆ property() [2/2]

template<class BASE>

Gaudi::Details::PropertyBase* PropertyHolder< BASE >::property | ( | const std::string & | name,
|  | const std::vector< Gaudi::Details::PropertyBase * > & | props
| ) |  | const
| inline private

get the property by name form the proposed list

Definition at line 280 of file PropertyHolder.h.

281 {
282 auto it = std::find_if( props.begin(), props.end(), [&name]( Gaudi::Details::PropertyBase* p ) {
283 return p && Gaudi::Utils::iequal( p->name(), name );
284 } );
285 return ( it != props.end() ) ? *it : nullptr; // RETURN
286 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
std::vector::end
T end(T... args)
Gaudi::Utils::iequal
bool iequal(const std::string &v1, const std::string &v2)
Helper for case insensitive string comparison.
Definition: PropertyHolder.h:44
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
std::find_if
T find_if(T... args)
std::vector::begin
T begin(T... args)

## ◆ setProperty() [1/4]

template<class BASE>

StatusCode PropertyHolder< BASE >::setProperty | ( | const Gaudi::Details::PropertyBase & | p | ) |
| inline override

set the property form another property

See also
  IProperty

Definition at line 145 of file PropertyHolder.h.

145 {
146 Gaudi::Details::PropertyBase* pp = property( p.name() );
147 try {
148 if ( pp && pp->assign( p ) ) return StatusCode::SUCCESS;
149 } catch ( ... ) {}
150 return StatusCode::FAILURE;
151 }
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::Details::PropertyBase::name
const std::string name() const
property name
Definition: Property.h:36
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:495
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ setProperty() [2/4]

template<class BASE>

StatusCode PropertyHolder< BASE >::setProperty | ( | const std::string & | s | ) |
| inline override

set the property from the formatted string

See also
  IProperty

Definition at line 156 of file PropertyHolder.h.

156 {
157 std::string name;
158 std::string value;
159 StatusCode sc = Gaudi::Parsers::parse( name, value, s );
160 if ( sc.isFailure() ) return sc;
161 return setProperty( name, value );
162 }
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41
PropertyHolder::setProperty
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
Definition: PropertyHolder.h:145
Gaudi::Parsers::parse
StatusCode parse(GaudiUtils::HashMap< K, V > &result, const std::string &input)
Basic parser for the types of HashMap used in DODBasicMapper.
Definition: DODBasicMapper.cpp:11
std::string
STL class.
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
gaudirun.s
string s
Definition: gaudirun.py:316
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130

## ◆ setProperty() [3/4]

template<class BASE>

StatusCode PropertyHolder< BASE >::setProperty | ( | const std::string & | n,
|  | const std::string & | v
| ) |  |
| inline override

set the property from name and the value

See also
  IProperty

Definition at line 167 of file PropertyHolder.h.

167 {
168 Gaudi::Details::PropertyBase* p = property( n );
169 return ( p && p->fromString( v ) ) ? StatusCode::SUCCESS : StatusCode::FAILURE;
170 }
PropertyHolder::property
Gaudi::Details::PropertyBase * property(const std::string &name) const
Definition: PropertyHolder.h:264
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::Details::PropertyBase::fromString
virtual StatusCode fromString(const std::string &value)=0
string -> value
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:86

## ◆ setProperty() [4/4]

template<class BASE>
template<class TYPE >

StatusCode PropertyHolder< BASE >::setProperty | ( | const std::string & | name,
|  | const TYPE & | value
| ) |  |
| inline

set the property form the value

std::vector<double> data = ... ;
setProperty( "Data" , data ) ;
std::map<std::string,double> cuts = ... ;
setProperty( "Cuts" , cuts ) ;
std::map<std::string,std::string> dict = ... ;
setProperty( "Dictionary" , dict ) ;

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

setProperty ( "OutputLevel" , "1" ) ;
setProperty ( "Enable" , "True" ) ;
setProperty ( "ErrorMax" , "10" ) ;

For simple cases it is more or less ok, but for complicated properties it is just ugly..

Parameters

  name | name of the property
  value | value of the property

See also
  Gaudi::Utils::setProperty

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2007-05-13

Definition at line 212 of file PropertyHolder.h.

212 {
213 return Gaudi::Utils::setProperty( this, name, value );
214 }
Gaudi::Utils::setProperty
StatusCode setProperty(IProperty *component, const std::string &name, const TYPE &value, const std::string &doc)
simple function to set the property of the given object from the value
Definition: Property.h:1179
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:41

## Member Data Documentation

## ◆ m_properties

template<class BASE>

Properties PropertyHolder< BASE >::m_properties
| private

Collection of all declared properties.

Definition at line 305 of file PropertyHolder.h.

## ◆ m_remoteProperties

template<class BASE>

RemoteProperties PropertyHolder< BASE >::m_remoteProperties
| private

Collection of all declared remote properties.

Definition at line 307 of file PropertyHolder.h.

## ◆ m_todelete

template<class BASE>

std::vector<std::unique_ptr<Gaudi::Details::PropertyBase> > PropertyHolder< BASE >::m_todelete
| private

Properties owned by PropertyHolder, to be deleted.

Definition at line 309 of file PropertyHolder.h.

The documentation for this class was generated from the following file:

- GaudiKernel/GaudiKernel/PropertyHolder.h