Ipopt 3.11.9
Loading...
Searching...
No Matches
IpOptionsList.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2006 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// $Id: IpOptionsList.hpp 1861 2010-12-21 21:34:47Z andreasw $
6//
7// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9#ifndef __IPOPTLIST_HPP__
10#define __IPOPTLIST_HPP__
11
12#include "IpUtils.hpp"
13#include "IpReferenced.hpp"
14#include "IpException.hpp"
15#include "IpRegOptions.hpp"
16
17#include <iostream>
18#include <map>
19
20namespace Ipopt
21{
23 DECLARE_STD_EXCEPTION(OPTION_INVALID);
24
33 {
37 {
38 public:
43 :
44 initialized_(false)
45 {}
46
48 OptionValue(std::string value, bool allow_clobber, bool dont_print)
49 :
50 value_(value),
51 counter_(0),
52 initialized_(true),
53 allow_clobber_(allow_clobber),
54 dont_print_(dont_print)
55 {}
56
59 :
60 value_(copy.value_),
61 counter_(copy.counter_),
65 {}
66
68 void operator=(const OptionValue& copy)
69 {
70 value_=copy.value_;
71 counter_=copy.counter_;
75 }
76
79 {}
81
84 std::string GetValue() const
85 {
87 counter_++;
88 return value_;
89 }
90
93 std::string Value() const
94 {
96 return value_;
97 }
98
101 {
103 return counter_;
104 }
105
107 bool AllowClobber() const
108 {
110 return allow_clobber_;
111 }
112
115 bool DontPrint() const
116 {
118 return dont_print_;
119 }
120
121 private:
123 std::string value_;
124
127
130
133
137 };
138
139 public:
143 : reg_options_(reg_options), jnlst_(jnlst)
144 {}
145
147 {}
148
151 {
152 // copy all the option strings and values
153 options_ = copy.options_;
154 // copy the registered options pointer
156 }
157
159 virtual ~OptionsList()
160 {}
161
163 virtual void operator=(const OptionsList& source)
164 {
165 options_ = source.options_;
166 reg_options_ = source.reg_options_;
167 jnlst_ = source.jnlst_;
168 }
170
172 virtual void clear()
173 {
174 options_.clear();
175 }
176
179 virtual void SetRegisteredOptions(const SmartPtr<RegisteredOptions> reg_options)
180 {
181 reg_options_ = reg_options;
182 }
183 virtual void SetJournalist(const SmartPtr<Journalist> jnlst)
184 {
185 jnlst_ = jnlst;
186 }
188
190 virtual bool SetStringValue(const std::string& tag, const std::string& value,
191 bool allow_clobber = true, bool dont_print = false);
192 virtual bool SetNumericValue(const std::string& tag, Number value,
193 bool allow_clobber = true, bool dont_print = false);
194 virtual bool SetIntegerValue(const std::string& tag, Index value,
195 bool allow_clobber = true, bool dont_print = false);
197
201 virtual bool SetStringValueIfUnset(const std::string& tag, const std::string& value,
202 bool allow_clobber = true, bool dont_print = false);
203 virtual bool SetNumericValueIfUnset(const std::string& tag, Number value,
204 bool allow_clobber = true, bool dont_print = false);
205 virtual bool SetIntegerValueIfUnset(const std::string& tag, Index value,
206 bool allow_clobber = true, bool dont_print = false);
208
213 virtual bool GetStringValue(const std::string& tag, std::string& value,
214 const std::string& prefix) const;
215 virtual bool GetEnumValue(const std::string& tag, Index& value,
216 const std::string& prefix) const;
217 virtual bool GetBoolValue(const std::string& tag, bool& value,
218 const std::string& prefix) const;
219 virtual bool GetNumericValue(const std::string& tag, Number& value,
220 const std::string& prefix) const;
221 virtual bool GetIntegerValue(const std::string& tag, Index& value,
222 const std::string& prefix) const;
224
226 virtual void PrintList(std::string& list) const;
227
231 virtual void PrintUserOptions(std::string& list) const;
232
235 virtual bool ReadFromStream(const Journalist& jnlst, std::istream& is);
236
237 private:
247 // OptionsList();
248
250
252 std::map< std::string, OptionValue > options_;
253
256
259
262 const std::string& lowercase(const std::string tag) const;
263
270 bool find_tag(const std::string& tag, const std::string& prefix,
271 std::string& value) const;
272
277 bool will_allow_clobber(const std::string& tag) const;
278
281 bool readnexttoken(std::istream& is, std::string& token);
282
284 mutable std::string lowercase_buffer_;
285 };
286
287} // namespace Ipopt
288
289#endif
#define DBG_ASSERT(test)
Definition IpDebug.hpp:38
#define DECLARE_STD_EXCEPTION(__except_type)
Class responsible for all message output.
Class for storing the value and counter for each option in OptionsList.
std::string GetValue() const
Method for retrieving the value of an option.
bool dont_print_
True if this option is not to show up in the print_user_options output.
bool DontPrint() const
True if this option is not to show up in the print_user_options output.
bool AllowClobber() const
True if the option can be overwritten.
Index counter_
Counter for requests.
std::string value_
Value for this option.
OptionValue(const OptionValue &copy)
Copy Constructor.
std::string Value() const
Method for retrieving the value without increasing the counter.
Index Counter() const
Method for accessing current value of the request counter.
bool allow_clobber_
True if the option can be overwritten.
OptionValue()
Default constructor (needed for the map)
~OptionValue()
Default Destructor.
void operator=(const OptionValue &copy)
Equals operator.
OptionValue(std::string value, bool allow_clobber, bool dont_print)
Constructor given the value.
This class stores a list of user set options.
std::string lowercase_buffer_
auxilliary string set by lowercase method
virtual bool GetBoolValue(const std::string &tag, bool &value, const std::string &prefix) const
virtual bool SetNumericValueIfUnset(const std::string &tag, Number value, bool allow_clobber=true, bool dont_print=false)
virtual ~OptionsList()
Default destructor.
std::map< std::string, OptionValue > options_
Default Constructor.
virtual bool GetStringValue(const std::string &tag, std::string &value, const std::string &prefix) const
virtual bool GetNumericValue(const std::string &tag, Number &value, const std::string &prefix) const
virtual void PrintUserOptions(std::string &list) const
Get a string with the list of all options set by the user (tag, value, use/notused).
virtual bool GetIntegerValue(const std::string &tag, Index &value, const std::string &prefix) const
bool readnexttoken(std::istream &is, std::string &token)
read the next token from stream is.
virtual void SetJournalist(const SmartPtr< Journalist > jnlst)
bool find_tag(const std::string &tag, const std::string &prefix, std::string &value) const
auxilliary method for finding the value for a tag in the options list.
virtual bool SetIntegerValue(const std::string &tag, Index value, bool allow_clobber=true, bool dont_print=false)
virtual void SetRegisteredOptions(const SmartPtr< RegisteredOptions > reg_options)
virtual void operator=(const OptionsList &source)
Overloaded Equals Operator.
virtual bool GetEnumValue(const std::string &tag, Index &value, const std::string &prefix) const
bool will_allow_clobber(const std::string &tag) const
tells whether or not we can clobber a particular option.
const std::string & lowercase(const std::string tag) const
auxilliary method for converting sting to all lower-case letters
virtual bool SetIntegerValueIfUnset(const std::string &tag, Index value, bool allow_clobber=true, bool dont_print=false)
virtual bool SetStringValue(const std::string &tag, const std::string &value, bool allow_clobber=true, bool dont_print=false)
virtual void PrintList(std::string &list) const
Get a string with the list of all options (tag, value, counter)
virtual bool ReadFromStream(const Journalist &jnlst, std::istream &is)
Read options from the stream is.
OptionsList(SmartPtr< RegisteredOptions > reg_options, SmartPtr< Journalist > jnlst)
SmartPtr< RegisteredOptions > reg_options_
list of all the registered options to validate against
virtual bool SetNumericValue(const std::string &tag, Number value, bool allow_clobber=true, bool dont_print=false)
virtual void clear()
Method for clearing all previously set options.
virtual bool SetStringValueIfUnset(const std::string &tag, const std::string &value, bool allow_clobber=true, bool dont_print=false)
SmartPtr< Journalist > jnlst_
Journalist for writing error messages, etc.
OptionsList(const OptionsList &copy)
Copy Constructor.
ReferencedObject class.
Template class for Smart Pointers.
int Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:19
double Number
Type of all numbers.
Definition IpTypes.hpp:17