Dev Essential
Loading...
Searching...
No Matches
map_transformation.h
Go to the documentation of this file.
1
14
15#ifndef HEADER_MAP_TRANSFORMATION_H
16#define HEADER_MAP_TRANSFORMATION_H
17
18#include <a_util/result.h>
19#include <a_util/strings.h>
20#include <a_util/xml.h>
21
22namespace ddl {
23namespace mapping {
24
26
31public:
37 MapTransformationBase(MapConfiguration* config, const std::string& name);
38
43
47 const std::string& getName() const;
48
52 bool isValid() const;
53
57 virtual bool isEqual(const MapTransformationBase& other) const = 0;
58
62 virtual MapTransformationBase* clone() const = 0;
63
68 virtual double evaluate(double value) const = 0;
69
70private:
79 static a_util::result::Result createFromDOM(MapConfiguration* config,
80 const a_util::xml::DOMElement& dom_element,
81 MapTransformationBase*& destination);
82
92 static a_util::result::Result create(MapConfiguration* config,
93 const std::string& name,
94 const std::string& type,
95 MapTransformationBase*& destination);
96
103 a_util::result::Result writeToDOM(a_util::xml::DOMElement& dom_element) const;
104
110 a_util::result::Result setTypeFromDDL();
111
112protected:
114 friend class MapConfiguration;
115 MapConfiguration* _config;
116 std::string _name;
117 bool _is_valid;
119};
120
124public:
130 MapPolynomTransformation(MapConfiguration* config, const std::string& name);
131
135 double getA() const;
136
140 double getB() const;
141
145 double getC() const;
146
150 double getD() const;
151
155 double getE() const;
156
163 a_util::result::Result setCoefficients(const std::string coefs[5]);
164
168 bool isEqual(const MapTransformationBase& other) const;
169
173 double evaluate(double value) const;
174
177
178private:
185 a_util::result::Result loadFromDom(const a_util::xml::DOMElement& dom_element);
186
193 a_util::result::Result writeToDOM(a_util::xml::DOMElement& dom_element) const;
194
195private:
197 friend class MapTransformationBase;
198 double _a, _b, _c, _d, _e;
200};
201
203class MapEnumTableTransformation : public MapTransformationBase {
204public: // types
205#if defined(__GNUC__) && ((__GNUC__ == 5) && (__GNUC_MINOR__ == 2))
206#pragma GCC diagnostic push
207#pragma GCC diagnostic ignored "-Wattributes"
208#endif // defined(__GNUC__) && ((__GNUC__ == 5) && (__GNUC_MINOR__ == 2))
209
211 using ConversionMap = std::map<int64_t, int64_t>;
212
213#if defined(__GNUC__) && ((__GNUC__ == 5) && (__GNUC_MINOR__ == 2))
214#pragma GCC diagnostic pop
215#endif // defined(__GNUC__) && ((__GNUC__ == 5) && (__GNUC_MINOR__ == 2))
216
217public:
223 MapEnumTableTransformation(MapConfiguration* config, const std::string& name);
224
228 const std::string& getEnumFrom() const;
229
233 const std::string& getEnumTo() const;
234
242 a_util::result::Result setEnums(const std::string& enum_from, const std::string& enum_to);
243
247 int64_t getDefault() const;
248
252 std::string getDefaultStr() const;
253
259 a_util::result::Result setDefault(const std::string& default_value);
260
265
269 const std::map<std::string, std::string>& getConversionsStr() const;
270
277 a_util::result::Result addConversion(const std::string& from, const std::string& to);
278
284 a_util::result::Result removeConversion(const std::string& from);
285
289 bool isEqual(const MapTransformationBase& other) const;
290
294 double evaluate(double value) const;
295
297 MapTransformationBase* clone() const;
298
299private:
306 a_util::result::Result loadFromDom(const a_util::xml::DOMElement& dom_element);
307
314 a_util::result::Result writeToDOM(a_util::xml::DOMElement& dom_element) const;
315
324 a_util::result::Result convertValuesWithDDL();
325
332 a_util::result::Result setEnumsStr(const std::string& enum_from, const std::string& enum_to);
333
339 a_util::result::Result setDefaultStr(const std::string& default_value);
340
347 a_util::result::Result addConversionStr(const std::string& from, const std::string& to);
348
349private:
350 friend class MapTransformationBase;
351 std::string _enum_from;
352 std::string _enum_to;
353 std::string _default_value;
354 typedef std::map<std::string, std::string> MapStrConversionList;
355 MapStrConversionList _conversions;
356 int64_t _default_int;
357 ConversionMap _conversions_int;
358};
359
361typedef std::vector<MapTransformationBase*> MapTransformationList;
362
363} // namespace mapping
364} // namespace ddl
365
366#endif // HEADER_MAP_TRANSFORMATION_H
Definition result_type_decl.h:34
Representation for an element in the DOM.
Definition dom.h:47
Definition map_configuration.h:36
a_util::result::Result setEnums(const std::string &enum_from, const std::string &enum_to)
a_util::result::Result removeConversion(const std::string &from)
bool isEqual(const MapTransformationBase &other) const
MapEnumTableTransformation(MapConfiguration *config, const std::string &name)
const std::string & getEnumFrom() const
a_util::result::Result setDefault(const std::string &default_value)
std::map< int64_t, int64_t > ConversionMap
Alias for the conversion map.
Definition map_transformation.h:211
MapTransformationBase * clone() const
nodoc
a_util::result::Result addConversion(const std::string &from, const std::string &to)
const std::map< std::string, std::string > & getConversionsStr() const
const ConversionMap & getConversions() const
const std::string & getEnumTo() const
double evaluate(double value) const
bool isEqual(const MapTransformationBase &other) const
MapPolynomTransformation(MapConfiguration *config, const std::string &name)
double evaluate(double value) const
a_util::result::Result setCoefficients(const std::string coefs[5])
MapTransformationBase * clone() const
nodoc
const std::string & getName() const
virtual bool isEqual(const MapTransformationBase &other) const =0
MapTransformationBase(MapConfiguration *config, const std::string &name)
virtual double evaluate(double value) const =0
virtual MapTransformationBase * clone() const =0
definition of the mapping namespace
Definition ddl.h:50
std::vector< MapTransformationBase * > MapTransformationList
Public composite types used in the mapping::dd namespace.
Definition map_transformation.h:361
definition of the ddl namespace
Definition codec.h:21