Line data Source code
1 : #ifndef GREG_YEAR_HPP___ 2 : #define GREG_YEAR_HPP___ 3 : 4 : /* Copyright (c) 2002,2003 CrystalClear Software, Inc. 5 : * Use, modification and distribution is subject to the 6 : * Boost Software License, Version 1.0. (See accompanying 7 : * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) 8 : * Author: Jeff Garland 9 : * $Date$ 10 : */ 11 : 12 : #include <boost/date_time/compiler_config.hpp> 13 : #include <boost/date_time/constrained_value.hpp> 14 : #include <stdexcept> 15 : #include <string> 16 : 17 : namespace boost { 18 : namespace gregorian { 19 : 20 : //! Exception type for gregorian year 21 0 : struct BOOST_SYMBOL_VISIBLE bad_year : public std::out_of_range 22 : { 23 0 : bad_year() : 24 0 : std::out_of_range(std::string("Year is out of valid range: 1400..9999")) 25 0 : {} 26 : }; 27 : //! Policy class that declares error handling gregorian year type 28 : typedef CV::simple_exception_policy<unsigned short, 1400, 9999, bad_year> greg_year_policies; 29 : 30 : //! Generated representation for gregorian year 31 : typedef CV::constrained_value<greg_year_policies> greg_year_rep; 32 : 33 : //! Represent a year (range 1400 - 9999) 34 : /*! This small class allows for simple conversion an integer value into 35 : a year for the gregorian calendar. This currently only allows a 36 : range of 1400 to 9999. Both ends of the range are a bit arbitrary 37 : at the moment, but they are the limits of current testing of the 38 : library. As such they may be increased in the future. 39 : */ 40 : class BOOST_SYMBOL_VISIBLE greg_year : public greg_year_rep { 41 : public: 42 0 : greg_year(value_type year) : greg_year_rep(year) {} 43 0 : operator value_type() const {return value_;} 44 : }; 45 : 46 : 47 : 48 : } } //namespace gregorian 49 : 50 : 51 : 52 : #endif