Gaudi Framework, version v23r0

Home   Generated: Mon Jan 30 2012
Public Types | Public Member Functions | Protected Member Functions | Private Attributes

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 TYPE & value () 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
virtual void toStream (std::ostream &out) const
 value -> stream

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


Member Typedef Documentation

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

the actual storage type

Definition at line 154 of file Property.h.

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

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

  : Property ( typeid( TYPE ) , name )
  , m_value  ( value )
  , m_own    ( own   )
{}
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 237 of file Property.h.

  : Property( right         )
  , m_value ( right.m_value )
  , m_own   ( right.m_own   )
{
  m_value = Traits::copy ( right.value() , m_own ) ;
}
template<class TYPE >
template<class OTHER >
PropertyWithValue< TYPE >::PropertyWithValue ( const PropertyWithValue< OTHER > &  right ) [inline, protected]

copy constructor from any other type

Definition at line 250 of file Property.h.

  : Property( right         )
  , m_value ( right.m_value )
  , m_own   ( right.m_own   )
{
  m_value = Traits::copy ( right.value() , m_own ) ;
}
template<class TYPE >
PropertyWithValue< TYPE >::~PropertyWithValue (  ) [inline, protected, virtual]

virtual destructor

Definition at line 261 of file Property.h.

{
  Traits::dele ( m_value , m_own ) ;
  m_value = 0 ;
}

Member Function Documentation

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

{
  // 1) Is the property of "the same" type?
  const PropertyWithValue<TYPE>* p =
    dynamic_cast<const PropertyWithValue<TYPE>*>       ( &source ) ;
  if ( 0 != p ) { return setValue ( p->value() ) ; }       // RETURN
  // 2) Else use the string representation
  return this->fromString( source.toString() ).isSuccess() ;
}
template<class TYPE >
StatusCode PropertyWithValue< TYPE >::fromString ( const std::string s ) [inline, virtual]

string -> value

Implementation of PropertyWithValue::fromString.

Implements Property.

Definition at line 326 of file Property.h.

{
  TYPE tmp ;
  StatusCode sc = Gaudi::Parsers::parse ( tmp , source ) ;
  if ( sc.isFailure() ) { return sc ; }
  return setValue ( tmp ) ? StatusCode::SUCCESS : StatusCode::FAILURE ;
}
template<class TYPE>
PVal PropertyWithValue< TYPE >::i_get (  ) const [inline, protected]

get the value

Definition at line 207 of file Property.h.

                              {
    return m_value;
  }
template<class TYPE>
void PropertyWithValue< TYPE >::i_set ( const TYPE &  value ) [inline, protected]

set the value

Definition at line 203 of file Property.h.

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

{
  // delegate to the 'opposite' method ;
  return dest.assign( *this ) ;
}
template<class TYPE>
PropertyWithValue< TYPE >::operator const TYPE & (  ) const [inline]

implicit conversion to the type

Definition at line 181 of file Property.h.

{ return value() ;}
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 ) [protected]

Definition at line 361 of file Property.h.

{
  // assign the base class
  Property::operator=( right ) ;
  // assign the value
  PropertyWithValue<TYPE>::operator=( right.value() ) ;
  return *this ;
}
template<class TYPE >
template<class OTHER >
PropertyWithValue< TYPE > & PropertyWithValue< TYPE >::operator= ( const PropertyWithValue< OTHER > &  right ) [protected]
template<class TYPE>
virtual bool PropertyWithValue< TYPE >::setValue ( const TYPE &  value ) [pure virtual]
template<class TYPE >
void PropertyWithValue< TYPE >::toStream ( std::ostream out ) const [inline, virtual]

value -> stream

Implementation of PropertyWithValue::toStream.

Implements Property.

Definition at line 316 of file Property.h.

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

value -> string

Implementation of PropertyWithValue::toString.

Implements Property.

Definition at line 306 of file Property.h.

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

explicit conversion

get the access to the storage

Definition at line 354 of file Property.h.

{ useReadHandler() ; return *m_value ; }

Member Data Documentation

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

owner of the storage

Definition at line 216 of file Property.h.

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

the actual property value

Definition at line 214 of file Property.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Mon Jan 30 2012 13:53:20 for Gaudi Framework, version v23r0 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004