1#ifndef GREG_DAY_HPP___
2#define GREG_DAY_HPP___
3
4/* Copyright (c) 2002,2003,2020 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 <boost/date_time/compiler_config.hpp>
14#include <stdexcept>
15#include <string>
16
17namespace boost {
18namespace gregorian {
19
20 //! Exception type for gregorian day of month (1..31)
21 struct BOOST_SYMBOL_VISIBLE bad_day_of_month : public std::out_of_range
22 {
23 bad_day_of_month() :
24 std::out_of_range(std::string("Day of month value is out of range 1..31"))
25 {}
26 //! Allow other classes to throw with unique string for bad day like Feb 29
27 bad_day_of_month(const std::string& s) :
28 std::out_of_range(s)
29 {}
30 };
31 //! Policy class that declares error handling and day of month ranges
32 typedef CV::simple_exception_policy<unsigned short, 1, 31, bad_day_of_month> greg_day_policies;
33
34 //! Generated represetation for gregorian day of month
35 typedef CV::constrained_value<greg_day_policies> greg_day_rep;
36
37 //! Represent a day of the month (range 1 - 31)
38 /*! This small class allows for simple conversion an integer value into
39 a day of the month for a standard gregorian calendar. The type
40 is automatically range checked so values outside of the range 1-31
41 will cause a bad_day_of_month exception
42 */
43 class BOOST_SYMBOL_VISIBLE greg_day : public greg_day_rep {
44 public:
45 BOOST_CXX14_CONSTEXPR greg_day(value_type day_of_month) : greg_day_rep(day_of_month) {}
46 BOOST_CXX14_CONSTEXPR value_type as_number() const {return value_;}
47 BOOST_CXX14_CONSTEXPR operator value_type() const {return value_;}
48 private:
49
50 };
51
52
53
54} } //namespace gregorian
55
56
57
58#endif
59

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