00001 // $Id: Tuples.h,v 1.5 2006/03/09 10:28:15 hmd Exp $ 00002 // ============================================================================ 00003 #ifndef GAUDIALG_TUPLES_H 00004 #define GAUDIALG_TUPLES_H 1 00005 // ============================================================================ 00006 // GaudiAlg 00007 // ============================================================================ 00008 #include "GaudiAlg/TupleObj.h" 00009 // ============================================================================ 00010 00018 namespace Tuples 00019 { 00020 class Tuple ; 00021 class TupleObj ; 00022 } // end of namespace Tuples 00023 00024 00025 namespace Tuples 00026 { 00034 template <class OBJECT,class ARGUMENT=double, class RESULT=double> 00035 class _TupAdapter : public std::unary_function<ARGUMENT,RESULT> 00036 { 00037 public: 00038 // constructor 00039 _TupAdapter ( OBJECT object ) : m_object ( object ) {} ; 00040 public: 00042 inline RESULT operator() ( ARGUMENT arg ) const 00043 { return m_object( arg ) ; } 00044 private: 00045 // default constructor is disabled 00046 _TupAdapter(); 00047 private: 00048 OBJECT m_object ; 00049 }; 00050 00080 template <class OBJECT> 00081 inline _TupAdapter<OBJECT,double,double> useFun ( OBJECT object ) 00082 { return _TupAdapter<OBJECT,double,double>( object ) ; } 00083 00084 } // end of namespace Tuples 00085 00086 #endif // GAUDIALG_TUPLES_H