Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:30:34

0001 #ifndef GREG_DAY_HPP___
0002 #define GREG_DAY_HPP___
0003 
0004 /* Copyright (c) 2002,2003,2020 CrystalClear Software, Inc.
0005  * Use, modification and distribution is subject to the 
0006  * Boost Software License, Version 1.0. (See accompanying
0007  * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
0008  * Author: Jeff Garland 
0009  * $Date$
0010  */
0011 
0012 #include <boost/date_time/constrained_value.hpp>
0013 #include <boost/date_time/compiler_config.hpp>
0014 #include <stdexcept>
0015 #include <string>
0016 
0017 namespace boost {
0018 namespace gregorian {
0019 
0020   //! Exception type for gregorian day of month (1..31)
0021   struct BOOST_SYMBOL_VISIBLE bad_day_of_month : public std::out_of_range
0022   {
0023     bad_day_of_month() : 
0024       std::out_of_range(std::string("Day of month value is out of range 1..31")) 
0025     {}
0026     //! Allow other classes to throw with unique string for bad day like Feb 29
0027     bad_day_of_month(const std::string& s) : 
0028       std::out_of_range(s) 
0029     {}
0030   };
0031   //! Policy class that declares error handling and day of month ranges
0032   typedef CV::simple_exception_policy<unsigned short, 1, 31, bad_day_of_month> greg_day_policies;
0033 
0034   //! Generated represetation for gregorian day of month
0035   typedef CV::constrained_value<greg_day_policies> greg_day_rep;
0036 
0037   //! Represent a day of the month (range 1 - 31) 
0038   /*! This small class allows for simple conversion an integer value into
0039       a day of the month for a standard gregorian calendar.  The type 
0040       is automatically range checked so values outside of the range 1-31
0041       will cause a bad_day_of_month exception
0042   */
0043   class BOOST_SYMBOL_VISIBLE greg_day : public greg_day_rep {
0044   public:
0045     BOOST_CXX14_CONSTEXPR greg_day(value_type day_of_month) : greg_day_rep(day_of_month) {}
0046     BOOST_CXX14_CONSTEXPR value_type as_number() const {return value_;}
0047     BOOST_CXX14_CONSTEXPR operator value_type()  const {return value_;}
0048   private:
0049     
0050   };
0051 
0052 
0053 
0054 } } //namespace gregorian
0055 
0056 
0057 
0058 #endif