PropertyHolder< BASE > Class Template Reference

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

#include <GaudiKernel/PropertyHolder.h>

Inheritance diagram for PropertyHolder< BASE >:
Collaboration diagram for PropertyHolder< BASE >:

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::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
template<class TYPE >
Gaudi::Details::PropertyBasedeclareProperty (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 >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, TYPE &value, const std::string &doc="none") const
 
template<class TYPE , class VERIFIER , class HANDLERS >
Gaudi::Details::PropertyBasedeclareProperty (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::PropertyBasedeclareRemoteProperty (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::PropertyBasegetProperty (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
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
template<class TYPE >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandle< TYPE > &ref, const std::string &doc="none")
 Specializations for various GaudiHandles. More...
 
template<class TYPE >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ServiceHandle< TYPE > &ref, const std::string &doc="none")
 
template<class TYPE >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandleArray< TYPE > &ref, const std::string &doc="none")
 
template<class TYPE >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ServiceHandleArray< TYPE > &ref, const std::string &doc="none")
 
template<class TYPE >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, DataObjectHandle< TYPE > &ref, const std::string &doc="none")
 

Protected Member Functions

Gaudi::Details::PropertyBaseproperty (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< RemPropertyRemoteProperties
 

Private Member Functions

Gaudi::Details::PropertyBaseproperty (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 73 of file PropertyHolder.h.

Member Typedef Documentation

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

Definition at line 415 of file PropertyHolder.h.

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> {
};

Definition at line 85 of file PropertyHolder.h.

template<class BASE>
typedef std::vector<RemProperty> PropertyHolder< BASE >::RemoteProperties
private

Definition at line 417 of file PropertyHolder.h.

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

Definition at line 416 of file PropertyHolder.h.

Constructor & Destructor Documentation

template<class BASE>
PropertyHolder< BASE >::PropertyHolder ( )
default
template<class BASE>
PropertyHolder< BASE >::~PropertyHolder ( )
overridedefault
template<class BASE>
PropertyHolder< BASE >::PropertyHolder ( const PropertyHolder< BASE > &  )
delete

prevent copies

Member Function Documentation

template<class BASE>
void PropertyHolder< BASE >::assertUniqueName ( const std::string name) const
inlineprivate

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

Definition at line 402 of file PropertyHolder.h.

403  {
404  if ( UNLIKELY( hasProperty( name ) ) ) {
405  auto msgSvc = Gaudi::svcLocator()->service<IMessageSvc>( "MessageSvc" );
406  if ( !msgSvc ) {
407  std::cerr << "error: cannot get MessageSvc!" << std::endl;
408  }
409  MsgStream log( msgSvc, this->name() );
410  log << MSG::WARNING << "duplicated property name '" << name << "', see https://its.cern.ch/jira/browse/GAUDI-1023"
411  << endmsg;
412  }
413  }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
bool hasProperty(const std::string &name) const override
Return true if we have a property with the given name.
T endl(T...args)
#define UNLIKELY(x)
Definition: Kernel.h:126
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:78
GAUDI_API ISvcLocator * svcLocator()
The IMessage is the interface implemented by the message service.
Definition: IMessageSvc.h:57
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
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 99 of file PropertyHolder.h.

100  {
101  assertUniqueName( prop.name() );
102  m_properties.push_back( &prop );
103  return prop;
104  }
const std::string name() const
property name
Definition: Property.h:40
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
template<class BASE>
template<class TYPE >
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 109 of file PropertyHolder.h.

110  {
111  assertUniqueName( name );
112  m_todelete.emplace_back( new Gaudi::Property<TYPE&>( name, value ) );
114  p->setDocumentation( doc );
115  m_properties.push_back( p );
116  return p;
117  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Implementation of property with value of concrete type.
Definition: Property.h:313
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T get(T...args)
T back(T...args)
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
T emplace_back(T...args)
template<class BASE>
template<class TYPE >
Gaudi:: Details::PropertyBase* PropertyHolder< BASE >::declareProperty ( const std::string name,
TYPE &  value,
const std::string doc = "none" 
) const
inline
Deprecated:
Kept for backward compatibility, use the non-const version instead, will be removed in v28r1.

Definition at line 124 of file PropertyHolder.h.

125  {
126  return const_cast<PropertyHolder*>( this )->declareProperty<TYPE>( name, value, doc );
127  }
Helper class to implement the IProperty interface.
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 132 of file PropertyHolder.h.

135  {
136  assertUniqueName( name );
137  Gaudi::Details::PropertyBase* p = &prop;
138  p->setName( name );
139  p->setDocumentation( doc );
140  m_properties.push_back( p );
141  return p;
142  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
void setName(std::string value)
set the new value for the property name
Definition: Property.h:90
template<class BASE>
template<class TYPE >
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty ( const std::string name,
ToolHandle< TYPE > &  ref,
const std::string doc = "none" 
)
inline

Specializations for various GaudiHandles.

Definition at line 161 of file PropertyHolder.h.

163  {
164  assertUniqueName( name );
165  m_todelete.emplace_back( new GaudiHandleProperty( name, ref ) );
167 
168  p->setDocumentation( doc );
169  m_properties.push_back( p );
170 
171  return p;
172  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T get(T...args)
T back(T...args)
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
T emplace_back(T...args)
template<class BASE>
template<class TYPE >
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty ( const std::string name,
ServiceHandle< TYPE > &  ref,
const std::string doc = "none" 
)
inline

Definition at line 174 of file PropertyHolder.h.

176  {
177  assertUniqueName( name );
178  m_todelete.emplace_back( new GaudiHandleProperty( name, ref ) );
180 
181  p->setDocumentation( doc );
182  m_properties.push_back( p );
183 
184  return p;
185  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T get(T...args)
T back(T...args)
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
T emplace_back(T...args)
template<class BASE>
template<class TYPE >
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty ( const std::string name,
ToolHandleArray< TYPE > &  ref,
const std::string doc = "none" 
)
inline

Definition at line 187 of file PropertyHolder.h.

189  {
190  assertUniqueName( name );
193 
194  p->setDocumentation( doc );
195  m_properties.push_back( p );
196 
197  return p;
198  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T get(T...args)
T back(T...args)
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
T emplace_back(T...args)
template<class BASE>
template<class TYPE >
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty ( const std::string name,
ServiceHandleArray< TYPE > &  ref,
const std::string doc = "none" 
)
inline

Definition at line 200 of file PropertyHolder.h.

202  {
203  assertUniqueName( name );
206 
207  p->setDocumentation( doc );
208  m_properties.push_back( p );
209 
210  return p;
211  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Properties m_properties
Collection of all declared properties.
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)...
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T get(T...args)
T back(T...args)
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
T emplace_back(T...args)
template<class BASE>
template<class TYPE >
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::declareProperty ( const std::string name,
DataObjectHandle< TYPE > &  ref,
const std::string doc = "none" 
)
inline

Definition at line 213 of file PropertyHolder.h.

215  {
216  assertUniqueName( name );
219 
220  p->setDocumentation( doc );
221  m_properties.push_back( p );
222 
223  return p;
224  }
void setDocumentation(std::string value)
set the documentation string
Definition: Property.h:92
Properties m_properties
Collection of all declared properties.
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)...
DataObjectHandleProperty.h GaudiKernel/DataObjectHandleProperty.h.
T push_back(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T get(T...args)
T back(T...args)
std::vector< std::unique_ptr< Gaudi::Details::PropertyBase > > m_todelete
Properties owned by PropertyHolder, to be deleted.
T emplace_back(T...args)
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 146 of file PropertyHolder.h.

148  {
149  if ( !rsvc ) {
150  return nullptr;
151  }
152  const std::string& nam = rname.empty() ? name : rname;
154  m_remoteProperties.emplace_back( name, std::make_pair( rsvc, nam ) );
155  return p;
156  }
T empty(T...args)
Gaudi::Details::PropertyBase * property(const std::string &name) const
STL class.
RemoteProperties m_remoteProperties
Collection of all declared remote properties.
T make_pair(T...args)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
virtual const std::vector< Gaudi::Details::PropertyBase * > & getProperties() const =0
Get list of properties.
T emplace_back(T...args)
template<class BASE>
const std::vector<Gaudi::Details::PropertyBase*>& PropertyHolder< BASE >::getProperties ( ) const
inlineoverride

get all properties

See also
IProperty

Definition at line 354 of file PropertyHolder.h.

354 { return m_properties; }
Properties m_properties
Collection of all declared properties.
template<class BASE>
StatusCode PropertyHolder< BASE >::getProperty ( Gaudi::Details::PropertyBase p) const
inlineoverride

get the property

See also
IProperty

Definition at line 316 of file PropertyHolder.h.

317  {
318  try {
319  const Gaudi::Details::PropertyBase* pp = property( p->name() );
320  if ( pp && pp->load( *p ) ) return StatusCode::SUCCESS;
321  } catch ( ... ) {
322  }
323  return StatusCode::FAILURE;
324  }
Gaudi::Details::PropertyBase * property(const std::string &name) const
virtual bool load(PropertyBase &dest) const =0
export the property value to the destination
const std::string name() const
property name
Definition: Property.h:40
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
template<class BASE>
const Gaudi::Details::PropertyBase& PropertyHolder< BASE >::getProperty ( const std::string name) const
inlineoverride

get the property by name

See also
IProperty

Definition at line 329 of file PropertyHolder.h.

330  {
331  const Gaudi::Details::PropertyBase* p = property( name );
332  if ( !p ) throw std::out_of_range( "Property " + name + " not found." );
333  return *p;
334  }
Gaudi::Details::PropertyBase * property(const std::string &name) const
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
template<class BASE>
StatusCode PropertyHolder< BASE >::getProperty ( const std::string n,
std::string v 
) const
inlineoverride

convert the property to the string

See also
IProperty

Definition at line 339 of file PropertyHolder.h.

340  {
341  // get the property
342  const Gaudi::Details::PropertyBase* p = property( n );
343  if ( !p ) {
344  return StatusCode::FAILURE;
345  }
346  // convert the value into the string
347  v = p->toString();
348  return StatusCode::SUCCESS;
349  }
Gaudi::Details::PropertyBase * property(const std::string &name) const
virtual std::string toString() const =0
value -> string
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
template<class BASE>
bool PropertyHolder< BASE >::hasProperty ( const std::string name) const
inlineoverride

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

See also
IProperty

Definition at line 359 of file PropertyHolder.h.

360  {
361  return any_of( begin( m_properties ), end( m_properties ), [&name]( const Gaudi::Details::PropertyBase* prop ) {
362  return Gaudi::Utils::iequal( prop->name(), name );
363  } );
364  }
const std::string name() const
property name
Definition: Property.h:40
Properties m_properties
Collection of all declared properties.
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:47
bool iequal(const std::string &v1, const std::string &v2)
Helper for case insensitive string comparison.
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:49
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T any_of(T...args)
template<class BASE>
PropertyHolder& PropertyHolder< BASE >::operator= ( const PropertyHolder< BASE > &  )
delete
template<class BASE>
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::property ( const std::string name) const
inlineprotected

Definition at line 368 of file PropertyHolder.h.

369  {
370  // local property ?
372  if ( lp ) {
373  return lp;
374  }
375  // look for remote property
376  for ( const auto& it : m_remoteProperties ) {
377  if ( !Gaudi::Utils::iequal( it.first, name ) ) {
378  continue;
379  }
380  const IProperty* p = it.second.first;
381  if ( !p ) {
382  continue;
383  }
384  return property( it.second.second, p->getProperties() );
385  }
386  return nullptr; // RETURN
387  }
Gaudi::Details::PropertyBase * property(const std::string &name) const
Properties m_properties
Collection of all declared properties.
RemoteProperties m_remoteProperties
Collection of all declared remote properties.
bool iequal(const std::string &v1, const std::string &v2)
Helper for case insensitive string comparison.
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
virtual const std::vector< Gaudi::Details::PropertyBase * > & getProperties() const =0
Get list of properties.
The IProperty is the basic interface for all components which have properties that can be set or get...
Definition: IProperty.h:20
template<class BASE>
Gaudi::Details::PropertyBase* PropertyHolder< BASE >::property ( const std::string name,
const std::vector< Gaudi::Details::PropertyBase * > &  props 
) const
inlineprivate

get the property by name form the proposed list

Definition at line 391 of file PropertyHolder.h.

393  {
394  auto it = std::find_if( props.begin(), props.end(), [&name]( Gaudi::Details::PropertyBase* p ) {
395  return p && Gaudi::Utils::iequal( p->name(), name );
396  } );
397  return ( it != props.end() ) ? *it : nullptr; // RETURN
398  }
T end(T...args)
bool iequal(const std::string &v1, const std::string &v2)
Helper for case insensitive string comparison.
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
T find_if(T...args)
T begin(T...args)
template<class BASE>
StatusCode PropertyHolder< BASE >::setProperty ( const Gaudi::Details::PropertyBase p)
inlineoverride

set the property form another property

See also
IProperty

Definition at line 233 of file PropertyHolder.h.

234  {
236  try {
237  if ( pp && pp->assign( p ) ) {
238  return StatusCode::SUCCESS;
239  }
240  } catch ( ... ) {
241  }
242  return StatusCode::FAILURE;
243  }
Gaudi::Details::PropertyBase * property(const std::string &name) const
virtual bool assign(const PropertyBase &source)=0
import the property value form the source
const std::string name() const
property name
Definition: Property.h:40
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
template<class BASE>
StatusCode PropertyHolder< BASE >::setProperty ( const std::string s)
inlineoverride

set the property from the formatted string

See also
IProperty

Definition at line 248 of file PropertyHolder.h.

249  {
251  std::string value;
252  StatusCode sc = Gaudi::Parsers::parse( name, value, s );
253  if ( sc.isFailure() ) {
254  return sc;
255  }
256  return setProperty( name, value );
257  }
StatusCode setProperty(const Gaudi::Details::PropertyBase &p) override
set the property form another property
StatusCode parse(GaudiUtils::HashMap< K, V > &result, const std::string &input)
Basic parser for the types of HashMap used in DODBasicMapper.
bool isFailure() const
Test for a status code of FAILURE.
Definition: StatusCode.h:84
STL class.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
template<class BASE>
StatusCode PropertyHolder< BASE >::setProperty ( const std::string n,
const std::string v 
)
inlineoverride

set the property from name and the value

See also
IProperty

Definition at line 262 of file PropertyHolder.h.

263  {
265  return ( p && p->fromString( v ) ) ? StatusCode::SUCCESS : StatusCode::FAILURE;
266  }
Gaudi::Details::PropertyBase * property(const std::string &name) const
virtual StatusCode fromString(const std::string &value)=0
string -> value
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
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 ) ;
setProperty( "Cuts" , cuts ) ;
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
namename of the property
valuevalue 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 308 of file PropertyHolder.h.

309  {
310  return Gaudi::Utils::setProperty( this, name, value );
311  }
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:1123

Member Data Documentation

template<class BASE>
Properties PropertyHolder< BASE >::m_properties
private

Collection of all declared properties.

Definition at line 420 of file PropertyHolder.h.

template<class BASE>
RemoteProperties PropertyHolder< BASE >::m_remoteProperties
private

Collection of all declared remote properties.

Definition at line 422 of file PropertyHolder.h.

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 424 of file PropertyHolder.h.


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