Gaudi Framework, version v21r8

Home   Generated: 17 Mar 2010

PropertyWithValue< TYPE > Class Template Reference

Helper intermediate class which represent partly implemented property with value of concrete type. More...

#include <Property.h>

Inheritance diagram for PropertyWithValue< TYPE >:

Inheritance graph
[legend]
Collaboration diagram for PropertyWithValue< TYPE >:

Collaboration graph
[legend]

List of all members.

Public Types

typedef
Gaudi::Utils::PropertyTypeTraits
< TYPE
Traits
 the type-traits for properties
typedef Traits::PVal PVal
 the actual storage type

Public Member Functions

 operator const TYPE & () const
 implicit conversion to the type
const TYPEvalue () const
 explicit conversion
virtual bool setValue (const TYPE &value)=0
 NB: abstract : to be implemented when verifier is available.
virtual bool assign (const Property &source)
 get the value from another property
virtual bool load (Property &dest) const
 set value for another property
virtual StatusCode fromString (const std::string &s)
 string -> value
virtual std::string toString () const
 value -> string

Protected Member Functions

 PropertyWithValue (const std::string &name, PVal value, const bool owner)
 the constructor with property name and value
 PropertyWithValue (const PropertyWithValue &rhs)
 copy constructor (don't let the compiler generate a buggy one)
template<class OTHER>
 PropertyWithValue (const PropertyWithValue< OTHER > &right)
 copy constructor from any other type
virtual ~PropertyWithValue ()
 virtual destructor
PropertyWithValueoperator= (const TYPE &value)
 assignment operator
PropertyWithValueoperator= (const PropertyWithValue &rhs)
template<class OTHER>
PropertyWithValueoperator= (const PropertyWithValue< OTHER > &right)
void i_set (const TYPE &value)
 set the value
PVal i_get () const
 get the value

Private Attributes

PVal m_value
 the actual property value
bool m_own
 owner of the storage


Detailed Description

template<class TYPE>
class PropertyWithValue< TYPE >

Helper intermediate class which represent partly implemented property with value of concrete type.

Author:
Vanya BELYAEV ibelyaev@physics.syr.edu
Date:
2006-02-27

Definition at line 145 of file Property.h.


Member Typedef Documentation

template<class TYPE>
typedef Gaudi::Utils::PropertyTypeTraits<TYPE> PropertyWithValue< TYPE >::Traits

template<class TYPE>
typedef Traits::PVal PropertyWithValue< TYPE >::PVal

the actual storage type

Definition at line 152 of file Property.h.


Constructor & Destructor Documentation

template<class TYPE>
PropertyWithValue< TYPE >::PropertyWithValue ( const std::string name,
PVal  value,
const bool  owner 
) [inline, protected]

the constructor with property name and value

Definition at line 221 of file Property.h.

00224   : Property ( typeid( TYPE ) , name )
00225   , m_value  ( value )
00226   , m_own    ( own   )
00227 {}

template<class TYPE>
PropertyWithValue< TYPE >::PropertyWithValue ( const PropertyWithValue< TYPE > &  rhs  )  [inline, protected]

copy constructor (don't let the compiler generate a buggy one)

Definition at line 233 of file Property.h.

00234   : Property( right         )
00235   , m_value ( right.m_value )
00236   , m_own   ( right.m_own   )
00237 { 
00238   m_value = Traits::copy ( right.value() , m_own ) ;
00239 }

template<class TYPE>
template<class OTHER>
PropertyWithValue< TYPE >::PropertyWithValue ( const PropertyWithValue< OTHER > &  right  )  [inline, protected]

copy constructor from any other type

Definition at line 246 of file Property.h.

00247   : Property( right         )
00248   , m_value ( right.m_value )
00249   , m_own   ( right.m_own   )
00250 { 
00251   m_value = Traits::copy ( right.value() , m_own ) ;
00252 }

template<class TYPE>
PropertyWithValue< TYPE >::~PropertyWithValue (  )  [inline, protected, virtual]

virtual destructor

Definition at line 257 of file Property.h.

00258 {
00259   Traits::dele ( m_value , m_own ) ;
00260   m_value = 0 ;
00261 }


Member Function Documentation

template<class TYPE>
PropertyWithValue< TYPE > & PropertyWithValue< TYPE >::operator= ( const TYPE value  )  [inline, protected]

template<class TYPE>
PropertyWithValue< TYPE > & PropertyWithValue< TYPE >::operator= ( const PropertyWithValue< TYPE > &  rhs  )  [inline, protected]

Definition at line 347 of file Property.h.

00348 {
00349   // assign the base class
00350   Property::operator=( right ) ;
00351   // assign the value
00352   PropertyWithValue<TYPE>::operator=( right.value() ) ;
00353   return *this ;
00354 }

template<class TYPE>
template<class OTHER>
PropertyWithValue< TYPE > & PropertyWithValue< TYPE >::operator= ( const PropertyWithValue< OTHER > &  right  )  [inline, protected]

template<class TYPE>
PropertyWithValue< TYPE >::operator const TYPE & (  )  const [inline]

implicit conversion to the type

Definition at line 179 of file Property.h.

00179 { return value() ;}

template<class TYPE>
const TYPE & PropertyWithValue< TYPE >::value (  )  const [inline]

explicit conversion

get the access to the storage

Definition at line 340 of file Property.h.

00341 { useReadHandler() ; return *m_value ; }

template<class TYPE>
virtual bool PropertyWithValue< TYPE >::setValue ( const TYPE value  )  [pure virtual]

template<class TYPE>
bool PropertyWithValue< TYPE >::assign ( const Property source  )  [inline, virtual]

get the value from another property

implementation of Property::assign

Implements Property.

Definition at line 278 of file Property.h.

00279 {
00280   // 1) Is the property of "the same" type?
00281   const PropertyWithValue<TYPE>* p =
00282     dynamic_cast<const PropertyWithValue<TYPE>*>       ( &source ) ;
00283   if ( 0 != p ) { return setValue ( p->value() ) ; }       // RETURN
00284   // 2) Else use the string representation
00285   return this->fromString( source.toString() ).isSuccess() ;
00286 }

template<class TYPE>
bool PropertyWithValue< TYPE >::load ( Property dest  )  const [inline, virtual]

set value for another property

implementation of Property::load

Implements Property.

Definition at line 292 of file Property.h.

00293 {
00294   // delegate to the 'opposite' method ;
00295   return dest.assign( *this ) ;
00296 }

template<class TYPE>
StatusCode PropertyWithValue< TYPE >::fromString ( const std::string s  )  [inline, virtual]

string -> value

Implementation of PropertyWithValue::fromString.

Implements Property.

Definition at line 312 of file Property.h.

00313 {
00314   TYPE tmp ;
00315   StatusCode sc = Gaudi::Parsers::parse ( tmp , source ) ;
00316   if ( sc.isFailure() ) { return sc ; }
00317   return setValue ( tmp ) ? StatusCode::SUCCESS : StatusCode::FAILURE ;
00318 }

template<class TYPE>
std::string PropertyWithValue< TYPE >::toString (  )  const [inline, virtual]

value -> string

Implementation of PropertyWithValue::toString.

Implements Property.

Definition at line 302 of file Property.h.

00303 {
00304   useReadHandler();
00305   return Gaudi::Utils::toString( *m_value ) ;
00306 }

template<class TYPE>
void PropertyWithValue< TYPE >::i_set ( const TYPE value  )  [inline, protected]

set the value

Definition at line 199 of file Property.h.

00199                                            {
00200     Traits::assign(*m_value, value);
00201   }

template<class TYPE>
PVal PropertyWithValue< TYPE >::i_get (  )  const [inline, protected]

get the value

Definition at line 203 of file Property.h.

00203                               {
00204     return m_value;
00205   }


Member Data Documentation

template<class TYPE>
PVal PropertyWithValue< TYPE >::m_value [private]

the actual property value

Definition at line 210 of file Property.h.

template<class TYPE>
bool PropertyWithValue< TYPE >::m_own [private]

owner of the storage

Definition at line 212 of file Property.h.


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

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