5 #ifndef GAUDIKERNEL_PROPERTY_H
6 #define GAUDIKERNEL_PROPERTY_H
57 virtual bool assign (
const Property& source ) = 0 ;
75 void declareReadHandler
76 (
void ( HT::* MF ) (
Property& ) , HT* instance ) ;
78 void declareUpdateHandler
79 (
void ( HT::* MF ) (
Property& ) , HT* instance ) ;
81 virtual void useReadHandler ()
const ;
83 virtual bool useUpdateHandler () ;
88 virtual Property* clone ()
const = 0 ;
93 m_documentation = documentation; }
146 template <
class TYPE>
152 typedef Gaudi::Utils::PropertyTypeTraits<TYPE>
Traits ;
154 typedef typename Traits::PVal
PVal ;
166 template <
class OTHER>
175 template <
class OTHER>
181 operator const TYPE& ()
const {
return value() ;}
183 inline const TYPE&
value()
const ;
204 Traits::assign(*
m_value, value);
223 template <
class TYPE>
229 :
Property (
typeid( TYPE ) , name )
236 template <
class TYPE>
241 , m_own ( right.
m_own )
243 m_value = Traits::copy ( right.
value() , m_own ) ;
248 template <
class TYPE>
249 template <
class OTHER>
254 , m_own ( right.
m_own )
256 m_value = Traits::copy ( right.
value() , m_own ) ;
261 template <
class TYPE>
264 Traits::dele ( m_value , m_own ) ;
270 template <
class TYPE>
274 if ( !setValue ( value ) )
281 template <
class TYPE>
288 if ( 0 != p ) {
return setValue ( p->
value() ) ; }
290 return this->fromString( source.
toString() ).isSuccess() ;
295 template <
class TYPE>
300 return dest.
assign( *
this ) ;
305 template <
class TYPE>
315 template <
class TYPE>
325 template <
class TYPE>
342 return this->
value() ;
353 template <
class TYPE>
356 { useReadHandler() ;
return *m_value ; }
360 template <
class TYPE>
373 template <
class TYPE>
374 template <
class OTHER>
395 template<
class TYPE,
class VERIFIER>
404 typename Gaudi::Utils::PropertyTypeTraits<TYPE>::PVal value ,
418 bool set(
const TYPE&
value ) ;
422 template <
class OTHER,
class OTHERVERIFIER>
426 template <
class OTHER>
447 template <
class TYPE,
class VERIFIER>
452 if ( !m_verifier.isValid( &value ) ) {
return false ; }
454 this->i_set( value ) ;
456 return this->useUpdateHandler() ;
461 template <
class TYPE,
class VERIFIER>
471 template <
class TYPE,
class VERIFIER>
472 template <
class OTHER>
482 template <
class TYPE,
class VERIFIER>
483 template <
class OTHER,
class OTHERVERIFIER>
504 template <
class TYPE,
class VERIFIER = BoundedVerifier<TYPE> >
510 typedef Gaudi::Utils::PropertyTypeTraits<TYPE>
Traits ;
516 ( VERIFIER
verifier = VERIFIER() ) ;
519 (
const TYPE& value ,
527 template <
class OTHER>
538 template <
class OTHER>
545 template <
class TYPE,
class VERIFIER>
547 ( VERIFIER verifier )
549 (
"" , Traits::new_() , true , verifier )
554 template <
class TYPE,
class VERIFIER>
556 (
const TYPE& value ,
559 (
"" , Traits::new_(value) , true , verifier )
564 template <
class TYPE,
class VERIFIER>
570 ( name , Traits::new_(value) , true , verifier )
575 template <
class TYPE,
class VERIFIER>
576 template <
class OTHER>
580 ( right.
name() , Traits::new_( right.
value() ) ,
true , VERIFIER() )
585 template <
class TYPE,
class VERIFIER>
594 template <
class TYPE,
class VERIFIER>
599 template <
class TYPE,
class VERIFIER>
607 template <
class TYPE,
class VERIFIER>
618 template <
class TYPE,
class VERIFIER>
619 template <
class OTHER>
640 template<
class TYPE,
class VERIFIER = NullVerifier<TYPE> >
649 VERIFIER verifier = VERIFIER() ) ;
659 template <
class OTHER>
668 template <
class TYPE,
class VERIFIER>
678 template <
class TYPE,
class VERIFIER>
687 template <
class TYPE,
class VERIFIER>
692 template <
class TYPE,
class VERIFIER>
700 template <
class TYPE,
class VERIFIER>
711 template <
class TYPE,
class VERIFIER>
712 template <
class OTHER>
850 return destination.
assign( *
this );
910 return destination.
assign( *
this );
1081 template <
class TYPE>
1110 template <
class TYPE>
1168 template <
unsigned N>
1172 const char (&value)[
N] ,
1177 return setProperty ( component , name , val , doc ) ;
1210 template <
class TYPE>
1299 template <
class TYPE>
1306 const Property*
property = &value ;
1307 return setProperty ( component , name , property , doc ) ;
1330 template <
class TYPE>
1340 return setProperty ( property , name , value , doc ) ;
1392 template <
unsigned N>
1396 const char (&value)[N] ,
1401 return setProperty ( component , name , val , doc ) ;
1480 template <
class TYPE>
1488 const Property*
property = &value ;
1489 return setProperty ( component , name , property , doc ) ;
1499 #endif // GAUDIKERNEL_PROPERTY_H