Gaudi Framework, version v21r8

Home   Generated: 17 Mar 2010

Property Class Reference

Property base class allowing Property* collections to be "homogeneous". More...

#include <GaudiKernel/Property.h>

Inheritance diagram for Property:

Inheritance graph
[legend]
Collaboration diagram for Property:

Collaboration graph
[legend]

List of all members.

Public Member Functions

const std::stringname () const
 property name
const std::stringdocumentation () const
 property documentation
const std::type_infotype_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 owned by property!
const PropertyCallbackFunctorupdateCallBack () const
 Call-back functor for update: the functor is owned 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 bool 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::ostreamfillStream (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)
 assignment operator

Protected Attributes

PropertyCallbackFunctorm_readCallBack
PropertyCallbackFunctorm_updateCallBack

Private Member Functions

 Property ()

Private Attributes

std::string m_name
std::string m_documentation
const std::type_infom_typeinfo


Detailed Description

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

Author:
Paul Maley

CTDay

Vanya BELYAEV ibelyaev@physics.syr.edu

Definition at line 43 of file Property.h.


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 47 of file Property.h.

00047 { return m_name             ; } ;

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

property documentation

Definition at line 49 of file Property.h.

00049 { return m_documentation; };

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

property type-info

Definition at line 51 of file Property.h.

00051 { return m_typeinfo         ; } ;

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

property type

Definition at line 53 of file Property.h.

00053 { 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 owned 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 functor is owned 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 128 of file Property.h.

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

Definition at line 133 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 } 

bool Property::useUpdateHandler (  )  [virtual]

use the call-back function at update

Definition at line 163 of file Property.cpp.

00164 {
00165   bool sc(true);
00166   if ( 0 == m_updateCallBack ) { return sc; }  // RETURN
00167   PropertyCallbackFunctor* theCallBack = m_updateCallBack;
00168   // avoid infinite loop
00169   m_updateCallBack = 0;
00170   try {
00171     (*theCallBack)( *this ) ;
00172   } catch(...) {
00173     sc = false;
00174   }    
00175   m_updateCallBack = theCallBack;
00176   return sc;
00177 } 

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 88 of file Property.h.

00088 { m_name = value ; }

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

set the documentation string

Definition at line 90 of file Property.h.

00090                                                           {
00091     m_documentation = documentation; };

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

the printout of the property value

Definition at line 182 of file Property.cpp.

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

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

assignment 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

Definition at line 112 of file Property.h.

Definition at line 114 of file Property.h.

Definition at line 116 of file Property.h.

Definition at line 119 of file Property.h.

Definition at line 121 of file Property.h.


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

Generated at Wed Mar 17 18:19:02 2010 for Gaudi Framework, version v21r8 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004