OpenTREP Logo  0.6.0
C++ Open Travel Request Parsing Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
OPENTREP_ParserHelperTypes.hpp
Go to the documentation of this file.
1 #ifndef __OPENTREP_PARSERHELPERTYPES_HPP
2 #define __OPENTREP_PARSERHELPERTYPES_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // STL
8 #include <string>
9 #include <sstream>
10 // OpenTREP
12 
13 namespace OPENTREP {
14 
15  // ////////////////////////////////////////////////////////////////////
16  //
17  // Parser structure helper
18  //
19  // ////////////////////////////////////////////////////////////////////
21  template <int MIN = 0, int MAX = 0>
23  unsigned int _value;
24 
25  // ////////// Constructors ///////////
31  date_time_element (int i) : _value (i) { }
33  void check () const {
34  if (_value < MIN || _value > MAX) {
35  std::ostringstream oMessage;
36  oMessage << "The value: " << _value << " is out of range ("
37  << MIN << ", " << MAX << ")";
38  throw OPENTREP::ParserException (oMessage.str());
39  }
40  }
41  };
42 
44  template <int MIN, int MAX>
45  inline date_time_element<MIN,
47  const date_time_element<MIN, MAX>& o2){
48  return date_time_element<MIN, MAX> (o1._value * o2._value);
49  }
50 
52  template <int MIN, int MAX>
53  inline date_time_element<MIN,
55  const date_time_element<MIN, MAX>& o2){
56  return date_time_element<MIN, MAX> (o1._value + o2._value);
57  }
58 
66 
67 }
68 #endif // __OPENTREP_PARSERHELPERTYPES_HPP
date_time_element< 1900, 2100 > year_t
date_time_element< 1, 31 > day_t
date_time_element(const date_time_element &t)
date_time_element< 0, 59 > second_t
date_time_element< 0, 23 > hour_t
date_time_element< MIN, MAX > operator+(const date_time_element< MIN, MAX > &o1, const date_time_element< MIN, MAX > &o2)
date_time_element< MIN, MAX > operator*(const date_time_element< MIN, MAX > &o1, const date_time_element< MIN, MAX > &o2)
date_time_element< 1, 12 > month_t
date_time_element< 0, 59 > minute_t