Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 09:35:19

0001 #ifndef GREG_YEAR_HPP___
0002 #define GREG_YEAR_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/compiler_config.hpp>
0013 #include <boost/date_time/constrained_value.hpp>
0014 #include <stdexcept>
0015 #include <string>
0016 
0017 namespace boost {
0018 namespace gregorian {
0019 
0020   //! Exception type for gregorian year
0021   struct BOOST_SYMBOL_VISIBLE bad_year : public std::out_of_range
0022   {
0023     bad_year() : 
0024       std::out_of_range(std::string("Year is out of valid range: 1400..9999")) 
0025     {}
0026   };
0027   //! Policy class that declares error handling gregorian year type
0028   typedef CV::simple_exception_policy<unsigned short, 1400, 9999, bad_year> greg_year_policies;
0029 
0030   //! Generated representation for gregorian year
0031   typedef CV::constrained_value<greg_year_policies> greg_year_rep;
0032 
0033   //! Represent a year (range 1400 - 9999) 
0034   /*! This small class allows for simple conversion an integer value into
0035       a year for the gregorian calendar.  This currently only allows a
0036       range of 1400 to 9999.  Both ends of the range are a bit arbitrary
0037       at the moment, but they are the limits of current testing of the 
0038       library.  As such they may be increased in the future.
0039   */
0040   class BOOST_SYMBOL_VISIBLE greg_year : public greg_year_rep {
0041   public:
0042     BOOST_CXX14_CONSTEXPR greg_year(value_type year) : greg_year_rep(year) {}
0043     BOOST_CXX14_CONSTEXPR operator value_type()  const {return value_;}
0044   };
0045 
0046 
0047 
0048 } } //namespace gregorian
0049 
0050 
0051 
0052 #endif