casadi 3.6.4__cp35-none-manylinux1_i686.whl → 3.6.6__cp35-none-manylinux1_i686.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi.py +984 -500
  3. casadi/cbc +0 -0
  4. casadi/clp +0 -0
  5. casadi/cmake/casadi-config-version.cmake +1 -1
  6. casadi/include/casadi/casadi.i +33 -15
  7. casadi/include/casadi/casadi_c.h +2 -0
  8. casadi/include/casadi/config.h +8 -8
  9. casadi/include/casadi/core/casadi_common.hpp +1 -0
  10. casadi/include/casadi/core/casadi_misc.hpp +13 -0
  11. casadi/include/casadi/core/casadi_types.hpp +3 -2
  12. casadi/include/casadi/core/code_generator.hpp +59 -2
  13. casadi/include/casadi/core/core.hpp +1 -0
  14. casadi/include/casadi/core/generic_expression.hpp +1 -1
  15. casadi/include/casadi/core/generic_type.hpp +25 -1
  16. casadi/include/casadi/core/global_options.hpp +2 -0
  17. casadi/include/casadi/core/matrix_decl.hpp +15 -0
  18. casadi/include/casadi/core/mx.hpp +13 -3
  19. casadi/include/casadi/core/optistack.hpp +23 -0
  20. casadi/include/casadi/core/runtime/casadi_nlp.hpp +133 -6
  21. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  22. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  23. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  24. casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
  25. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  26. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +11 -1
  27. casadi/include/casadi/core/serializing_stream.hpp +2 -2
  28. casadi/include/casadi/core/sparsity.hpp +12 -3
  29. casadi/include/casadi/core/tools.hpp +67 -0
  30. casadi/include/casadi/doc.i +2283 -1491
  31. casadi/include/casadi/doc_merged.i +1522 -1065
  32. casadi/include/casadi/mem.h +1 -0
  33. casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
  34. casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
  35. casadi/include/coin-or/IpAlgTypes.hpp +64 -0
  36. casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
  37. casadi/include/coin-or/IpBlas.hpp +426 -0
  38. casadi/include/coin-or/IpCachedResults.hpp +897 -0
  39. casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
  40. casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
  41. casadi/include/coin-or/IpCompoundVector.hpp +395 -0
  42. casadi/include/coin-or/IpConvCheck.hpp +97 -0
  43. casadi/include/coin-or/IpDebug.hpp +167 -0
  44. casadi/include/coin-or/IpDenseVector.hpp +626 -0
  45. casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
  46. casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
  47. casadi/include/coin-or/IpException.hpp +156 -0
  48. casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
  49. casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
  50. casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
  51. casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
  52. casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
  53. casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
  54. casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
  55. casadi/include/coin-or/IpIpoptData.hpp +966 -0
  56. casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
  57. casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
  58. casadi/include/coin-or/IpIteratesVector.hpp +840 -0
  59. casadi/include/coin-or/IpIterationOutput.hpp +78 -0
  60. casadi/include/coin-or/IpJournalist.hpp +573 -0
  61. casadi/include/coin-or/IpLapack.hpp +227 -0
  62. casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
  63. casadi/include/coin-or/IpLineSearch.hpp +106 -0
  64. casadi/include/coin-or/IpLinearSolvers.h +46 -0
  65. casadi/include/coin-or/IpMatrix.hpp +434 -0
  66. casadi/include/coin-or/IpMuUpdate.hpp +77 -0
  67. casadi/include/coin-or/IpNLP.hpp +306 -0
  68. casadi/include/coin-or/IpNLPScaling.hpp +582 -0
  69. casadi/include/coin-or/IpObserver.hpp +422 -0
  70. casadi/include/coin-or/IpOptionsList.hpp +412 -0
  71. casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
  72. casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
  73. casadi/include/coin-or/IpReferenced.hpp +262 -0
  74. casadi/include/coin-or/IpRegOptions.hpp +1152 -0
  75. casadi/include/coin-or/IpReturnCodes.h +23 -0
  76. casadi/include/coin-or/IpReturnCodes.hpp +18 -0
  77. casadi/include/coin-or/IpReturnCodes.inc +71 -0
  78. casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
  79. casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
  80. casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
  81. casadi/include/coin-or/IpSmartPtr.hpp +865 -0
  82. casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
  83. casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
  84. casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
  85. casadi/include/coin-or/IpStdCInterface.h +428 -0
  86. casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
  87. casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
  88. casadi/include/coin-or/IpSymMatrix.hpp +167 -0
  89. casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
  90. casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
  91. casadi/include/coin-or/IpTNLP.hpp +820 -0
  92. casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
  93. casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
  94. casadi/include/coin-or/IpTaggedObject.hpp +128 -0
  95. casadi/include/coin-or/IpTimedTask.hpp +218 -0
  96. casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
  97. casadi/include/coin-or/IpTripletHelper.hpp +308 -0
  98. casadi/include/coin-or/IpTypes.h +81 -0
  99. casadi/include/coin-or/IpTypes.hpp +30 -0
  100. casadi/include/coin-or/IpUtils.hpp +166 -0
  101. casadi/include/coin-or/IpVector.hpp +892 -0
  102. casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
  103. casadi/include/coin-or/IpoptConfig.h +45 -0
  104. casadi/include/coin-or/SensAlgorithm.hpp +114 -0
  105. casadi/include/coin-or/SensApplication.hpp +188 -0
  106. casadi/include/coin-or/SensBacksolver.hpp +36 -0
  107. casadi/include/coin-or/SensMeasurement.hpp +56 -0
  108. casadi/include/coin-or/SensPCalculator.hpp +137 -0
  109. casadi/include/coin-or/SensRegOp.hpp +21 -0
  110. casadi/include/coin-or/SensSchurData.hpp +182 -0
  111. casadi/include/coin-or/SensSchurDriver.hpp +118 -0
  112. casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
  113. casadi/include/coin-or/SensStepCalc.hpp +85 -0
  114. casadi/include/coin-or/SensUtils.hpp +63 -0
  115. casadi/include/coin-or/metis/defs.h +161 -0
  116. casadi/include/coin-or/metis/macros.h +143 -0
  117. casadi/include/coin-or/metis/metis.h +37 -0
  118. casadi/include/coin-or/metis/proto.h +505 -0
  119. casadi/include/coin-or/metis/rename.h +418 -0
  120. casadi/include/coin-or/metis/struct.h +251 -0
  121. casadi/include/coin-or/mumps/dmumps_c.h +142 -0
  122. casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
  123. casadi/include/coin-or/mumps/mumps_compat.h +27 -0
  124. casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
  125. casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
  126. casadi/include/daqp/api.h +46 -0
  127. casadi/include/daqp/auxiliary.h +29 -0
  128. casadi/include/daqp/bnb.h +32 -0
  129. casadi/include/daqp/codegen.h +18 -0
  130. casadi/include/daqp/constants.h +92 -0
  131. casadi/include/daqp/daqp.h +22 -0
  132. casadi/include/daqp/daqp_prox.h +18 -0
  133. casadi/include/daqp/factorization.h +18 -0
  134. casadi/include/daqp/types.h +161 -0
  135. casadi/include/daqp/utils.h +44 -0
  136. casadi/include/licenses/daqp-external/LICENSE +21 -0
  137. casadi/include/osqp/constants.h +2 -3
  138. casadi/include/osqp/version.h +9 -0
  139. casadi/lib/libtinyxml2.a +0 -0
  140. casadi/libCbc.so +0 -0
  141. casadi/libCbc.so.3 +0 -0
  142. casadi/libCbc.so.3.10.11 +0 -0
  143. casadi/libCbcSolver.so +0 -0
  144. casadi/libCbcSolver.so.3 +0 -0
  145. casadi/libCbcSolver.so.3.10.11 +0 -0
  146. casadi/libCgl.so +0 -0
  147. casadi/libCgl.so.1 +0 -0
  148. casadi/libCgl.so.1.10.8 +0 -0
  149. casadi/libClp.so +0 -0
  150. casadi/libClp.so.1 +0 -0
  151. casadi/libClp.so.1.14.9 +0 -0
  152. casadi/libClpSolver.so +0 -0
  153. casadi/libClpSolver.so.1 +0 -0
  154. casadi/libClpSolver.so.1.14.9 +0 -0
  155. casadi/libCoinUtils.so +0 -0
  156. casadi/libCoinUtils.so.3 +0 -0
  157. casadi/libCoinUtils.so.3.11.10 +0 -0
  158. casadi/libOsi.so +0 -0
  159. casadi/libOsi.so.1 +0 -0
  160. casadi/libOsi.so.1.13.9 +0 -0
  161. casadi/libOsiCbc.so +0 -0
  162. casadi/libOsiCbc.so.3 +0 -0
  163. casadi/libOsiCbc.so.3.10.11 +0 -0
  164. casadi/libOsiClp.so +0 -0
  165. casadi/libOsiClp.so.1 +0 -0
  166. casadi/libOsiClp.so.1.14.9 +0 -0
  167. casadi/libOsiCommonTests.so +0 -0
  168. casadi/libOsiCommonTests.so.1 +0 -0
  169. casadi/libOsiCommonTests.so.1.13.9 +0 -0
  170. casadi/libbonmin.so +0 -0
  171. casadi/libbonmin.so.4 +0 -0
  172. casadi/libbonmin.so.4.8.9 +0 -0
  173. casadi/libcasadi.so +0 -0
  174. casadi/libcasadi.so.3.7 +0 -0
  175. casadi/libcasadi_conic_cbc.so +0 -0
  176. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  177. casadi/libcasadi_conic_clp.so +0 -0
  178. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  179. casadi/libcasadi_conic_daqp.so +0 -0
  180. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  181. casadi/libcasadi_conic_gurobi.so +0 -0
  182. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  183. casadi/libcasadi_conic_ipqp.so +0 -0
  184. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  185. casadi/libcasadi_conic_nlpsol.so +0 -0
  186. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  187. casadi/libcasadi_conic_osqp.so +0 -0
  188. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  189. casadi/libcasadi_conic_qpoases.so +0 -0
  190. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  191. casadi/libcasadi_conic_qrqp.so +0 -0
  192. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  193. casadi/libcasadi_conic_superscs.so +0 -0
  194. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  195. casadi/libcasadi_integrator_collocation.so +0 -0
  196. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  197. casadi/libcasadi_integrator_cvodes.so +0 -0
  198. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  199. casadi/libcasadi_integrator_idas.so +0 -0
  200. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  201. casadi/libcasadi_integrator_rk.so +0 -0
  202. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  203. casadi/libcasadi_nlpsol_ampl.so +0 -0
  204. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  205. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  206. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  207. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  208. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  209. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  210. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  211. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  212. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  213. casadi/libcasadi_nlpsol_knitro.so +0 -0
  214. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  215. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  216. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  217. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  218. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  219. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  220. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  221. casadi/libcasadi_nlpsol_snopt.so +0 -0
  222. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  223. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  224. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  225. casadi/libcasadi_nlpsol_worhp.so +0 -0
  226. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  227. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  228. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  229. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  230. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  231. casadi/libcasadi_rootfinder_newton.so +0 -0
  232. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  233. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  234. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  235. casadi/libcasadi_sundials_common.so +0 -0
  236. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  237. casadi/libdaqp.so +0 -0
  238. casadi/libdaqpstat.a +0 -0
  239. casadi/libindirect.a +0 -0
  240. casadi/libipopt.so +0 -0
  241. casadi/libipopt.so.3 +0 -0
  242. casadi/libipopt.so.3.14.11 +0 -0
  243. casadi/liblinsys.a +0 -0
  244. casadi/libmatlab_ipc.so +0 -0
  245. casadi/libosqp.a +0 -0
  246. casadi/libosqp.so +0 -0
  247. casadi/libqdldl.a +0 -0
  248. casadi/libsipopt.so +0 -0
  249. casadi/libsipopt.so.3 +0 -0
  250. casadi/libsipopt.so.3.14.11 +0 -0
  251. casadi/libsuperscs.a +0 -0
  252. casadi/pkgconfig/casadi.pc +1 -1
  253. casadi/tools/__init__.py +4 -0
  254. casadi/tools/bounds.py +3 -3
  255. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/METADATA +12 -4
  256. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/RECORD +257 -140
  257. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/WHEEL +0 -0
@@ -0,0 +1,412 @@
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
+ // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
+
7
+ #ifndef __IPOPTLIST_HPP__
8
+ #define __IPOPTLIST_HPP__
9
+
10
+ #include "IpUtils.hpp"
11
+ #include "IpReferenced.hpp"
12
+ #include "IpException.hpp"
13
+ #include "IpRegOptions.hpp"
14
+
15
+ #include <iostream>
16
+ #include <map>
17
+
18
+ namespace Ipopt
19
+ {
20
+ /** Exception that can be used to indicate errors with options */
21
+ DECLARE_STD_EXCEPTION(OPTION_INVALID);
22
+
23
+ /** This class stores a list of user set options.
24
+ *
25
+ * Each option is
26
+ * identified by a case-insensitive keyword (tag). Its value is
27
+ * stored internally as a string (always lower case), but for
28
+ * convenience set and get methods are provided to obtain Index and
29
+ * Number type values. For each keyword we also keep track of how
30
+ * often the value of an option has been requested by a get method.
31
+ */
32
+ class IPOPTLIB_EXPORT OptionsList: public ReferencedObject
33
+ {
34
+ /** Class for storing the value and counter for each option in OptionsList. */
35
+ class OptionValue
36
+ {
37
+ public:
38
+ /**@name Constructors/Destructors */
39
+ ///@{
40
+ /** Default constructor */
41
+ OptionValue()
42
+ : initialized_(false)
43
+ { }
44
+
45
+ /** Constructor given the value */
46
+ OptionValue(
47
+ const std::string& value,
48
+ bool allow_clobber,
49
+ bool dont_print
50
+ )
51
+ : value_(value),
52
+ counter_(0),
53
+ initialized_(true),
54
+ allow_clobber_(allow_clobber),
55
+ dont_print_(dont_print)
56
+ {
57
+ }
58
+
59
+ /** Copy Constructor */
60
+ OptionValue(
61
+ const OptionValue& copy
62
+ )
63
+ : value_(copy.value_),
64
+ counter_(copy.counter_),
65
+ initialized_(copy.initialized_),
66
+ allow_clobber_(copy.allow_clobber_),
67
+ dont_print_(copy.dont_print_)
68
+ {
69
+ }
70
+
71
+ /** Equals operator */
72
+ OptionValue& operator=(
73
+ const OptionValue& copy
74
+ )
75
+ {
76
+ value_ = copy.value_;
77
+ counter_ = copy.counter_;
78
+ initialized_ = copy.initialized_;
79
+ allow_clobber_ = copy.allow_clobber_;
80
+ dont_print_ = copy.dont_print_;
81
+ return *this;
82
+ }
83
+
84
+ /** Default Destructor */
85
+ ~OptionValue()
86
+ { }
87
+ ///@}
88
+
89
+ /** Method for retrieving the value of an option.
90
+ *
91
+ * Calling this method will increase the counter by one.
92
+ */
93
+ std::string GetValue() const
94
+ {
95
+ DBG_ASSERT(initialized_);
96
+ counter_++;
97
+ return value_;
98
+ }
99
+
100
+ /** Method for retrieving the value without increasing the counter */
101
+ std::string Value() const
102
+ {
103
+ DBG_ASSERT(initialized_);
104
+ return value_;
105
+ }
106
+
107
+ /** Method for accessing current value of the request counter */
108
+ Index Counter() const
109
+ {
110
+ DBG_ASSERT(initialized_);
111
+ return counter_;
112
+ }
113
+
114
+ /** True if the option can be overwritten */
115
+ bool AllowClobber() const
116
+ {
117
+ DBG_ASSERT(initialized_);
118
+ return allow_clobber_;
119
+ }
120
+
121
+ /** True if this option is not to show up in the
122
+ * print_user_options output
123
+ */
124
+ bool DontPrint() const
125
+ {
126
+ DBG_ASSERT(initialized_);
127
+ return dont_print_;
128
+ }
129
+
130
+ private:
131
+ /** Value for this option */
132
+ std::string value_;
133
+
134
+ /** Counter for requests */
135
+ mutable Index counter_;
136
+
137
+ /** for debugging */
138
+ bool initialized_;
139
+
140
+ /** True if the option can be overwritten */
141
+ bool allow_clobber_;
142
+
143
+ /** True if this option is not to show up in the
144
+ * print_user_options output */
145
+ bool dont_print_;
146
+ };
147
+
148
+ public:
149
+ /**@name Constructors/Destructors */
150
+ ///@{
151
+ OptionsList(
152
+ SmartPtr<RegisteredOptions> reg_options,
153
+ SmartPtr<Journalist> jnlst
154
+ )
155
+ : reg_options_(reg_options),
156
+ jnlst_(jnlst)
157
+ { }
158
+
159
+ OptionsList()
160
+ { }
161
+
162
+ /** Copy Constructor */
163
+ OptionsList(
164
+ const OptionsList& copy
165
+ )
166
+ : options_(copy.options_), // copy all the option strings and values
167
+ reg_options_(copy.reg_options_) // copy the registered options pointer
168
+ { }
169
+
170
+ /** Destructor */
171
+ virtual ~OptionsList()
172
+ { }
173
+
174
+ /** Default Assignment Operator */
175
+ virtual OptionsList& operator=(
176
+ const OptionsList& source
177
+ )
178
+ {
179
+ options_ = source.options_;
180
+ reg_options_ = source.reg_options_;
181
+ jnlst_ = source.jnlst_;
182
+ return *this;
183
+ }
184
+ ///@}
185
+
186
+ /** Method for clearing all previously set options */
187
+ virtual void clear()
188
+ {
189
+ options_.clear();
190
+ }
191
+
192
+ /** @name Get / Set Methods */
193
+ ///@{
194
+ virtual void SetRegisteredOptions(
195
+ const SmartPtr<RegisteredOptions> reg_options
196
+ )
197
+ {
198
+ reg_options_ = reg_options;
199
+ }
200
+
201
+ virtual void SetJournalist(
202
+ const SmartPtr<Journalist> jnlst
203
+ )
204
+ {
205
+ jnlst_ = jnlst;
206
+ }
207
+
208
+ ///@}
209
+ /** @name Methods for setting options */
210
+ ///@{
211
+ virtual bool SetStringValue(
212
+ const std::string& tag,
213
+ const std::string& value,
214
+ bool allow_clobber = true,
215
+ bool dont_print = false
216
+ );
217
+
218
+ virtual bool SetNumericValue(
219
+ const std::string& tag,
220
+ Number value,
221
+ bool allow_clobber = true,
222
+ bool dont_print = false
223
+ );
224
+
225
+ virtual bool SetIntegerValue(
226
+ const std::string& tag,
227
+ Index value,
228
+ bool allow_clobber = true,
229
+ bool dont_print = false
230
+ );
231
+
232
+ /// @since 3.14.1
233
+ virtual bool SetBoolValue(
234
+ const std::string& tag,
235
+ bool value,
236
+ bool allow_clobber = true,
237
+ bool dont_print = false
238
+ )
239
+ {
240
+ return SetStringValue(tag, value ? "yes" : "no", allow_clobber, dont_print);
241
+ }
242
+
243
+ /// Resets an option to its default value, if clobber is allowed.
244
+ ///
245
+ /// @return Whether value has been unset, i.e., value was set before and clobber was allowed.
246
+ /// @since 3.14.2
247
+ virtual bool UnsetValue(
248
+ const std::string& tag
249
+ );
250
+ ///@}
251
+
252
+ /** @name Methods for setting options only if they have not been set before */
253
+ ///@{
254
+ virtual bool SetStringValueIfUnset(
255
+ const std::string& tag,
256
+ const std::string& value,
257
+ bool allow_clobber = true,
258
+ bool dont_print = false
259
+ );
260
+
261
+ virtual bool SetNumericValueIfUnset(
262
+ const std::string& tag,
263
+ Number value,
264
+ bool allow_clobber = true,
265
+ bool dont_print = false
266
+ );
267
+
268
+ virtual bool SetIntegerValueIfUnset(
269
+ const std::string& tag,
270
+ Index value,
271
+ bool allow_clobber = true,
272
+ bool dont_print = false
273
+ );
274
+
275
+ /// @since 3.14.1
276
+ virtual bool SetBoolValueIfUnset(
277
+ const std::string& tag,
278
+ bool value,
279
+ bool allow_clobber = true,
280
+ bool dont_print = false
281
+ )
282
+ {
283
+ return SetStringValueIfUnset(tag, value ? "yes" : "no", allow_clobber, dont_print);
284
+ }
285
+ ///@}
286
+
287
+ /** @name Methods for retrieving values from the options list.
288
+ *
289
+ * If a tag is not found, the methods return false, and value is set
290
+ * to the default value defined in the registered options. */
291
+ ///@{
292
+ virtual bool GetStringValue(
293
+ const std::string& tag,
294
+ std::string& value,
295
+ const std::string& prefix
296
+ ) const;
297
+
298
+ virtual bool GetEnumValue(
299
+ const std::string& tag,
300
+ Index& value,
301
+ const std::string& prefix
302
+ ) const;
303
+
304
+ virtual bool GetBoolValue(
305
+ const std::string& tag,
306
+ bool& value,
307
+ const std::string& prefix
308
+ ) const;
309
+
310
+ virtual bool GetNumericValue(
311
+ const std::string& tag,
312
+ Number& value,
313
+ const std::string& prefix
314
+ ) const;
315
+
316
+ virtual bool GetIntegerValue(
317
+ const std::string& tag,
318
+ Index& value,
319
+ const std::string& prefix
320
+ ) const;
321
+ ///@}
322
+
323
+ /** Get a string with the list of all options (tag, value, counter) */
324
+ virtual void PrintList(
325
+ std::string& list
326
+ ) const;
327
+
328
+ /** Get a string with the list of all options set by the user
329
+ * (tag, value, used/notused).
330
+ *
331
+ * Here, options with dont_print flag set to true are not printed.
332
+ */
333
+ virtual void PrintUserOptions(
334
+ std::string& list
335
+ ) const;
336
+
337
+ /** Read options from the stream is.
338
+ *
339
+ * @return false, if an error was encountered
340
+ */
341
+ virtual bool ReadFromStream(
342
+ const Journalist& jnlst,
343
+ std::istream& is,
344
+ bool allow_clobber = false
345
+ );
346
+
347
+ private:
348
+ /**@name Default Compiler Generated Methods
349
+ * (Hidden to avoid implicit creation/calling).
350
+ *
351
+ * These methods are not implemented and
352
+ * we do not want the compiler to implement
353
+ * them for us, so we declare them private
354
+ * and do not define them. This ensures that
355
+ * they will not be implicitly created/called.
356
+ */
357
+ ///@{
358
+ /** Default Constructor */
359
+ // OptionsList();
360
+ ///@}
361
+ /** map for storing the options */
362
+ std::map<std::string, OptionValue> options_;
363
+
364
+ /** list of all the registered options to validate against */
365
+ SmartPtr<RegisteredOptions> reg_options_;
366
+
367
+ /** Journalist for writing error messages, etc. */
368
+ SmartPtr<Journalist> jnlst_;
369
+
370
+ /** auxiliary method for converting sting to all lower-case letters */
371
+ const std::string& lowercase(
372
+ const std::string& tag
373
+ ) const;
374
+
375
+ /** auxiliary method for finding the value for a tag in the options list
376
+ *
377
+ * This method first looks for the concatenated
378
+ * string prefix+tag (if prefix is not ""), and if this is not
379
+ * found, it looks for tag. The return value is true iff
380
+ * prefix+tag or tag is found. In that case, the corresponding
381
+ * string value is copied into value.
382
+ */
383
+ bool find_tag(
384
+ const std::string& tag,
385
+ const std::string& prefix,
386
+ std::string& value
387
+ ) const;
388
+
389
+ /** tells whether or not we can clobber a particular option
390
+ *
391
+ * @return true, if the option does not already exist or if the option exists but is set to allow_clobber
392
+ */
393
+ bool will_allow_clobber(
394
+ const std::string& tag
395
+ ) const;
396
+
397
+ /** read the next token from stream is
398
+ *
399
+ * @return false, if EOF was reached before a tokens was encountered
400
+ */
401
+ bool readnexttoken(
402
+ std::istream& is,
403
+ std::string& token
404
+ );
405
+
406
+ /** auxiliary string set by lowercase method */
407
+ mutable std::string lowercase_buffer_;
408
+ };
409
+
410
+ } // namespace Ipopt
411
+
412
+ #endif