1#ifndef GREG_DAY_HPP___
2#define GREG_DAY_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/constrained_value.hpp"
13#include <stdexcept>
14#include <string>
15
16namespace boost {
17namespace gregorian {
18
19 //! Exception type for gregorian day of month (1..31)
20 struct bad_day_of_month : public std::out_of_range
21 {
22 bad_day_of_month() :
23 std::out_of_range(std::string("Day of month value is out of range 1..31"))
24 {}
25 //! Allow other classes to throw with unique string for bad day like Feb 29
26 bad_day_of_month(const std::string& s) :
27 std::out_of_range(s)
28 {}
29 };
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;
32
33 //! Generated represetation for gregorian day of month
34 typedef CV::constrained_value<greg_day_policies> greg_day_rep;
35
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
41 */
42 class greg_day : public greg_day_rep {
43 public:
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_;}
47 private:
48
49 };
50
51
52
53} } //namespace gregorian
54
55
56
57#endif
58

source code of boost/boost/date_time/gregorian/greg_day.hpp