00001 // ============================================================================= 00002 #ifndef GAUDIGSL_IEQSOLVER_H 00003 #define GAUDIGSL_IEQSOLVER_H 1 00004 // Include files 00005 // from STL 00006 #include <vector> 00007 #include <string> 00008 00009 // from Gaudi 00010 #include "GaudiKernel/IAlgTool.h" 00011 00012 // forward declarations 00013 namespace Genfun 00014 { 00015 class AbsFunction; 00016 class Argument; 00017 } 00018 00023 static const InterfaceID IID_IEqSolver("IEqSolver", 1 , 0); 00024 00032 class IEqSolver : virtual public IAlgTool 00033 00034 { 00035 00036 public: 00038 typedef Genfun::AbsFunction GenFunc ; 00040 typedef std::vector<const GenFunc*> Equations ; 00042 typedef Genfun::Argument Arg ; 00043 00044 public: 00046 static const InterfaceID& interfaceID() { return IID_IEqSolver; } 00047 00049 00058 virtual StatusCode solver( const Equations& equations , 00059 Arg& solution ) const = 0 ; 00060 00061 00062 protected: 00063 00064 private: 00065 }; 00066 00067 #endif // GAUDIGSL_IEQSOLVER_H