The Gaudi Framework  v32r2 (46d42edc)
Gaudi::Property< TYPE, VERIFIER, HANDLERS > Class Template Reference

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

#include <GaudiKernel/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. More...
 
using ValueType = typename std::remove_reference< StorageType >::type
 
using VerifierType = VERIFIER
 
using HandlersType = HANDLERS
 

Public Member Functions

template<class T = StorageType>
 Property (std::string name, T &&value, std::string doc="")
 the constructor with property name, value and documentation. More...
 
template<typename OWNER , typename T = ValueType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>, typename = std::enable_if_t<std::is_default_constructible_v<T>>>
 Property (OWNER *owner, std::string name)
 Autodeclaring constructor with property name, value and documentation. More...
 
template<class OWNER , class T = StorageType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
 Property (OWNER *owner, std::string name, T &&value, std::string doc="")
 Autodeclaring constructor with property name, value and documentation. More...
 
template<class OWNER , class T = StorageType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
 Property (OWNER *owner, std::string name, T &&value, std::function< void(PropertyBase &)> handler, std::string doc="")
 Autodeclaring constructor with property name, value, updateHandler and documentation. More...
 
template<class OWNER , class T = StorageType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
 Property (OWNER *owner, std::string name, T &&value, void(OWNER::*handler)(PropertyBase &), std::string doc="")
 Autodeclaring constructor with property name, value, pointer to member function updateHandler and documentation. More...
 
template<class OWNER , class T = StorageType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
 Property (OWNER *owner, std::string name, T &&value, void(OWNER::*handler)(), std::string doc="")
 Autodeclaring constructor with property name, value, pointer to member function updateHandler and documentation. More...
 
template<class OWNER , class T = StorageType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
 Property (OWNER *owner, std::string name, T &&value, std::function< void(PropertyBase &)> handler, Details::Property::ImmediatelyInvokeHandler invoke, std::string doc="")
 Autodeclaring constructor with property name, value, updateHandler and documentation. More...
 
template<typename T , typename = not_copying<T>>
 Property (T &&v)
 Construct an anonymous property from a value. More...
 
template<typename T = StorageType, typename = std::enable_if_t<!std::is_reference_v<T>>>
 Property ()
 Construct an anonymous property with default constructed value. More...
 
Details::PropertyBasedeclareReadHandler (std::function< void(Details::PropertyBase &)> fun) override
 set new callback for reading More...
 
Details::PropertyBasedeclareUpdateHandler (std::function< void(Details::PropertyBase &)> fun) override
 set new callback for update More...
 
const std::function< void(Details::PropertyBase &)> readCallBack () const override
 get a reference to the readCallBack More...
 
const std::function< void(Details::PropertyBase &)> updateCallBack () const override
 get a reference to the updateCallBack More...
 
bool useUpdateHandler () override
 manual trigger for callback for update More...
 
 operator const ValueType & () const
 Automatic conversion to value (const reference). More...
 
template<class T >
bool operator== (const T &other) const
 equality comparison More...
 
template<class T >
bool operator!= (const T &other) const
 inequality comparison More...
 
template<class T >
bool operator< (const T &other) const
 "less" comparison More...
 
template<class T = ValueType>
Propertyoperator= (T &&v)
 Assignment from value. More...
 
const VerifierTypeverifier () const
 Accessor to verifier. More...
 
VerifierTypeverifier ()
 Accessor to verifier. More...
 
template<class... Args>
decltype( operator() (Args &&... args) const noexcept(noexcept(std::declval< ValueType >()(std::declval< Args && >()...))) std::declval< ValueType >()(std::declval< Args && >()...))
 
bool assign (const Details::PropertyBase &source) override
 get the value from another property More...
 
bool load (Details::PropertyBase &dest) const override
 set value to another property More...
 
StatusCode fromString (const std::string &source) override
 string -> value More...
 
std::string toString () const override
 value -> string More...
 
void toStream (std::ostream &out) const override
 value -> stream More...
 
const ValueTypevalue () const
 Backward compatibility (. More...
 
ValueTypevalue ()
 
bool setValue (const ValueType &v)
 
bool set (const ValueType &v)
 
Details::PropertyBaseclone () const override
 clones the current property More...
 
Helpers for easy use of string and vector properties.

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

template<class = ValueType>
Propertyoperator++ ()
 
template<class = ValueType>
ValueType operator++ (int)
 
template<class = ValueType>
Propertyoperator-- ()
 
template<class = ValueType>
ValueType operator-- (int)
 
template<class T = ValueType>
Propertyoperator+= (const T &other)
 
template<class T = ValueType>
Propertyoperator-= (const T &other)
 
- Public Member Functions inherited from Gaudi::Details::PropertyBase
const std::string name () const
 property name More...
 
std::string documentation () const
 property documentation More...
 
const std::type_infotype_info () const
 property type-info More...
 
std::string type () const
 property type More...
 
template<class HT >
PropertyBasedeclareReadHandler (void(HT::*MF)(PropertyBase &), HT *instance)
 
template<class HT >
PropertyBasedeclareUpdateHandler (void(HT::*MF)(PropertyBase &), HT *instance)
 
virtual ~PropertyBase ()=default
 virtual destructor More...
 
void setName (std::string value)
 set the new value for the property name More...
 
void setDocumentation (std::string value)
 set the documentation string More...
 
virtual std::ostreamfillStream (std::ostream &) const
 the printout of the property value More...
 
void setOwnerType (const std::type_info &ownerType)
 set the type of the owner class (used for documentation) More...
 
template<class OWNER >
void setOwnerType ()
 set the type of the owner class (used for documentation) More...
 
const std::type_infoownerType () const
 get the type of the owner class (used for documentation) More...
 
std::string ownerTypeName () const
 get the string for the type of the owner class (used for documentation) More...
 

Private Attributes

StorageType m_value
 Storage. More...
 
VerifierType m_verifier
 
HandlersType m_handlers
 
template<class T >
using not_copying = std::enable_if_t<!is_this_type_v< T > >
 
template<class T >
static constexpr bool is_this_type_v = std::is_same_v<Property, std::remove_reference_t<T>>
 helper typedefs for SFINAE More...
 

Additional Inherited Members

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

Detailed Description

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 352 of file Property.h.

Member Typedef Documentation

◆ HandlersType

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

Definition at line 359 of file Property.h.

◆ not_copying

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<class T >
using Gaudi::Property< TYPE, VERIFIER, HANDLERS >::not_copying = std::enable_if_t<!is_this_type_v<T> >
private

Definition at line 372 of file Property.h.

◆ StorageType

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

Hosted type.

Definition at line 356 of file Property.h.

◆ ValueType

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

Definition at line 357 of file Property.h.

◆ VerifierType

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

Definition at line 358 of file Property.h.

Constructor & Destructor Documentation

◆ Property() [1/9]

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

the constructor with property name, value and documentation.

Definition at line 378 of file Property.h.

379  : Details::PropertyBase( typeid( ValueType ), std::move( name ), std::move( doc ) )
380  , m_value( std::forward<T>( value ) ) {
381  m_verifier( m_value );
382  }
StorageType m_value
Storage.
Definition: Property.h:364
const std::string name() const
property name
Definition: Property.h:36
typename std::remove_reference< StorageType >::type ValueType
Definition: Property.h:357
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526
T move(T... args)
VerifierType m_verifier
Definition: Property.h:365

◆ Property() [2/9]

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

Autodeclaring constructor with property name, value and documentation.

Note
the use std::enable_if is required to avoid ambiguities

Definition at line 387 of file Property.h.

387  : Property( std::move( name ), ValueType{}, "" ) {
388  owner->declareProperty( *this );
389  setOwnerType<OWNER>();
390  }
const std::string name() const
property name
Definition: Property.h:36
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444
typename std::remove_reference< StorageType >::type ValueType
Definition: Property.h:357
T move(T... args)

◆ Property() [3/9]

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

Autodeclaring constructor with property name, value and documentation.

Note
the use std::enable_if is required to avoid ambiguities

Definition at line 395 of file Property.h.

396  : Property( std::move( name ), std::forward<T>( value ), std::move( doc ) ) {
397  owner->declareProperty( *this );
398  setOwnerType<OWNER>();
399  }
const std::string name() const
property name
Definition: Property.h:36
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526
T move(T... args)

◆ Property() [4/9]

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

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

Note
the use std::enable_if is required to avoid ambiguities

Definition at line 404 of file Property.h.

406  : Property( owner, std::move( name ), std::forward<T>( value ), std::move( doc ) ) {
407  declareUpdateHandler( std::move( handler ) );
408  }
const std::string name() const
property name
Definition: Property.h:36
Details::PropertyBase & declareUpdateHandler(std::function< void(Details::PropertyBase &)> fun) override
set new callback for update
Definition: Property.h:455
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526
T move(T... args)

◆ Property() [5/9]

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

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

Note
the use std::enable_if is required to avoid ambiguities

Definition at line 413 of file Property.h.

415  : Property(
416  owner, std::move( name ), std::forward<T>( value ),
417  [owner, handler]( PropertyBase& p ) { ( owner->*handler )( p ); }, std::move( doc ) ) {}
const std::string name() const
property name
Definition: Property.h:36
PropertyBase(const std::type_info &type, std::string name="", std::string doc="")
constructor from the property name and the type
Definition: Property.h:111
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526
T move(T... args)

◆ Property() [6/9]

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

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

Note
the use std::enable_if is required to avoid ambiguities

Definition at line 421 of file Property.h.

422  : Property(
423  owner, std::move( name ), std::forward<T>( value ),
424  [owner, handler]( PropertyBase& ) { ( owner->*handler )(); }, std::move( doc ) ) {}
const std::string name() const
property name
Definition: Property.h:36
PropertyBase(const std::type_info &type, std::string name="", std::string doc="")
constructor from the property name and the type
Definition: Property.h:111
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526
T move(T... args)

◆ Property() [7/9]

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<class OWNER , class T = StorageType, typename = std::enable_if_t<std::is_base_of_v<IProperty, OWNER>>>
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 = "" 
)
inline

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

Note
the use std::enable_if is required to avoid ambiguities

Definition at line 429 of file Property.h.

431  : Property( owner, std::move( name ), std::forward<T>( value ), std::move( handler ), std::move( doc ) ) {
432  if ( invoke ) useUpdateHandler();
433  }
bool useUpdateHandler() override
manual trigger for callback for update
Definition: Property.h:470
const std::string name() const
property name
Definition: Property.h:36
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526
T move(T... args)

◆ Property() [8/9]

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<typename T , typename = not_copying<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 439 of file Property.h.

439 : Details::PropertyBase( typeid( ValueType ), "", "" ), m_value( std::forward<T>( v ) ) {}
StorageType m_value
Storage.
Definition: Property.h:364
typename std::remove_reference< StorageType >::type ValueType
Definition: Property.h:357

◆ Property() [9/9]

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<typename T = StorageType, typename = std::enable_if_t<!std::is_reference_v<T>>>
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 444 of file Property.h.

444 : Details::PropertyBase( typeid( ValueType ), "", "" ), m_value() {}
StorageType m_value
Storage.
Definition: Property.h:364
typename std::remove_reference< StorageType >::type ValueType
Definition: Property.h:357

Member Function Documentation

◆ assign()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 659 of file Property.h.

659  {
660  // Check if the property of is of "the same" type, except for strings
661  const Property* p =
662  ( std::is_same_v<ValueType, std::string> ) ? nullptr : dynamic_cast<const Property*>( &source );
663  if ( p ) {
664  *this = p->value();
665  } else {
666  this->fromString( source.toString() ).ignore();
667  }
668  return true;
669  }
Gaudi::Details::PropertyBase Property
\fixme backward compatibility hack for old Property base class
Definition: PropertyFwd.h:25
StatusCode fromString(const std::string &source) override
string -> value
Definition: Property.h:676

◆ clone()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 536 of file Property.h.

536 { return new Property( *this ); }
Property()
Construct an anonymous property with default constructed value.
Definition: Property.h:444

◆ declareReadHandler()

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

set new callback for reading

Implements Gaudi::Details::PropertyBase.

Definition at line 450 of file Property.h.

450  {
451  m_handlers.setReadHandler( std::move( fun ) );
452  return *this;
453  }
HandlersType m_handlers
Definition: Property.h:366
T move(T... args)

◆ declareUpdateHandler()

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

set new callback for update

Implements Gaudi::Details::PropertyBase.

Definition at line 455 of file Property.h.

455  {
456  m_handlers.setUpdateHandler( std::move( fun ) );
457  return *this;
458  }
HandlersType m_handlers
Definition: Property.h:366
T move(T... args)

◆ fromString()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 676 of file Property.h.

676  {
677  using Converter = Details::Property::StringConverter<ValueType>;
678  *this = Converter().fromString( m_value, source );
679  return StatusCode::SUCCESS;
680  }
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
StorageType m_value
Storage.
Definition: Property.h:364
Converter base class.
Definition: Converter.h:24

◆ load()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 671 of file Property.h.

671  {
672  // delegate to the 'opposite' method
673  return dest.assign( *this );
674  }

◆ operator const ValueType &()

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

Automatic conversion to value (const reference).

Definition at line 476 of file Property.h.

476  {
477  m_handlers.useReadHandler( *this );
478  return m_value;
479  }
HandlersType m_handlers
Definition: Property.h:366
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator!=()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<class T >
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator!= ( const T &  other) const
inline

inequality comparison

Definition at line 494 of file Property.h.

494  {
495  return m_value != other;
496  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator()()

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

Definition at line 652 of file Property.h.

653  {
654  return value()( std::forward<Args>( args )... );
655  }
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526

◆ operator++() [1/2]

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

Definition at line 595 of file Property.h.

595  {
596  ++value();
597  return *this;
598  }
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526

◆ operator++() [2/2]

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

Definition at line 600 of file Property.h.

600  {
601  return m_value++;
602  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator+=()

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

Definition at line 613 of file Property.h.

613  {
614  m_value += other;
615  return *this;
616  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator--() [1/2]

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

Definition at line 604 of file Property.h.

604  {
605  --value();
606  return *this;
607  }
const ValueType & value() const
Backward compatibility (.
Definition: Property.h:526

◆ operator--() [2/2]

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

Definition at line 609 of file Property.h.

609  {
610  return m_value--;
611  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator-=()

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

Definition at line 618 of file Property.h.

618  {
619  m_value -= other;
620  return *this;
621  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator<()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<class T >
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator< ( const T &  other) const
inline

"less" comparison

Definition at line 500 of file Property.h.

500  {
501  return m_value < other;
502  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ operator=()

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

Assignment from value.

Definition at line 512 of file Property.h.

512  {
513  m_verifier( v );
514  m_value = std::forward<T>( v );
515  m_handlers.useUpdateHandler( *this );
516  return *this;
517  }
HandlersType m_handlers
Definition: Property.h:366
StorageType m_value
Storage.
Definition: Property.h:364
VerifierType m_verifier
Definition: Property.h:365

◆ operator==()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<class T >
bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::operator== ( const T &  other) const
inline

equality comparison

Definition at line 488 of file Property.h.

488  {
489  return m_value == other;
490  }
StorageType m_value
Storage.
Definition: Property.h:364

◆ readCallBack()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 461 of file Property.h.

461  {
462  return m_handlers.getReadHandler();
463  }
HandlersType m_handlers
Definition: Property.h:366

◆ set()

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

Definition at line 532 of file Property.h.

532  {
533  *this = v;
534  return true;
535  }

◆ setValue()

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

Definition at line 528 of file Property.h.

528  {
529  *this = v;
530  return true;
531  }

◆ toStream()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 687 of file Property.h.

687  {
688  m_handlers.useReadHandler( *this );
689  using Utils::toStream;
690  toStream( m_value, out );
691  }
std::ostream & toStream(ITERATOR first, ITERATOR last, std::ostream &s, const std::string &open, const std::string &close, const std::string &delim)
the helper function to print the sequence
Definition: ToStream.h:284
HandlersType m_handlers
Definition: Property.h:366
StorageType m_value
Storage.
Definition: Property.h:364
void toStream(std::ostream &out) const override
value -> stream
Definition: Property.h:687

◆ toString()

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

value -> string

Implements Gaudi::Details::PropertyBase.

Definition at line 682 of file Property.h.

682  {
683  using Converter = Details::Property::StringConverter<ValueType>;
684  return Converter().toString( *this );
685  }
Converter base class.
Definition: Converter.h:24

◆ updateCallBack()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 465 of file Property.h.

465  {
466  return m_handlers.getUpdateHandler();
467  }
HandlersType m_handlers
Definition: Property.h:366

◆ useUpdateHandler()

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class 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 470 of file Property.h.

470  {
471  m_handlers.useUpdateHandler( *this );
472  return true;
473  }
HandlersType m_handlers
Definition: Property.h:366

◆ value() [1/2]

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

Backward compatibility (.

Deprecated:
will be removed)

Definition at line 526 of file Property.h.

526 { return *this; }

◆ value() [2/2]

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

Definition at line 527 of file Property.h.

527 { return const_cast<ValueType&>( (const ValueType&)*this ); }
typename std::remove_reference< StorageType >::type ValueType
Definition: Property.h:357

◆ verifier() [1/2]

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

Accessor to verifier.

Definition at line 520 of file Property.h.

520 { return m_verifier; }
VerifierType m_verifier
Definition: Property.h:365

◆ verifier() [2/2]

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

Accessor to verifier.

Definition at line 522 of file Property.h.

522 { return m_verifier; }
VerifierType m_verifier
Definition: Property.h:365

Member Data Documentation

◆ is_this_type_v

template<class TYPE, class VERIFIER = Details::Property::NullVerifier, class HANDLERS = Details::Property::UpdateHandler>
template<class T >
constexpr bool Gaudi::Property< TYPE, VERIFIER, HANDLERS >::is_this_type_v = std::is_same_v<Property, std::remove_reference_t<T>>
inlinestaticprivate

helper typedefs for SFINAE

Definition at line 370 of file Property.h.

◆ m_handlers

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

Definition at line 366 of file Property.h.

◆ m_value

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

Storage.

Definition at line 364 of file Property.h.

◆ m_verifier

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

Definition at line 365 of file Property.h.


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