source: src/Parameters/Parameter_impl.hpp@ 8819d2

Candidate_v1.6.1 ChemicalSpaceEvaluator Gui_displays_atomic_force_velocity PythonUI_with_named_parameters TremoloParser_IncreasedPrecision
Last change on this file since 8819d2 was 6d78b6f, checked in by Frederik Heber <frederik.heber@…>, 8 years ago

Action::outputAsPython() access Parameters via getAsStringUnvalidated().

  • otherwise this would not work for Geometry Actions as these cannot yet be validated on e.g. dry-run.
  • as python commands operate via string arguments anyway, this is nothing but an additional transformation.
  • TESTFIX: Removed XFAIL from dryrun store-session test, is working.
  • Property mode set to 100644
File size: 7.1 KB
Line 
1/*
2 * Parameter_impl.hpp
3 *
4 * Created on: Apr 16, 2012
5 * Author: ankele
6 */
7
8#ifndef PARAMETER_IMPL_HPP_
9#define PARAMETER_IMPL_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "Parameter.hpp"
17#include "ParameterExceptions.hpp"
18
19
20template<typename T>
21Parameter<T>::Parameter(const Parameter<T> &instance) :
22 ParameterInterface(instance.getName()),
23 value(instance.value.getValidator())
24{
25 value.set(instance.value.getUnvalidated());
26}
27
28/** Constructor for class Parameter.
29 *
30 */
31template<typename T>
32Parameter<T>::Parameter() :
33 ParameterInterface("__no_name__"),
34 value()
35{};
36
37/** Constructor for class Parameter.
38 *
39 */
40template<typename T>
41Parameter<T>::Parameter(const std::string &_name) :
42 ParameterInterface(_name),
43 value()
44{};
45
46/** Constructor for class Parameter.
47 *
48 * @param _name name of this parameter
49 * @param _value initial value to set
50 */
51template<typename T>
52Parameter<T>::Parameter(const std::string &_name, const T &_value) :
53 ParameterInterface(_name),
54 value()
55{
56 value.set(_value);
57};
58
59/** Constructor for class Parameter.
60 *
61 * @param _name name of this parameter
62 * @param _ValidRange valid range for this ContinuousValue
63 */
64template<typename T>
65Parameter<T>::Parameter(const std::string &_name, const Validator<T> &_Validator) :
66 ParameterInterface(_name),
67 value(_Validator)
68{};
69
70/** Constructor for class Parameter.
71 *
72 * @param _name name of this parameter
73 * @param _ValidRange valid range for this ContinuousValue
74 * @param _value initial value to set
75 */
76template<typename T>
77Parameter<T>::Parameter(const std::string &_name, const Validator<T> &_Validator, const T &_value) :
78 ParameterInterface(_name),
79 value(_Validator)
80{
81 value.set(_value);
82};
83
84/** Constructor for class Parameter.
85 *
86 * @param _name name of this parameter
87 * @param _ValidRange valid range for this ContinuousValue
88 */
89template<typename T>
90Parameter<T>::Parameter(const std::string &_name, const std::vector<T> &_ValidValues) :
91 ParameterInterface(_name),
92 value(_ValidValues)
93{};
94
95/** Constructor for class Parameter.
96 *
97 * @param _name name of this parameter
98 * @param _ValidRange valid range for this ContinuousValue
99 * @param _value initial value to set
100 */
101template<typename T>
102Parameter<T>::Parameter(const std::string &_name, const std::vector<T> &_ValidValues, const T &_value) :
103 ParameterInterface(_name),
104 value(_ValidValues)
105{
106 value.set(_value);
107};
108
109/** Constructor for class Parameter.
110 *
111 * @param _name name of this parameter
112 * @param _ValidRange valid range for this ContinuousValue
113 */
114template<typename T>
115Parameter<T>::Parameter(const std::string &_name, const range<T> &_ValidRange) :
116 ParameterInterface(_name),
117 value(_ValidRange)
118{};
119
120/** Constructor for class Parameter.
121 *
122 * @param _name name of this parameter
123 * @param _ValidRange valid range for this ContinuousValue
124 * @param _value initial value to set
125 */
126template<typename T>
127Parameter<T>::Parameter(const std::string &_name, const range<T> &_ValidRange, const T &_value) :
128 ParameterInterface(_name),
129 value(_ValidRange)
130{
131 value.set(_value);
132};
133
134/** Destructor for class Parameter.
135 *
136 */
137template<typename T>
138Parameter<T>::~Parameter()
139{};
140
141/** Catch call to value.isValidAsString() to add exception information.
142 *
143 * @param _value value to set to
144 */
145template<typename T>
146inline
147bool Parameter<T>::isValidAsString(const std::string &_value) const throw(ParameterValidatorException)
148{
149 try {
150 return value.isValidAsString(_value);
151 } catch(ParameterException &e) {
152 e << ParameterName(ParameterInterface::getName());
153 throw;
154 }
155}
156
157
158/** Catch call to value.getAsString() to add exception information.
159 *
160 * @return parameter value as string
161 */
162template<typename T>
163inline const std::string Parameter<T>::getAsString() const throw(ParameterValueException)
164{
165 try {
166 return value.getAsString();
167 } catch(ParameterException &e) {
168 e << ParameterName(ParameterInterface::getName());
169 throw;
170 }
171}
172
173/** Catch call to value.getAsStringUnvalidated() to add exception information.
174 *
175 * @return parameter value as string
176 */
177template<typename T>
178inline const std::string Parameter<T>::getAsStringUnvalidated() const throw(ParameterValueException)
179{
180 try {
181 return value.getAsStringUnvalidated();
182 } catch(ParameterException &e) {
183 e << ParameterName(ParameterInterface::getName());
184 throw;
185 }
186}
187
188/** Catch call to value.isValid() to add exception information.
189 *
190 * @return parameter value as string
191 */
192template<typename T>
193inline bool Parameter<T>::isValid(const T &_value) const throw(ParameterValidatorException)
194{
195 try {
196 return value.isValid(_value);
197 } catch(ParameterException &e) {
198 e << ParameterName(ParameterInterface::getName());
199 throw;
200 }
201}
202
203
204/** Catch call to value.getUnvalidated() to add exception information.
205 *
206 * @return parameter value as string
207 */
208template<typename T>
209inline const T & Parameter<T>::getUnvalidated() const throw(ParameterValueException)
210{
211 try {
212 return value.getUnvalidated();
213 } catch(ParameterException &e) {
214 e << ParameterName(ParameterInterface::getName());
215 throw;
216 }
217}
218
219/** Catch call to value.get() to add exception information.
220 *
221 * @return parameter value as string
222 */
223template<typename T>
224inline const T & Parameter<T>::get() const throw(ParameterValueException)
225{
226 try {
227 return value.get();
228 } catch(ParameterException &e) {
229 e << ParameterName(ParameterInterface::getName());
230 throw;
231 }
232}
233
234/** Catch call to value.set() to add exception information.
235 *
236 * @param _value value to set to
237 */
238template<typename T>
239inline void Parameter<T>::set(const T & _value) throw(ParameterValueException)
240{
241 try {
242 value.set(_value);
243 } catch(ParameterException &e) {
244 e << ParameterName(ParameterInterface::getName());
245 throw;
246 }
247}
248
249/** Catch call to value.set() to add exception information.
250 *
251 * @param _value value to set to
252 */
253template<typename T>
254inline void Parameter<T>::setAsString(const std::string &_value) throw(ParameterValueException)
255{
256 try {
257 value.setAsString(_value);
258 } catch(ParameterException &e) {
259 e << ParameterName(ParameterInterface::getName());
260 throw;
261 }
262}
263
264/** Compares this continuous value against another \a _instance.
265 *
266 * @param _instance other value to compare to
267 * @return true - if contained ContinuousValue and name are the same, false - else
268 */
269template <class T>
270bool Parameter<T>::operator==(const Parameter<T> &_instance) const throw(ParameterException)
271{
272 bool status = true;
273 try {
274 status = status &&
275 (getUnvalidated() == _instance.getUnvalidated());
276 status = status && (ParameterInterface::getName() == _instance.ParameterInterface::getName());
277 } catch(ParameterException &e) {
278 e << ParameterName(ParameterInterface::getName());
279 throw;
280 }
281 return status;
282}
283
284/** Creates a clone of this Parameter instance.
285 *
286 * @return cloned instance
287 */
288template<typename T>
289inline ParameterInterface* Parameter<T>::clone() const
290{
291 Parameter<T> *instance = new Parameter<T>(ParameterInterface::getName(), value.getValidator());
292 // do not use get, we do not check for validity here
293 if (value.isSet())
294 instance->set(value.getUnvalidated());
295 return instance;
296}
297
298
299#endif /* Parameter_IMPL_HPP_ */
Note: See TracBrowser for help on using the repository browser.