StdAir Logo  0.45.1
C++ Standard Airline IT Object Library
BasParserHelperTypes.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines