00001 // Copyright (C) 2004, 2006 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpAlgBuilder.hpp 759 2006-07-07 03:07:08Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-09-29 00008 00009 #ifndef __IPALGBUILDER_HPP__ 00010 #define __IPALGBUILDER_HPP__ 00011 00012 #include "IpIpoptAlg.hpp" 00013 #include "IpReferenced.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00026 class AlgorithmBuilder : public ReferencedObject 00027 { 00028 public: 00032 AlgorithmBuilder() 00033 {} 00034 00036 virtual ~AlgorithmBuilder() 00037 {} 00038 00040 00043 virtual void BuildIpoptObjects(const Journalist& jnlst, 00044 const OptionsList& options, 00045 const std::string& prefix, 00046 const SmartPtr<NLP>& nlp, 00047 SmartPtr<IpoptNLP>& ip_nlp, 00048 SmartPtr<IpoptData>& ip_data, 00049 SmartPtr<IpoptCalculatedQuantities>& ip_cq); 00050 00051 virtual SmartPtr<IpoptAlgorithm> BuildBasicAlgorithm(const Journalist& jnlst, 00052 const OptionsList& options, 00053 const std::string& prefix); 00055 00059 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00061 00062 private: 00072 // AlgorithmBuilder(); 00073 00075 AlgorithmBuilder(const AlgorithmBuilder&); 00076 00078 void operator=(const AlgorithmBuilder&); 00080 00081 }; 00082 } // namespace Ipopt 00083 00084 #endif