Jpp
JEquationParameters.hh
Go to the documentation of this file.
1 #ifndef __JLANG__JEQUATIONPARAMETERS__
2 #define __JLANG__JEQUATIONPARAMETERS__
3 
4 #include <string>
5 
6 
7 /**
8  * \author mdejong
9  */
10 
11 namespace JLANG {}
12 namespace JPP { using namespace JLANG; }
13 
14 namespace JLANG {
15 
16 
17  /**
18  * Simple data structure to support I/O of equations (see class JLANG::JEquation).
19  */
21  public:
22  /**
23  * Default constructor.
24  */
26  {
27  this->sep = "=";
28  this->eol = "\n\r;";
29  this->div = "./";
30  this->skip = "#";
31  this->left = '(';
32  this->right = ')';
33  this->ws = " \t\n\v\f\r";
34  }
35 
36 
37  /**
38  * Constructor.
39  *
40  * \param sep separator characters
41  * \param eol end of line characters
42  * \param div division characters
43  * \param skip skip line characters
44  * \param left left bracket
45  * \param right right bracket
46  * \param ws white space characters
47  */
48  JEquationParameters(const std::string& sep,
49  const std::string& eol,
50  const std::string& div,
51  const std::string& skip,
52  const char left = '(',
53  const char right = ')',
54  const std::string& ws = " \t\n\v\f\r")
55  {
56  this->sep = sep;
57  this->eol = eol;
58  this->div = div;
59  this->skip = skip;
60  this->left = left;
61  this->right = right;
62  this->ws = ws;
63  }
64 
65 
66  /**
67  * Get equation parameters.
68  *
69  * \return equation parameters
70  */
72  {
73  return *this;
74  }
75 
76 
77  /**
78  * Set equation parameters.
79  *
80  * \param buffer equation parameters
81  */
83  {
84  static_cast<JEquationParameters&>(*this) = buffer;
85  }
86 
87 
88  /**
89  * Get default separator character.
90  *
91  * \return separator between parameter and its value
92  */
93  const char getDefaultSeparator() const
94  {
95  if (sep.empty())
96  return '=';
97  else
98  return sep[0];
99  }
100 
101 
102  /**
103  * Get separator characters.
104  *
105  * \return separator between parameter and its value
106  */
107  const std::string& getSeparator() const
108  {
109  return sep;
110  }
111 
112 
113  /**
114  * Set separator character(s).
115  *
116  * \param sep separator between parameter and its value
117  */
118  void setSeparator(const std::string& sep)
119  {
120  this->sep = sep;
121  }
122 
123 
124  /**
125  * Get default end of line character.
126  *
127  * \return end of line character
128  */
129  const char getDefaultEndOfLine() const
130  {
131  if (eol.empty())
132  return '\n';
133  else
134  return eol[0];
135  }
136 
137 
138  /**
139  * Get preferred end of line character.
140  *
141  * \param index index
142  * \return end of line character
143  */
144  const char getPreferredEndOfLine(const unsigned int index) const
145  {
146  if (eol.empty())
147  return '\n';
148  else if (index < eol.size())
149  return eol[index];
150  else
151  return eol[0];
152  }
153 
154 
155  /**
156  * Get end of line characters.
157  *
158  * \return end of line characters
159  */
160  const std::string& getEndOfLine() const
161  {
162  return eol;
163  }
164 
165 
166  /**
167  * Set end of line characters.
168  *
169  * \param eol end of line character
170  */
171  void setEndOfLine(const std::string& eol)
172  {
173  this->eol = eol;
174  }
175 
176 
177  /**
178  * Get default division character.
179  *
180  * \return division character
181  */
182  const char getDefaultDivision() const
183  {
184  if (div.empty())
185  return '.';
186  else
187  return div[0];
188  }
189 
190 
191  /**
192  * Get division characters.
193  *
194  * \return division characters
195  */
196  const std::string& getDivision() const
197  {
198  return div;
199  }
200 
201 
202  /**
203  * Set division characters.
204  *
205  * \param div division characters
206  */
207  void setDivision(const std::string& div)
208  {
209  this->div = div;
210  }
211 
212 
213  /**
214  * Get default skip line character.
215  *
216  * \return skip line character
217  */
218  const char getDefaultSkipLine() const
219  {
220  if (skip.empty())
221  return '#';
222  else
223  return skip[0];
224  }
225 
226 
227  /**
228  * Get skip line characters.
229  *
230  * \return skip line characters
231  */
232  const std::string& getSkipLine() const
233  {
234  return skip;
235  }
236 
237 
238  /**
239  * Set skip line characters.
240  *
241  * \param skip skip line characters
242  */
243  void setSkipLine(const std::string& skip)
244  {
245  this->skip = skip;
246  }
247 
248 
249  /**
250  * Set brackets.
251  *
252  * \param left left bracket
253  * \param right right bracket
254  */
255  void setBrackets(const char left, const char right)
256  {
257  this->left = left;
258  this->right = right;
259  }
260 
261 
262  /**
263  * Get left bracket.
264  *
265  * \return left bracket
266  */
267  char getLeftBracket() const
268  {
269  return left;
270  }
271 
272 
273  /**
274  * Get right bracket.
275  *
276  * \return right bracket
277  */
278  char getRightBracket() const
279  {
280  return right;
281  }
282 
283 
284  /**
285  * Get default white space character.
286  *
287  * \return white space character
288  */
289  const char getDefaultWhiteSpace() const
290  {
291  if (ws.empty())
292  return ' ';
293  else
294  return ws[0];
295  }
296 
297 
298  /**
299  * Get white space characters.
300  *
301  * \return white space characters
302  */
303  const std::string& getWhiteSpace() const
304  {
305  return ws;
306  }
307 
308 
309  /**
310  * Set white space characters.
311  *
312  * \param ws white space characters
313  */
314  void setWhiteSpace(const std::string& ws)
315  {
316  this->ws = ws;
317  }
318 
319 
320  /**
321  * Join equation parameters.
322  *
323  * \param value equation parameters
324  */
326  {
327  using namespace std;
328 
329  for (string::const_iterator i = value.sep.begin(); i != value.sep.end(); ++i) {
330  if (!isSeparator(*i)) {
331  sep += *i;
332  }
333  }
334 
335  for (string::const_iterator i = value.eol.begin(); i != value.eol.end(); ++i) {
336  if (!isEndOfLine(*i)) {
337  eol += *i;
338  }
339  }
340 
341  for (string::const_iterator i = value.div.begin(); i != value.div.end(); ++i) {
342  if (!isDivision(*i)) {
343  div += *i;
344  }
345  }
346 
347  for (string::const_iterator i = value.skip.begin(); i != value.skip.end(); ++i) {
348  if (!isSkipLine(*i)) {
349  skip += *i;
350  }
351  }
352 
353  for (string::const_iterator i = value.ws.begin(); i != value.ws.end(); ++i) {
354  if (!isWhiteSpace(*i)) {
355  ws += *i;
356  }
357  }
358 
359  return *this;
360  }
361 
362 
363  /**
364  * Test for separator character.
365  *
366  * \param c character
367  * \result true if separator; else false
368  */
369  inline bool isSeparator(const char c) const
370  {
371  return sep .find(c) != std::string::npos;
372  }
373 
374 
375  /**
376  * Test for end of line character.
377  *
378  * \param c character
379  * \result true if end of line; else false
380  */
381  inline bool isEndOfLine (const char c) const { return eol .find(c) != std::string::npos; }
382 
383 
384  /**
385  * Test for division character.
386  *
387  * \param c character
388  * \result true if division; else false
389  */
390  inline bool isDivision(const char c) const
391  {
392  return div .find(c) != std::string::npos;
393  }
394 
395 
396  /**
397  * Test for skip line character.
398  *
399  * \param c character
400  * \result true if skip line; else false
401  */
402  inline bool isSkipLine(const char c) const
403  {
404  return skip.find(c) != std::string::npos;
405  }
406 
407 
408  /**
409  * Test for left bracket character.
410  *
411  * \param c character
412  * \result true if left bracket; else false
413  */
414  inline bool isLeftBracket(const char c) const
415  {
416  return c == left;
417  }
418 
419 
420  /**
421  * Test for right bracket character.
422  *
423  * \param c character
424  * \result true if right bracket; else false
425  */
426  inline bool isRightBracket(const char c) const
427  {
428  return c == right;
429  }
430 
431 
432  /**
433  * Test for white space character.
434  *
435  * \param c character
436  * \result true if white space; else false
437  */
438  inline bool isWhiteSpace(const char c) const
439  {
440  return ws .find(c) != std::string::npos;
441  }
442 
443  protected:
444  std::string sep;
445  std::string eol;
446  std::string div;
447  std::string skip;
448  char left;
449  char right;
450  std::string ws;
451  };
452 }
453 
454 #endif
JLANG::JEquationParameters::skip
std::string skip
Definition: JEquationParameters.hh:447
JLANG::JEquationParameters::isSkipLine
bool isSkipLine(const char c) const
Test for skip line character.
Definition: JEquationParameters.hh:402
JLANG::JEquationParameters::JEquationParameters
JEquationParameters(const std::string &sep, const std::string &eol, const std::string &div, const std::string &skip, const char left='(', const char right=')', const std::string &ws=" \t\n\v\f\r")
Constructor.
Definition: JEquationParameters.hh:48
JLANG::JEquationParameters::sep
std::string sep
Definition: JEquationParameters.hh:444
JLANG::JEquationParameters::getDefaultSkipLine
const char getDefaultSkipLine() const
Get default skip line character.
Definition: JEquationParameters.hh:218
JLANG::JEquationParameters::setEquationParameters
void setEquationParameters(const JEquationParameters &buffer)
Set equation parameters.
Definition: JEquationParameters.hh:82
JLANG::JEquationParameters::left
char left
Definition: JEquationParameters.hh:448
JLANG::JEquationParameters::isEndOfLine
bool isEndOfLine(const char c) const
Test for end of line character.
Definition: JEquationParameters.hh:381
JLANG::JEquationParameters::isSeparator
bool isSeparator(const char c) const
Test for separator character.
Definition: JEquationParameters.hh:369
JLANG::JEquationParameters::isDivision
bool isDivision(const char c) const
Test for division character.
Definition: JEquationParameters.hh:390
JLANG::JEquationParameters::JEquationParameters
JEquationParameters()
Default constructor.
Definition: JEquationParameters.hh:25
JLANG::JEquationParameters::setSkipLine
void setSkipLine(const std::string &skip)
Set skip line characters.
Definition: JEquationParameters.hh:243
JLANG::JEquationParameters::setSeparator
void setSeparator(const std::string &sep)
Set separator character(s).
Definition: JEquationParameters.hh:118
JLANG::JEquationParameters::getDefaultWhiteSpace
const char getDefaultWhiteSpace() const
Get default white space character.
Definition: JEquationParameters.hh:289
JLANG::JEquationParameters::join
JEquationParameters & join(const JEquationParameters &value)
Join equation parameters.
Definition: JEquationParameters.hh:325
JLANG::JEquationParameters::getDivision
const std::string & getDivision() const
Get division characters.
Definition: JEquationParameters.hh:196
JLANG::JEquationParameters::setEndOfLine
void setEndOfLine(const std::string &eol)
Set end of line characters.
Definition: JEquationParameters.hh:171
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JLANG::JEquationParameters::getSkipLine
const std::string & getSkipLine() const
Get skip line characters.
Definition: JEquationParameters.hh:232
JLANG::JEquationParameters::getDefaultEndOfLine
const char getDefaultEndOfLine() const
Get default end of line character.
Definition: JEquationParameters.hh:129
JLANG::JEquationParameters::setDivision
void setDivision(const std::string &div)
Set division characters.
Definition: JEquationParameters.hh:207
JLANG::JEquationParameters::setBrackets
void setBrackets(const char left, const char right)
Set brackets.
Definition: JEquationParameters.hh:255
JLANG::JEquationParameters::isWhiteSpace
bool isWhiteSpace(const char c) const
Test for white space character.
Definition: JEquationParameters.hh:438
JLANG::JEquationParameters::getEndOfLine
const std::string & getEndOfLine() const
Get end of line characters.
Definition: JEquationParameters.hh:160
JLANG::JEquationParameters::getWhiteSpace
const std::string & getWhiteSpace() const
Get white space characters.
Definition: JEquationParameters.hh:303
JLANG::JEquationParameters::isRightBracket
bool isRightBracket(const char c) const
Test for right bracket character.
Definition: JEquationParameters.hh:426
JLANG::JEquationParameters::setWhiteSpace
void setWhiteSpace(const std::string &ws)
Set white space characters.
Definition: JEquationParameters.hh:314
JLANG::JEquationParameters::getDefaultSeparator
const char getDefaultSeparator() const
Get default separator character.
Definition: JEquationParameters.hh:93
JLANG::JEquationParameters::eol
std::string eol
Definition: JEquationParameters.hh:445
JLANG::JEquationParameters
Simple data structure to support I/O of equations (see class JLANG::JEquation).
Definition: JEquationParameters.hh:20
std
Definition: jaanetDictionary.h:36
JLANG::JEquationParameters::ws
std::string ws
Definition: JEquationParameters.hh:450
JLANG::JEquationParameters::getLeftBracket
char getLeftBracket() const
Get left bracket.
Definition: JEquationParameters.hh:267
JLANG::JEquationParameters::getDefaultDivision
const char getDefaultDivision() const
Get default division character.
Definition: JEquationParameters.hh:182
JLANG
Auxiliary classes and methods for language specific functionality.
Definition: JAbstractClass.hh:10
JLANG::JEquationParameters::isLeftBracket
bool isLeftBracket(const char c) const
Test for left bracket character.
Definition: JEquationParameters.hh:414
JLANG::JEquationParameters::getPreferredEndOfLine
const char getPreferredEndOfLine(const unsigned int index) const
Get preferred end of line character.
Definition: JEquationParameters.hh:144
JLANG::JEquationParameters::getSeparator
const std::string & getSeparator() const
Get separator characters.
Definition: JEquationParameters.hh:107
JLANG::JEquationParameters::right
char right
Definition: JEquationParameters.hh:449
JLANG::JEquationParameters::getRightBracket
char getRightBracket() const
Get right bracket.
Definition: JEquationParameters.hh:278
JLANG::JEquationParameters::div
std::string div
Definition: JEquationParameters.hh:446
JLANG::JEquationParameters::getEquationParameters
const JEquationParameters & getEquationParameters() const
Get equation parameters.
Definition: JEquationParameters.hh:71