$treeview $search $mathjax
00001 #ifndef __STDAIR_BAS_BASCOMPARSERHELPERTYPES_HPP 00002 #define __STDAIR_BAS_BASCOMPARSERHELPERTYPES_HPP 00003 00004 // ////////////////////////////////////////////////////////////////////// 00005 // Import section 00006 // ////////////////////////////////////////////////////////////////////// 00007 // STL 00008 #include <string> 00009 #include <sstream> 00010 // StdAir 00011 #include <stdair/stdair_exceptions.hpp> 00012 #include <stdair/service/Logger.hpp> 00013 00014 namespace stdair { 00015 00016 // //////////////////////////////////////////////////////////////////// 00017 // 00018 // Parser structure helper 00019 // 00020 // //////////////////////////////////////////////////////////////////// 00022 template <int MIN = 0, int MAX = 0> 00023 struct date_time_element { 00024 unsigned int _value; 00025 00026 // ////////// Constructors /////////// 00028 date_time_element () { } 00030 date_time_element (const date_time_element& t) : _value (t._value) { } 00032 date_time_element (int i) : _value (i) { } 00034 void check () const { 00035 if (_value < MIN || _value > MAX) { 00036 std::ostringstream oMessage; 00037 oMessage << "The value: " << _value << " is out of range (" 00038 << MIN << ", " << MAX << ")"; 00039 throw stdair::ParserException (oMessage.str()); 00040 } 00041 } 00042 }; 00043 00045 template <int MIN, int MAX> 00046 inline date_time_element<MIN, 00047 MAX> operator*(const date_time_element<MIN, MAX>& o1, 00048 const date_time_element<MIN, MAX>& o2){ 00049 return date_time_element<MIN, MAX> (o1._value * o2._value); 00050 } 00051 00053 template <int MIN, int MAX> 00054 inline date_time_element<MIN, 00055 MAX> operator+(const date_time_element<MIN, MAX>& o1, 00056 const date_time_element<MIN, MAX>& o2){ 00057 return date_time_element<MIN, MAX> (o1._value + o2._value); 00058 } 00059 00061 typedef date_time_element<0, 23> hour_t; 00062 typedef date_time_element<0, 59> minute_t; 00063 typedef date_time_element<0, 59> second_t; 00064 typedef date_time_element<1900, 2100> year_t; 00065 typedef date_time_element<1, 12> month_t; 00066 typedef date_time_element<1, 31> day_t; 00067 00068 } 00069 #endif // __STDAIR_BAS_BASCOMPARSERHELPERTYPES_HPP