54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#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$
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#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
							 |