Diana  0.8.3
DianaNLPTaskFactory.hpp
00001 #ifndef DIANA_NLP_TASK_FACTORY_HPP
00002 #define DIANA_NLP_TASK_FACTORY_HPP
00003 
00004 #include <Diana/IDianaMain.hpp>
00005 #include <Diana/DianaParameter.hpp>
00006 #include <Diana/DianaModel.hpp>
00007 #include <Diana/IDianaDAESO.hpp>
00008 #include <Diana/DianaSensDAESO.hpp>
00009 #include <Diana/DianaOEDTask.hpp>
00010 
00011 namespace Diana {
00012 
00013   extern "C" {
00015     typedef Numeric::Solvers::NLPTasks::ICapeNLPTask* (*fCreateOEDTask)(Numeric::Solvers::NLPTasks::ICapeNLPTask* pParFitTask,
00016                                                                         Numeric::Solvers::Solver::ICapeNumericNLPSolver* pOptimizer,
00017                                                                         const Common::Parameter::CapeArrayParameterSpec& colDesignVars);
00018   }
00019 
00021   class DianaNLPTaskFactory : public Numeric::Solvers::NLPTasks::ICapeNumericNLPTaskFactory {
00022   public:
00028     Numeric::Solvers::NLPTasks::ICapeNLPTask* CreateOEDTask(Numeric::Solvers::NLPTasks::ICapeNLPTask* pParFitTask,
00029                                                                  Numeric::Solvers::Solver::ICapeNumericNLPSolver* pOptimizer,
00030                                                                  const Common::Parameter::CapeArrayParameterSpec& colDesignVars,
00031                                                                  Common::Types::CapeString strLibraryName)
00032       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00033              Common::Error::ECapeOutOfBounds, Common::Error::ECapeOutOfResources,
00034              Common::Error::ECapeFailedInitialisation, Common::Error::ECapeUser);
00035 
00038     Numeric::Solvers::NLPTasks::ICapeNLPTask* CreateNLPTask(Common::Types::CapeString strLibraryName)
00039       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00040              Common::Error::ECapeOutOfBounds, Common::Error::ECapeOutOfResources,
00041              Common::Error::ECapeFailedInitialisation, Common::Error::ECapeUser);
00042 
00044     void Shutdown()
00045       throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl);
00046   };
00047 }
00048 
00049 #endif