1 #ifndef GREG_DAY_HPP___
2 #define GREG_DAY_HPP___
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)
12 #include "boost/date_time/constrained_value.hpp"
19 //! Exception type for gregorian day of month (1..31)
20 struct bad_day_of_month
: public std::out_of_range
23 std::out_of_range(std::string("Day of month value is out of range 1..31"))
25 //! Allow other classes to throw with unique string for bad day like Feb 29
26 bad_day_of_month(const std::string
& s
) :
30 //! Policy class that declares error handling and day of month ranges
31 typedef CV::simple_exception_policy
<unsigned short, 1, 31, bad_day_of_month
> greg_day_policies
;
33 //! Generated represetation for gregorian day of month
34 typedef CV::constrained_value
<greg_day_policies
> greg_day_rep
;
36 //! Represent a day of the month (range 1 - 31)
37 /*! This small class allows for simple conversion an integer value into
38 a day of the month for a standard gregorian calendar. The type
39 is automatically range checked so values outside of the range 1-31
40 will cause a bad_day_of_month exception
42 class greg_day
: public greg_day_rep
{
44 greg_day(unsigned short day_of_month
) : greg_day_rep(day_of_month
) {}
45 unsigned short as_number() const {return value_
;}
46 operator unsigned short() const {return value_
;}
53 } } //namespace gregorian