The Gaudi Framework  master (cc9a61f4)
Loading...
Searching...
No Matches
Gaudi::Property< TYPE, VERIFIER, HANDLERS > Class Template Reference

Implementation of property with value of concrete type. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Property.h>

Inheritance diagram for Gaudi::Property< TYPE, VERIFIER, HANDLERS >:
Collaboration diagram for Gaudi::Property< TYPE, VERIFIER, HANDLERS >:

Public Types

using StorageType = TYPE
 Hosted type.
using ValueType = typename std::remove_reference<StorageType>::type
using VerifierType = VERIFIER
using HandlersType = HANDLERS

Public Member Functions

template<typename T = StorageType>
 Property (std::string name, T &&value, std::string doc="", std::string semantics="")
 the constructor with property name, value and documentation.
template<std::derived_from< IProperty > OWNER, typename T = ValueType>
 Property (OWNER *owner, std::string name)
 Autodeclaring constructor with property name, value and documentation.
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
 Property (OWNER *owner, std::string name, T &&value, std::string doc="", std::string semantics="")
 Autodeclaring constructor with property name, value and documentation.
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
 Property (OWNER *owner, std::string name, T &&value, std::function< void(PropertyBase &)> handler, std::string doc="", std::string semantics="")
 Autodeclaring constructor with property name, value, updateHandler and documentation.
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
 Property (OWNER *owner, std::string name, T &&value, void(OWNER::*handler)(PropertyBase &), std::string doc="", std::string semantics="")
 Autodeclaring constructor with property name, value, pointer to member function updateHandler and documentation.
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
 Property (OWNER *owner, std::string name, T &&value, void(OWNER::*handler)(), std::string doc="", std::string semantics="")
 Autodeclaring constructor with property name, value, pointer to member function updateHandler and documentation.
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
 Property (OWNER *owner, std::string name, T &&value, std::function< void(PropertyBase &)> handler, Details::Property::ImmediatelyInvokeHandler invoke, std::string doc="", std::string semantics="")
 Autodeclaring constructor with property name, value, updateHandler and documentation.
template<typename T>
 Property (T &&v)
 Construct an anonymous property from a value.
template<typename T = StorageType>
 Property ()
 Construct an anonymous property with default constructed value.
Details::PropertyBasedeclareReadHandler (std::function< void(Details::PropertyBase &)> fun) override
 set new callback for reading
Details::PropertyBasedeclareUpdateHandler (std::function< void(Details::PropertyBase &)> fun) override
 set new callback for update
const std::function< void(Details::PropertyBase &)> readCallBack () const override
 get a reference to the readCallBack
const std::function< void(Details::PropertyBase &)> updateCallBack () const override
 get a reference to the updateCallBack
bool useUpdateHandler () override
 manual trigger for callback for update
 operator const ValueType & () const
 Automatic conversion to value (const reference).
 operator std::string_view () const
std::ostream & fillStream (std::ostream &stream) const override
 Properly quote string properties when printing them.
template<typename T>
requires requires { { m_value == other } -> std::convertible_to<bool>; }
bool operator== (const T &other) const
 equality comparison
template<typename T>
requires requires { { m_value != other } -> std::convertible_to<bool>; }
bool operator!= (const T &other) const
 inequality comparison
template<typename T>
requires requires { { m_value < other } -> std::convertible_to<bool>; }
bool operator< (const T &other) const
 "less" comparison
template<typename T>
requires requires { m_value + other; }
auto operator+ (const T &other) const
 allow addition if possible between the property and the other types
template<typename T>
Propertyoperator= (T &&v)
 Assignment from value.
template<typename T = TYPE>
Propertyoperator= (std::initializer_list< typename T::value_type > ilist)
const VerifierTypeverifier () const
 Accessor to verifier.
VerifierTypeverifier ()
 Accessor to verifier.
template<typename... Args>
constexpr decltype(auto) operator() (Args &&... args) const noexcept(std::is_nothrow_invocable_v< ValueType &, Args... >)
bool assign (const Details::PropertyBase &source) override
 get the value from another property
bool load (Details::PropertyBase &dest) const override
 set value to another property
StatusCode fromString (const std::string &source) override
 string -> value
std::string toString () const override
 value -> string
void toStream (std::ostream &out) const override
 value -> stream
virtual PropertyBasedeclareReadHandler (std::function< void(PropertyBase &)> fun)=0
 set new callback for reading
template<class HT>
PropertyBasedeclareReadHandler (void(HT::*MF)(PropertyBase &), HT *instance)
virtual PropertyBasedeclareUpdateHandler (std::function< void(PropertyBase &)> fun)=0
 set new callback for update
template<class HT>
PropertyBasedeclareUpdateHandler (void(HT::*MF)(PropertyBase &), HT *instance)
const ValueTypevalue () const
ValueTypevalue ()
bool setValue (const ValueType &v)
bool set (const ValueType &v)
Details::PropertyBaseclone () const override
 clones the current property
Helpers for easy use of string and vector properties.

They are instantiated only if they are implemented in the wrapped class.

auto size () const
auto length () const
auto empty () const
void clear ()
auto begin () const
auto end () const
auto begin ()
auto end ()
template<typename ARG>
requires requires { value()[arg]; }
decltype(auto) operator[] (const ARG &arg) const
template<typename ARG>
requires requires { value()[arg]; }
decltype(auto) operator[] (const ARG &arg)
template<typename K>
requires requires { value().find( key ); }
decltype(auto) find (const K &key) const
template<typename K>
requires requires { value().find( key ); }
decltype(auto) find (const K &key)
template<typename T>
requires requires { value().erase( arg ); }
decltype(auto) erase (T arg)
Propertyoperator++ ()
auto operator++ (int)
Propertyoperator-- ()
auto operator-- (int)
template<typename T>
requires requires { m_value += other; }
Propertyoperator+= (const T &other)
template<typename T>
requires requires { m_value -= other; }
Propertyoperator-= (const T &other)
decltype(auto) key () const
 Helpers for DataHandles and derived classes.
decltype(auto) objKey () const
decltype(auto) fullKey () const
decltype(auto) initialize ()
decltype(auto) makeHandles () const
template<typename ARG>
requires requires { value().makeHandles( arg ); }
decltype(auto) makeHandles (const ARG &arg) const
Public Member Functions inherited from Gaudi::Details::PropertyBase
const std::string name () const
 property name
std::string documentation () const
 property documentation
std::string semantics () const
 property semantics
const std::type_info * type_info () const
 property type-info
std::string type () const
 property type
template<class HT>
PropertyBasedeclareReadHandler (void(HT::*MF)(PropertyBase &), HT *instance)
template<class HT>
PropertyBasedeclareUpdateHandler (void(HT::*MF)(PropertyBase &), HT *instance)
virtual ~PropertyBase ()
 virtual destructor
void setName (std::string value)
 set the new value for the property name
void setDocumentation (std::string value)
 set the documentation string
void setSemantics (std::string value)
 set the semantics string
void setOwnerType (const std::type_info &ownerType)
 set the type of the owner class (used for documentation)
template<class OWNER>
void setOwnerType ()
 set the type of the owner class (used for documentation)
const std::type_info * ownerType () const
 get the type of the owner class (used for documentation)
std::string ownerTypeName () const
 get the string for the type of the owner class (used for documentation)

Private Attributes

StorageType m_value
VerifierType m_verifier
HandlersType m_handlers

Additional Inherited Members

Protected Member Functions inherited from Gaudi::Details::PropertyBase
 PropertyBase (const std::type_info &type, std::string name="", std::string doc="", std::string semantics="")
 constructor from the property name and the type
 PropertyBase (std::string name, const std::type_info &type)
 constructor from the property name and the type
 PropertyBase (const PropertyBase &)=default
 copy constructor
PropertyBaseoperator= (const PropertyBase &)=default
 assignment operator

Detailed Description

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
class Gaudi::Property< TYPE, VERIFIER, HANDLERS >

Implementation of property with value of concrete type.

Author
Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u
Date
2006-02-27
Author
Marco Clemencic
Date
2016-06-16

Definition at line 35 of file Property.h.

Member Typedef Documentation

◆ HandlersType

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
using Gaudi::Property< TYPE, VERIFIER, HANDLERS >::HandlersType = HANDLERS

Definition at line 41 of file Property.h.

◆ StorageType

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
using Gaudi::Property< TYPE, VERIFIER, HANDLERS >::StorageType = TYPE

Hosted type.

Definition at line 38 of file Property.h.

◆ ValueType

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
using Gaudi::Property< TYPE, VERIFIER, HANDLERS >::ValueType = typename std::remove_reference<StorageType>::type

Definition at line 39 of file Property.h.

◆ VerifierType

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
using Gaudi::Property< TYPE, VERIFIER, HANDLERS >::VerifierType = VERIFIER

Definition at line 40 of file Property.h.

Constructor & Destructor Documentation

◆ Property() [1/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( std::string name,
T && value,
std::string doc = "",
std::string semantics = "" )
inline

the constructor with property name, value and documentation.

Definition at line 51 of file Property.h.

55 }
std::string semantics() const
property semantics
const std::string name() const
property name
Implementation of property with value of concrete type.
Definition Property.h:35
StorageType m_value
Definition Property.h:44
const ValueType & value() const
Definition Property.h:246
VerifierType m_verifier
Definition Property.h:45
typename std::remove_reference< StorageType >::type ValueType
Definition Property.h:39

◆ Property() [2/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<std::derived_from< IProperty > OWNER, typename T = ValueType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( OWNER * owner,
std::string name )
inline

Autodeclaring constructor with property name, value and documentation.

Note
the use of requires is required to avoid ambiguities

Definition at line 60 of file Property.h.

60 : Property( std::move( name ), ValueType{}, "" ) {
61 owner->declareProperty( *this );
63 }
void setOwnerType()
set the type of the owner class (used for documentation)
Property()
Construct an anonymous property with default constructed value.
Definition Property.h:124

◆ Property() [3/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( OWNER * owner,
std::string name,
T && value,
std::string doc = "",
std::string semantics = "" )
inline

Autodeclaring constructor with property name, value and documentation.

Note
the use of requires is required to avoid ambiguities

Definition at line 68 of file Property.h.

70 owner->declareProperty( *this );
72 }

◆ Property() [4/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( OWNER * owner,
std::string name,
T && value,
std::function< void(PropertyBase &)> handler,
std::string doc = "",
std::string semantics = "" )
inline

Autodeclaring constructor with property name, value, updateHandler and documentation.

Note
the use of requires is required to avoid ambiguities

Definition at line 77 of file Property.h.

81 }
Details::PropertyBase & declareUpdateHandler(std::function< void(Details::PropertyBase &)> fun) override
set new callback for update
Definition Property.h:135

◆ Property() [5/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( OWNER * owner,
std::string name,
T && value,
void(OWNER::* handler )(PropertyBase &),
std::string doc = "",
std::string semantics = "" )
inline

Autodeclaring constructor with property name, value, pointer to member function updateHandler and documentation.

Note
the use of requires is required to avoid ambiguities

Definition at line 86 of file Property.h.

88 : Property(
90 [owner, handler]( PropertyBase& p ) { ( owner->*handler )( p ); }, std::move( doc ),
91 std::move( semantics ) ) {}
PropertyBase(const std::type_info &type, std::string name="", std::string doc="", std::string semantics="")
constructor from the property name and the type

◆ Property() [6/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( OWNER * owner,
std::string name,
T && value,
void(OWNER::* handler )(),
std::string doc = "",
std::string semantics = "" )
inline

Autodeclaring constructor with property name, value, pointer to member function updateHandler and documentation.

Note
the use of requires is required to avoid ambiguities

Definition at line 95 of file Property.h.

97 : Property(
99 [owner, handler]( PropertyBase& ) { ( owner->*handler )(); }, std::move( doc ), std::move( semantics ) ) {
100 }

◆ Property() [7/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<std::derived_from< IProperty > OWNER, typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( OWNER * owner,
std::string name,
T && value,
std::function< void(PropertyBase &)> handler,
Details::Property< TYPE, VERIFIER, HANDLERS >::ImmediatelyInvokeHandler invoke,
std::string doc = "",
std::string semantics = "" )
inline

Autodeclaring constructor with property name, value, updateHandler and documentation.

Note
the use of requires is required to avoid ambiguities

Definition at line 105 of file Property.h.

108 std::move( semantics ) ) {
109 if ( invoke ) useUpdateHandler();
110 }
bool useUpdateHandler() override
manual trigger for callback for update
Definition Property.h:150

◆ Property() [8/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( T && v)
inline

Construct an anonymous property from a value.

This constructor is not generated if T is the current type, so that the compiler picks up the copy constructor instead of this one.

Definition at line 117 of file Property.h.

118 : Details::PropertyBase( typeid( ValueType ), "", "", "" ), m_value( std::forward<T>( v ) ) {}

◆ Property() [9/9]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T = StorageType>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::Property ( )
inline

Construct an anonymous property with default constructed value.

Can be used only if StorageType is default constructible.

Definition at line 124 of file Property.h.

124: Details::PropertyBase( typeid( ValueType ), "", "", "" ), m_value() {}

Member Function Documentation

◆ assign()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::assign ( const Details::PropertyBase & source)
inlineoverridevirtual

get the value from another property

Implements Gaudi::Details::PropertyBase.

Definition at line 412 of file Property.h.

412 {
413 // Check if the property is of "the same" type, except for strings
414 const Property* p =
416 if ( p ) {
417 *this = p->value();
418 } else {
419 return this->fromString( source.toString() ).isSuccess();
420 }
421 return true;
422 }
Property(std::string name, T &&value, std::string doc="", std::string semantics="")
the constructor with property name, value and documentation.
Definition Property.h:51
std::string toString() const override
value -> string
Definition Property.h:457
StatusCode fromString(const std::string &source) override
string -> value
Definition Property.h:429
bool isSuccess() const
Definition StatusCode.h:302

◆ begin() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::begin ( )
inline

Definition at line 292 of file Property.h.

293 { value().begin(); }
294 {
295 return value().begin();
296 }

◆ begin() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::begin ( ) const
inline

Definition at line 282 of file Property.h.

283 { value().begin(); }
284 {
285 return value().begin();
286 }

◆ clear()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
void Gaudi::Property< TYPE, VERIFIER, HANDLERS >::clear ( )
inline

Definition at line 277 of file Property.h.

278 { value().clear(); }
279 {
280 value().clear();
281 }

◆ clone()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Details::PropertyBase * Gaudi::Property< TYPE, VERIFIER, HANDLERS >::clone ( ) const
inlineoverridevirtual

clones the current property

Implements Gaudi::Details::PropertyBase.

Definition at line 256 of file Property.h.

256{ return new Property( *this ); }

◆ declareReadHandler() [1/3]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Details::PropertyBase & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::declareReadHandler ( std::function< void(Details::PropertyBase &)> fun)
inlineoverride

set new callback for reading

Definition at line 130 of file Property.h.

130 {
131 m_handlers.setReadHandler( std::move( fun ) );
132 return *this;
133 }
HandlersType m_handlers
Definition Property.h:46

◆ declareReadHandler() [2/3]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
virtual PropertyBase & Gaudi::Details::PropertyBase::declareReadHandler ( std::function< void(PropertyBase &)> fun)
virtual

set new callback for reading

Implements Gaudi::Details::PropertyBase.

◆ declareReadHandler() [3/3]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<class HT>
PropertyBase & Gaudi::Details::PropertyBase::declareReadHandler ( void(HT::* MF )(PropertyBase &),
HT * instance )
inline

Definition at line 75 of file PropertyBase.h.

75 {
76 return declareReadHandler( [=]( PropertyBase& p ) { ( instance->*MF )( p ); } );
77 }
Details::PropertyBase & declareReadHandler(std::function< void(Details::PropertyBase &)> fun) override
set new callback for reading
Definition Property.h:130

◆ declareUpdateHandler() [1/3]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Details::PropertyBase & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::declareUpdateHandler ( std::function< void(Details::PropertyBase &)> fun)
inlineoverride

set new callback for update

Definition at line 135 of file Property.h.

135 {
136 m_handlers.setUpdateHandler( std::move( fun ) );
137 return *this;
138 }

◆ declareUpdateHandler() [2/3]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
virtual PropertyBase & Gaudi::Details::PropertyBase::declareUpdateHandler ( std::function< void(PropertyBase &)> fun)
virtual

set new callback for update

Implements Gaudi::Details::PropertyBase.

◆ declareUpdateHandler() [3/3]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<class HT>
PropertyBase & Gaudi::Details::PropertyBase::declareUpdateHandler ( void(HT::* MF )(PropertyBase &),
HT * instance )
inline

Definition at line 80 of file PropertyBase.h.

80 {
81 return declareUpdateHandler( [=]( PropertyBase& p ) { ( instance->*MF )( p ); } );
82 }

◆ empty()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::empty ( ) const
inline

Definition at line 272 of file Property.h.

273 { value().empty(); }
274 {
275 return value().empty();
276 }

◆ end() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::end ( )
inline

Definition at line 297 of file Property.h.

298 { value().end(); }
299 {
300 return value().end();
301 }

◆ end() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::end ( ) const
inline

Definition at line 287 of file Property.h.

288 { value().end(); }
289 {
290 return value().end();
291 }

◆ erase()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { value().erase( arg ); }
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::erase ( T arg)
inline

Definition at line 327 of file Property.h.

328 { value().erase( arg ); }
329 {
330 return value().erase( arg );
331 }

◆ fillStream()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
std::ostream & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::fillStream ( std::ostream & stream) const
inlineoverridevirtual

Properly quote string properties when printing them.

Reimplemented from Gaudi::Details::PropertyBase.

Definition at line 174 of file Property.h.

174 {
175 stream << " '" << name() << "':";
178 toStream( value(), stream );
179 } else {
180 stream << toString();
181 }
182 return stream;
183 }
void toStream(std::ostream &out) const override
value -> stream
Definition Property.h:462

◆ find() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename K>
requires requires { value().find( key ); }
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::find ( const K & key)
inline

Definition at line 321 of file Property.h.

322 { value().find( key ); }
323 {
324 return value().find( key );
325 }
decltype(auto) key() const
Helpers for DataHandles and derived classes.
Definition Property.h:369

◆ find() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename K>
requires requires { value().find( key ); }
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::find ( const K & key) const
inline

Definition at line 315 of file Property.h.

316 { value().find( key ); }
317 {
318 return value().find( key );
319 }

◆ fromString()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
StatusCode Gaudi::Property< TYPE, VERIFIER, HANDLERS >::fromString ( const std::string & source)
inlineoverridevirtual

string -> value

Implements Gaudi::Details::PropertyBase.

Definition at line 429 of file Property.h.

429 {
430 try {
432 *this = Converter().fromString( m_value, source );
433 return StatusCode::SUCCESS;
434 } catch ( const std::exception& err ) {
437 const std::string errMsg =
438 "Cannot convert '" + source + "' for property '" + name() + "' in class '" + ownerTypeName() + "'";
439 switch ( parsingErrorPolicy() ) {
441 break;
443 throw GaudiException( errMsg, "Property::fromString", StatusCode::FAILURE, err );
444 break;
446 std::cerr << "WARNING: " << errMsg << "': " << err.what() << '\n';
447 break;
449 std::cerr << "FATAL: " << errMsg << "': " << err.what() << '\n';
450 std::abort();
451 break;
452 }
453 return StatusCode::FAILURE;
454 }
455 }
std::string ownerTypeName() const
get the string for the type of the owner class (used for documentation)

◆ fullKey()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::fullKey ( ) const
inline

Definition at line 379 of file Property.h.

380 { value().fullKey(); }
381 {
382 return value().fullKey();
383 }

◆ initialize()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::initialize ( )
inline

Definition at line 384 of file Property.h.

385 { value().initialize(); }
386 {
387 return value().initialize();
388 }

◆ key()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::key ( ) const
inline

Helpers for DataHandles and derived classes.

Definition at line 369 of file Property.h.

370 { value().key(); }
371 {
372 return value().key();
373 }

◆ length()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::length ( ) const
inline

Definition at line 267 of file Property.h.

268 { value().length(); }
269 {
270 return value().length();
271 }

◆ load()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::load ( Details::PropertyBase & dest) const
inlineoverridevirtual

set value to another property

Implements Gaudi::Details::PropertyBase.

Definition at line 424 of file Property.h.

424 {
425 // delegate to the 'opposite' method
426 return dest.assign( *this );
427 }
bool assign(const Details::PropertyBase &source) override
get the value from another property
Definition Property.h:412

◆ makeHandles() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::makeHandles ( ) const
inline

Definition at line 389 of file Property.h.

390 { value().makeHandles(); }
391 {
392 return value().makeHandles();
393 }

◆ makeHandles() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename ARG>
requires requires { value().makeHandles( arg ); }
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::makeHandles ( const ARG & arg) const
inline

Definition at line 395 of file Property.h.

396 { value().makeHandles( arg ); }
397 {
398 return value().makeHandles( arg );
399 }

◆ objKey()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::objKey ( ) const
inline

Definition at line 374 of file Property.h.

375 { value().objKey(); }
376 {
377 return value().objKey();
378 }

◆ operator const ValueType &()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator const ValueType & ( ) const
inline

Automatic conversion to value (const reference).

Definition at line 156 of file Property.h.

156 {
157 m_handlers.useReadHandler( *this );
158 return m_value;
159 }

◆ operator std::string_view()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator std::string_view ( ) const
inline

Definition at line 166 of file Property.h.

168 {
169 m_handlers.useReadHandler( *this );
170 return m_value;
171 }

◆ operator!=()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { { m_value != other } -> std::convertible_to<bool>; }
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator!= ( const T & other) const
inline

inequality comparison

Definition at line 197 of file Property.h.

198 {
200 }
201 {
202 return m_value != other;
203 }

◆ operator()()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename... Args>
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator() ( Args &&... args) const
inlineconstexprnoexcept

Definition at line 405 of file Property.h.

406 {
407 return std::invoke( value(), std::forward<Args>( args )... );
408 }

◆ operator+()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { m_value + other; }
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator+ ( const T & other) const
inline

allow addition if possible between the property and the other types

Definition at line 217 of file Property.h.

218 { m_value + other; }
219 {
220 return m_value + other;
221 }

◆ operator++() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Property & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator++ ( )
inline

Definition at line 332 of file Property.h.

333 { ++m_value; }
334 {
335 ++value();
336 return *this;
337 }

◆ operator++() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator++ ( int )
inline

Definition at line 338 of file Property.h.

339 { m_value++; }
340 {
341 return m_value++;
342 }

◆ operator+=()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { m_value += other; }
Property & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator+= ( const T & other)
inline

Definition at line 355 of file Property.h.

356 { m_value += other; }
357 {
358 m_value += other;
359 return *this;
360 }

◆ operator--() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
Property & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator-- ( )
inline

Definition at line 343 of file Property.h.

344 { --value(); }
345 {
346 --value();
347 return *this;
348 }

◆ operator--() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator-- ( int )
inline

Definition at line 349 of file Property.h.

350 { m_value--; }
351 {
352 return m_value--;
353 }

◆ operator-=()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { m_value -= other; }
Property & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator-= ( const T & other)
inline

Definition at line 362 of file Property.h.

363 { m_value -= other; }
364 {
365 m_value -= other;
366 return *this;
367 }

◆ operator<()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { { m_value < other } -> std::convertible_to<bool>; }
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator< ( const T & other) const
inline

"less" comparison

Definition at line 207 of file Property.h.

208 {
210 }
211 {
212 return m_value < other;
213 }

◆ operator=() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T = TYPE>
Property & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator= ( std::initializer_list< typename T::value_type > ilist)
inline

Definition at line 236 of file Property.h.

236 {
237 return *this = TYPE{ ilist };
238 }

◆ operator=() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
Property & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator= ( T && v)
inline

Assignment from value.

Definition at line 226 of file Property.h.

226 {
227 m_verifier( v );
229 m_handlers.useUpdateHandler( *this );
230 return *this;
231 }

◆ operator==()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename T>
requires requires { { m_value == other } -> std::convertible_to<bool>; }
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator== ( const T & other) const
inline

equality comparison

Definition at line 187 of file Property.h.

188 {
190 }
191 {
192 return m_value == other;
193 }

◆ operator[]() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename ARG>
requires requires { value()[arg]; }
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator[] ( const ARG & arg)
inline

Definition at line 309 of file Property.h.

310 { value()[arg]; }
311 {
312 return value()[arg];
313 }

◆ operator[]() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
template<typename ARG>
requires requires { value()[arg]; }
decltype(auto) Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator[] ( const ARG & arg) const
inline

Definition at line 303 of file Property.h.

304 { value()[arg]; }
305 {
306 return value()[arg];
307 }

◆ readCallBack()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
const std::function< void(Details::PropertyBase &)> Gaudi::Property< TYPE, VERIFIER, HANDLERS >::readCallBack ( ) const
inlineoverridevirtual

get a reference to the readCallBack

Implements Gaudi::Details::PropertyBase.

Definition at line 141 of file Property.h.

141 {
142 return m_handlers.getReadHandler();
143 }

◆ set()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::set ( const ValueType & v)
inline

Definition at line 252 of file Property.h.

252 {
253 *this = v;
254 return true;
255 }

◆ setValue()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::setValue ( const ValueType & v)
inline

Definition at line 248 of file Property.h.

248 {
249 *this = v;
250 return true;
251 }

◆ size()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
auto Gaudi::Property< TYPE, VERIFIER, HANDLERS >::size ( ) const
inline

Definition at line 262 of file Property.h.

263 { value().size(); }
264 {
265 return value().size();
266 }

◆ toStream()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
void Gaudi::Property< TYPE, VERIFIER, HANDLERS >::toStream ( std::ostream & out) const
inlineoverridevirtual

value -> stream

Implements Gaudi::Details::PropertyBase.

Definition at line 462 of file Property.h.

462 {
463 m_handlers.useReadHandler( *this );
464 using Utils::toStream;
465 toStream( m_value, out );
466 }

◆ toString()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
std::string Gaudi::Property< TYPE, VERIFIER, HANDLERS >::toString ( ) const
inlineoverridevirtual

value -> string

Implements Gaudi::Details::PropertyBase.

Definition at line 457 of file Property.h.

457 {
459 return Converter().toString( *this );
460 }

◆ updateCallBack()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
const std::function< void(Details::PropertyBase &)> Gaudi::Property< TYPE, VERIFIER, HANDLERS >::updateCallBack ( ) const
inlineoverridevirtual

get a reference to the updateCallBack

Implements Gaudi::Details::PropertyBase.

Definition at line 145 of file Property.h.

145 {
146 return m_handlers.getUpdateHandler();
147 }

◆ useUpdateHandler()

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::useUpdateHandler ( )
inlineoverridevirtual

manual trigger for callback for update

Implements Gaudi::Details::PropertyBase.

Definition at line 150 of file Property.h.

150 {
151 m_handlers.useUpdateHandler( *this );
152 return true;
153 }

◆ value() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
ValueType & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::value ( )
inline

Definition at line 247 of file Property.h.

247{ return const_cast<ValueType&>( (const ValueType&)*this ); }

◆ value() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
const ValueType & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::value ( ) const
inline

Definition at line 246 of file Property.h.

246{ return *this; }

◆ verifier() [1/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
VerifierType & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::verifier ( )
inline

Accessor to verifier.

Definition at line 243 of file Property.h.

243{ return m_verifier; }

◆ verifier() [2/2]

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
const VerifierType & Gaudi::Property< TYPE, VERIFIER, HANDLERS >::verifier ( ) const
inline

Accessor to verifier.

Definition at line 241 of file Property.h.

241{ return m_verifier; }

Member Data Documentation

◆ m_handlers

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
HandlersType Gaudi::Property< TYPE, VERIFIER, HANDLERS >::m_handlers
private

Definition at line 46 of file Property.h.

◆ m_value

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
StorageType Gaudi::Property< TYPE, VERIFIER, HANDLERS >::m_value
private

Definition at line 44 of file Property.h.

◆ m_verifier

template<typename TYPE, typename VERIFIER = Details::Property::NullVerifier, typename HANDLERS = Details::Property::UpdateHandler>
VerifierType Gaudi::Property< TYPE, VERIFIER, HANDLERS >::m_verifier
private

Definition at line 45 of file Property.h.


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