54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
#ifndef GREG_YEAR_HPP___
|
|
#define GREG_YEAR_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 year
|
|
struct bad_year : public std::out_of_range
|
|
{
|
|
bad_year() :
|
|
std::out_of_range(std::string("Year is out of valid range: 1400..10000"))
|
|
{}
|
|
};
|
|
//! Policy class that declares error handling gregorian year type
|
|
typedef CV::simple_exception_policy<unsigned short, 1400, 10000, bad_year> greg_year_policies;
|
|
|
|
//! Generated representation for gregorian year
|
|
typedef CV::constrained_value<greg_year_policies> greg_year_rep;
|
|
|
|
//! Represent a day of the month (range 1900 - 10000)
|
|
/*! This small class allows for simple conversion an integer value into
|
|
a year for the gregorian calendar. This currently only allows a
|
|
range of 1900 to 10000. Both ends of the range are a bit arbitrary
|
|
at the moment, but they are the limits of current testing of the
|
|
library. As such they may be increased in the future.
|
|
*/
|
|
class greg_year : public greg_year_rep {
|
|
public:
|
|
greg_year(unsigned short year) : greg_year_rep(year) {}
|
|
operator unsigned short() const {return value_;}
|
|
private:
|
|
|
|
};
|
|
|
|
|
|
|
|
} } //namespace gregorian
|
|
|
|
|
|
|
|
#endif
|