Gaudi Framework, version v23r4

Home   Generated: Mon Sep 17 2012

PropertyVerifier.h

Go to the documentation of this file.
00001 // $Id:$
00002 // ============================================================================
00003 #ifndef GAUDIKERNEL_PROPERTYVERIFIER_H
00004 #define GAUDIKERNEL_PROPERTYVERIFIER_H
00005 // ============================================================================
00006 // Include files
00007 // ============================================================================
00008 // STD& STL
00009 // ============================================================================
00010 #include <algorithm>
00011 // ============================================================================
00012 // GaudiKernel
00013 // ============================================================================
00014 #include "GaudiKernel/PropertyTypeTraits.h"
00015 // ============================================================================
00016 /**********************************************************
00017  * Verifier Classes are used with Property Classes to
00018  * provide validation criteria for Property values.
00019  *
00020  **********************************************************/
00026 template< class T >
00027 class PropertyVerifier
00028 {
00029 public:
00030   // Data and Function Members for Collaborators.
00031   // Constructors - compiler generated default is ok
00032   // Destructor
00033   virtual ~PropertyVerifier() { }
00034 
00035   // Copy Constructor - compiler generated default is ok
00036   // Assignment Operator - compiler generated default is ok
00037   // Accessor members (const)
00038   virtual bool isValid ( const typename Gaudi::Utils::PropertyTypeTraits<T>::CVal value ) const = 0;
00039 };
00040 // ============================================================================
00047 template< class T >
00048 class NullVerifier : public PropertyVerifier< T >
00049 {
00050 public:
00051   // Data and Function Members for Collaborators.
00052   // Constructors - compiler generated default is ok
00053   // Destructor
00054   virtual ~NullVerifier() { }
00055 
00056   // Copy Constructor - compiler generated default is ok
00057   // Assignment Operator - compiler generated default is ok
00058 
00059   // Accessor members (const)
00060   virtual bool isValid
00061   ( const typename Gaudi::Utils::PropertyTypeTraits<T>::CVal /* val */ ) const
00062   { return true; }
00063 
00064 };
00065 // ============================================================================
00069 template< class T >
00070 class BoundedVerifier : public PropertyVerifier< T > {     // Abstract derived class
00071 public:
00073   BoundedVerifier()
00074     : m_hasLowerBound( false ),
00075       m_hasUpperBound( false ),
00076       m_lowerBound( T() ),
00077       m_upperBound( T() ) { }
00078 
00080   virtual ~BoundedVerifier() { }
00081 
00083   bool isValid( const typename Gaudi::Utils::PropertyTypeTraits<T>::CVal value ) const
00084   {
00085     return
00086       (( m_hasLowerBound && ( *value < m_lowerBound ) ) ? false : true ) &&
00087       (( m_hasUpperBound && ( *value > m_upperBound ) ) ? false : true )  ;
00088   }
00089 
00091   bool        hasLower() const { return m_hasLowerBound; }
00093   bool        hasUpper() const { return m_hasUpperBound; }
00095   const T&    lower()    const { return m_lowerBound; }
00097   const T&    upper()    const { return m_upperBound; }
00098 
00100   void setLower( const T& value ) { m_hasLowerBound = true; m_lowerBound = value; }
00102   void setUpper( const T& value ) { m_hasUpperBound = true; m_upperBound = value; }
00104   void clearLower()  { m_hasLowerBound = false; m_lowerBound = T(); }
00106   void clearUpper()  { m_hasUpperBound = false; m_upperBound = T(); }
00107 
00109   void setBounds( const T& lower, const T& upper)
00110   {
00111     setLower( lower );
00112     setUpper( upper );
00113   }
00114 
00116   void clearBounds()
00117   {
00118     clearLower();
00119     clearUpper();
00120   }
00121 
00122 private:
00125   bool  m_hasLowerBound;
00126   bool  m_hasUpperBound;
00127   T     m_lowerBound;
00128   T     m_upperBound;
00129 };
00130 // ============================================================================
00131 
00132 // =======================================================================
00133 // The END
00134 // =======================================================================
00135 #endif    // GAUDIKERNEL_PROPERTYVERIFIER_H
00136 // =======================================================================
00137 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Mon Sep 17 2012 13:49:32 for Gaudi Framework, version v23r4 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004