123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #ifndef GREG_DAY_HPP___
- #define GREG_DAY_HPP___
- /* Copyright (c) 2002,2003 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
- */
- #include "boost/date_time/constrained_value.hpp"
- #include <stdexcept>
- #include <string>
- namespace boost {
- namespace gregorian {
- //! Exception type for gregorian day of month (1..31)
- struct bad_day_of_month : public std::out_of_range
- {
- bad_day_of_month() :
- std::out_of_range(std::string("Day of month value is out of range 1..31"))
- {}
- //! Allow other classes to throw with unique string for bad day like Feb 29
- bad_day_of_month(const std::string& s) :
- std::out_of_range(s)
- {}
- };
- //! Policy class that declares error handling and day of month ranges
- typedef CV::simple_exception_policy<unsigned short, 1, 31, bad_day_of_month> greg_day_policies;
- //! Generated represetation for gregorian day of month
- typedef CV::constrained_value<greg_day_policies> greg_day_rep;
- //! Represent a day of the month (range 1 - 31)
- /*! This small class allows for simple conversion an integer value into
- a day of the month for a standard gregorian calendar. The type
- is automatically range checked so values outside of the range 1-31
- will cause a bad_day_of_month exception
- */
- class greg_day : public greg_day_rep {
- public:
- greg_day(unsigned short day_of_month) : greg_day_rep(day_of_month) {}
- unsigned short as_number() const {return value_;}
- operator unsigned short() const {return value_;}
- private:
-
- };
- } } //namespace gregorian
- #endif
|