Gaudi Framework, version v20r3

Generated: 24 Nov 2008

Property Class Reference

#include <GaudiKernel/Property.h>

Inheritance diagram for Property:

Inheritance graph
[legend]
Collaboration diagram for Property:

Collaboration graph
[legend]

List of all members.


Detailed Description

Property base class allowing Property* collections to be "homogeneus".

Author:
Paul Maley

CTDay

Vanya BELYAEV ibelyaev@physics.syr.edu

Definition at line 46 of file Property.h.


Public Member Functions

const std::string & name () const
 property name
const std::string & documentation () const
 property documentation
const std::type_info * type_info () const
 property type-info
std::string type () const
 property type
virtual bool load (Property &dest) const =0
 export the property value to the destination
virtual bool assign (const Property &source)=0
 import the property value form the source
virtual std::string toString () const =0
 value -> string
virtual StatusCode fromString (const std::string &value)=0
 string -> value
const PropertyCallbackFunctorreadCallBack () const
 Call-back functor at reading: the functor is ownered by property!
const PropertyCallbackFunctorupdateCallBack () const
 Call-back functor for update: the funtor is ownered by property!
virtual void declareReadHandler (PropertyCallbackFunctor *pf)
 set new callback for reading
virtual void declareUpdateHandler (PropertyCallbackFunctor *pf)
 set new callback for update
template<class HT>
void declareReadHandler (void(HT::*MF)(Property &), HT *instance)
template<class HT>
void declareUpdateHandler (void(HT::*MF)(Property &), HT *instance)
virtual void useReadHandler () const
 use the call-back function at reading
virtual void useUpdateHandler ()
 use the call-back function at update
virtual ~Property ()
 virtual destructor
virtual Propertyclone () const =0
 clone: "virtual constructor"
void setName (const std::string &value)
 set the new value for the property name
void setDocumentation (const std::string &documentation)
 set the documentation string
virtual std::ostream & fillStream (std::ostream &) const
 the printout of the property value

Protected Member Functions

 Property (const std::type_info &type, const std::string &name="")
 constructor from the property name and the type
 Property (const std::string &name, const std::type_info &type)
 constructor from the property name and the type
 Property (const Property &right)
 copy constructor
Propertyoperator= (const Property &right)
 assignement operator

Protected Attributes

PropertyCallbackFunctorm_readCallBack
PropertyCallbackFunctorm_updateCallBack

Private Member Functions

 Property ()

Private Attributes

std::string m_name
std::string m_documentation
const std::type_info * m_typeinfo

Constructor & Destructor Documentation

Property::~Property (  )  [virtual]

virtual destructor

Definition at line 112 of file Property.cpp.

00113 {
00114   if ( 0 != m_readCallBack   ) 
00115   { delete m_readCallBack    ; m_readCallBack    = 0 ; }
00116   if ( 0 != m_updateCallBack ) 
00117   { delete m_updateCallBack  ; m_updateCallBack  = 0 ; }  
00118 } 

Property::Property ( const std::type_info &  type,
const std::string &  name = "" 
) [protected]

constructor from the property name and the type

Definition at line 48 of file Property.cpp.

00050   : m_name            (  name ) 
00051   , m_documentation   ( name )
00052   , m_typeinfo        ( &type )
00053   , m_readCallBack    (  0  ) 
00054   , m_updateCallBack  (  0  )
00055 {}  

Property::Property ( const std::string &  name,
const std::type_info &  type 
) [protected]

constructor from the property name and the type

Definition at line 63 of file Property.cpp.

00065   : m_name            (  name ) 
00066   , m_documentation   ( name )
00067   , m_typeinfo        ( &type )
00068   , m_readCallBack    (  0  ) 
00069   , m_updateCallBack  (  0  )
00070 {}  

Property::Property ( const Property right  )  [protected]

copy constructor

Definition at line 75 of file Property.cpp.

00076   : m_name     ( right.m_name     ) 
00077   , m_documentation ( right.m_documentation )
00078   , m_typeinfo ( right.m_typeinfo )
00079   , m_readCallBack   ( 0 ) 
00080   , m_updateCallBack ( 0 )
00081 {
00082   if ( 0 != right.m_readCallBack   ) 
00083   { m_readCallBack   = right.m_readCallBack   -> clone () ; }
00084   if ( 0 != right.m_updateCallBack ) 
00085   { m_updateCallBack = right.m_updateCallBack -> clone () ; }  
00086 }

Property::Property (  )  [private]


Member Function Documentation

const std::string& Property::name (  )  const [inline]

property name

Definition at line 50 of file Property.h.

00050 { return m_name             ; } ;

const std::string& Property::documentation (  )  const [inline]

property documentation

Definition at line 52 of file Property.h.

00052 { return m_documentation; };

const std::type_info* Property::type_info (  )  const [inline]

property type-info

Definition at line 54 of file Property.h.

00054 { return m_typeinfo         ; } ;

std::string Property::type (  )  const [inline]

property type

Definition at line 56 of file Property.h.

00056 { return m_typeinfo->name() ; } ;  

virtual bool Property::load ( Property dest  )  const [pure virtual]

virtual bool Property::assign ( const Property source  )  [pure virtual]

virtual std::string Property::toString (  )  const [pure virtual]

virtual StatusCode Property::fromString ( const std::string &  value  )  [pure virtual]

const PropertyCallbackFunctor * Property::readCallBack (  )  const

Call-back functor at reading: the functor is ownered by property!

Definition at line 122 of file Property.cpp.

00123 { return m_readCallBack ; }  

const PropertyCallbackFunctor * Property::updateCallBack (  )  const

Call-back functor for update: the funtor is ownered by property!

Definition at line 127 of file Property.cpp.

00128 { return m_updateCallBack ; }

void Property::declareReadHandler ( PropertyCallbackFunctor pf  )  [virtual]

set new callback for reading

Definition at line 132 of file Property.cpp.

00133 {
00134   if ( 0 != m_readCallBack   ) 
00135   { delete m_readCallBack    ; m_readCallBack    = 0 ; }
00136   m_readCallBack = pf ;
00137 } 

void Property::declareUpdateHandler ( PropertyCallbackFunctor pf  )  [virtual]

set new callback for update

Definition at line 141 of file Property.cpp.

00142 {
00143   if ( 0 != m_updateCallBack   ) 
00144   { delete m_updateCallBack    ; m_updateCallBack    = 0 ; }
00145   m_updateCallBack = pf ;
00146 } 

template<class HT>
void Property::declareReadHandler ( void(HT::*)(Property &)  MF,
HT *  instance 
) [inline]

Definition at line 131 of file Property.h.

template<class HT>
void Property::declareUpdateHandler ( void(HT::*)(Property &)  MF,
HT *  instance 
) [inline]

Definition at line 136 of file Property.h.

void Property::useReadHandler (  )  const [virtual]

use the call-back function at reading

Definition at line 150 of file Property.cpp.

00151 {
00152   if ( 0 == m_readCallBack ) { return ; }               // RETURN
00153   const Property& p = *this ;
00154   PropertyCallbackFunctor* theCallBack = m_readCallBack;
00155   // avoid infinite loop
00156   m_readCallBack = 0;
00157   (*theCallBack)( const_cast<Property&>(p) ) ;
00158   m_readCallBack = theCallBack;
00159 } 

void Property::useUpdateHandler (  )  [virtual]

use the call-back function at update

Definition at line 163 of file Property.cpp.

00164 {
00165   if ( 0 == m_updateCallBack ) { return ; }              // RETURN
00166   PropertyCallbackFunctor* theCallBack = m_updateCallBack;
00167   // avoid infinite loop
00168   m_updateCallBack = 0;
00169   (*theCallBack)( *this ) ;
00170   m_updateCallBack = theCallBack;
00171 } 

virtual Property* Property::clone (  )  const [pure virtual]

void Property::setName ( const std::string &  value  )  [inline]

set the new value for the property name

Definition at line 91 of file Property.h.

00091 { m_name = value ; }

void Property::setDocumentation ( const std::string &  documentation  )  [inline]

set the documentation string

Definition at line 93 of file Property.h.

00093                                                           { 
00094     m_documentation = documentation; };

std::ostream & Property::fillStream ( std::ostream &  stream  )  const [virtual]

the printout of the property value

Definition at line 176 of file Property.cpp.

00177 { return stream << " '" <<name() << "':" << toString() ; }

Property & Property::operator= ( const Property right  )  [protected]

assignement operator

Definition at line 90 of file Property.cpp.

00091 {
00092   if ( &right == this ) { return *this ; }
00093   //
00094   m_name     = right.m_name ;
00095   m_documentation = right.m_documentation ;
00096   m_typeinfo = right.m_typeinfo ;  
00097   //
00098   if ( 0 !=       m_readCallBack   ) 
00099   { delete m_readCallBack   ; m_readCallBack   = 0 ; }
00100   if ( 0 !=       m_updateCallBack ) 
00101   { delete m_updateCallBack ; m_updateCallBack = 0 ; }
00102   if ( 0 != right.m_readCallBack   ) 
00103   { m_readCallBack   = right.m_readCallBack   -> clone () ; }
00104   if ( 0 != right.m_updateCallBack ) 
00105   { m_updateCallBack = right.m_updateCallBack -> clone () ; }  
00106   // 
00107   return *this ;
00108 } 


Member Data Documentation

std::string Property::m_name [private]

Definition at line 115 of file Property.h.

std::string Property::m_documentation [private]

Definition at line 117 of file Property.h.

const std::type_info* Property::m_typeinfo [private]

Definition at line 119 of file Property.h.

Definition at line 122 of file Property.h.

Definition at line 124 of file Property.h.


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

Generated at Mon Nov 24 14:46:18 2008 for Gaudi Framework, version v20r3 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004