Ariles
methods_deprecated.h
Go to the documentation of this file.
1 /**
2  @file
3  @author Alexander Sherikov
4  @copyright 2014-2017 INRIA. Licensed under the Apache License, Version 2.0.
5  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
6  @copyright 2017-2020 Alexander Sherikov, Licensed under the Apache License, Version 2.0.
7  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
8 
9  @brief Inclusion of this file results in generation of functions which
10  read and write entries 'ARILES_ENTRIES' defined in the including
11  header from / to a configuration file.
12 */
13 
14 
15 #ifdef ARILES_ENABLED
16 
17 # ifndef ARILES_DOXYGEN_PROCESSING
18 
19 public:
20 # ifdef ARILES_ENTRIES
21 
22 # ifndef ARILES_AUTO_DEFAULTS
23 void arilesVisit(const ariles::defaults::Visitor & /*visitor*/, const ariles::defaults::Visitor::Parameters & /*param*/)
24 {
26  this->setDefaults();
27 }
28 # endif
29 
30 # ifndef ARILES_NO_AUTO_FINALIZE
31 void arilesFinalize()
32 {
33  ariles::apply<ariles::postprocess::Visitor>(*this);
34 }
35 # endif
36 
37 
38 std::size_t getNumberOfEntries() const
39 {
41  ariles::count::Visitor visitor;
42  ariles::apply(visitor, *this);
43  return (visitor.counter_);
44 }
45 
46 
47 template <class t_Other>
48 bool arilesCompare(const t_Other &other, const ariles::compare::Visitor::Parameters &param) const
49 {
52  ariles::apply(visitor, *this, other, arilesDefaultID(), param);
53  return (visitor.equal_);
54 }
55 
56 
57 # else // ARILES_ENTRIES
58 
59 virtual void arilesVisit(ariles::count::Visitor &visitor, const ariles::count::Visitor::Parameters & /*param*/) const
60 {
62  visitor.counter_ += this->getNumberOfEntries();
63 }
64 
65 virtual void arilesVisit(ariles::read::Visitor &visitor, const ariles::read::Visitor::Parameters &param)
66 {
68  readConfigEntries(visitor, param);
69 }
70 
71 virtual void arilesVisit(ariles::write::Visitor &visitor, const ariles::write::Visitor::Parameters &param) const
72 {
74  writeConfigEntries(visitor, param);
75 }
76 
77 virtual void arilesVisit(
78  const ariles::postprocess::Visitor & /*visitor*/,
80 {
82  arilesFinalize();
83 }
84 
85 virtual void arilesVisit(
86  const ariles::defaults::Visitor & /*visitor*/,
87  const ariles::defaults::Visitor::Parameters & /*param*/)
88 {
90  setDefaults();
91 }
92 
93 template <class t_Other>
94 void arilesVisit(
95  const ariles::compare::Visitor & /*visitor*/,
96  const t_Other &other,
97  const ariles::compare::Visitor::Parameters &param) const
98 {
100  if (false == arilesCompare(other, param))
101  {
102  ARILES_THROW("Comparison failed in " + arilesDefaultID());
103  }
104 }
105 
106 # endif
107 # endif
108 
109 
110 public:
111 # ifdef ARILES_CONFIGURABLE_FLAGS
112 virtual const ariles::ConfigurableFlags &getArilesConfigurableFlags() const
113 {
114  static ariles::ConfigurableFlags parameters(ARILES_CONFIGURABLE_FLAGS);
115  return (parameters);
116 }
117 # endif
118 virtual const ariles::ConfigurableFlags &arilesGetParameters(const ariles::read::Visitor &) const
119 {
120  return (this->getArilesConfigurableFlags());
121 }
122 virtual const ariles::ConfigurableFlags &arilesGetParameters(const ariles::write::Visitor &) const
123 {
124  return (this->getArilesConfigurableFlags());
125 }
126 
127 
128 # ifdef ARILES_CONSTRUCTOR
129 /**
130  * Define constructors for the given class.
131  */
132 ARILES_CONSTRUCTOR(ariles::ReaderBase &reader, const std::string &node_name)
133 {
135  readConfig(reader, node_name, this->getArilesConfigurableFlags());
136 }
137 ARILES_CONSTRUCTOR(ariles::ReaderBase &reader, const std::string &node_name, const ariles::ConfigurableFlags &param)
138 {
140  readConfig(reader, node_name, param);
141 }
142 
143 
144 explicit ARILES_CONSTRUCTOR(ariles::ReaderBase &reader)
145 {
147  readConfig(reader, this->getArilesConfigurableFlags());
148 }
149 explicit ARILES_CONSTRUCTOR(ariles::ReaderBase &reader, const ariles::ReaderBase::Parameters &param)
150 {
152  readConfig(reader, param);
153 }
154 # endif
155 
156 
158 
159 void readConfig(ariles::ReaderBase &reader, const std::string &node_name, const ariles::ConfigurableFlags &param)
160 {
162  ariles::apply(reader, *this, node_name, param);
163 }
164 
165 void readConfig(ariles::ReaderBase &reader, const char *node_name, const ariles::ConfigurableFlags &param)
166 {
168  ariles::apply(reader, *this, node_name, param);
169 }
170 
171 
173 
174 void writeConfig(ariles::WriterBase &writer, const std::string &node_name, const ariles::ConfigurableFlags &param) const
175 {
177  ariles::apply(writer, *this, node_name, param);
178 }
179 
180 void writeConfig(ariles::WriterBase &writer, const char *node_name, const ariles::ConfigurableFlags &param) const
181 {
183  ariles::apply(writer, *this, node_name, param);
184 }
185 
186 
187 # ifdef ARILES_SECTION_ID
188 const std::string &getConfigSectionID() const
189 {
190  return (arilesDefaultID());
191 }
192 # else
193 const std::string &arilesDefaultID() const
194 {
195  return (getConfigSectionID());
196 }
197 # endif
198 
199 
200 #endif // ARILES_ENABLED
201 
202 #undef ARILES_CONSTRUCTOR
203 #undef ARILES_AUTO_DEFAULTS
204 #undef ARILES_NO_AUTO_FINALIZE
205 #undef ARILES_CONFIGURABLE_FLAGS
206 #undef ARILES_SECTION_ID
void apply(t_Visitor &visitor, t_Ariles &ariles_class, const std::string &name, const typename t_Visitor::Parameters &param, ARILES_IS_BASE_ENABLER(ariles::visitor::Visitor, t_Visitor))
Definition: common.h:96
#define ARILES_TRACE_FUNCTION
Definition: trace.h:118
void readConfig(ariles::ReaderBase &reader, const ariles::ConfigurableFlags &param)
Read configuration (assuming the configuration node to be in the root).
Definition: ariles.h:129
void writeConfig(t_WriterInitializer &writer_initializer) const
Definition: ariles.h:244
std::size_t counter_
Definition: count.h:31