BVB Source Codes

mars Show greg_month.hpp Source code

Return Download mars: download greg_month.hpp Source code - Download mars Source code - Type:.hpp
  1. #ifndef GREG_MONTH_HPP___
  2. #define GREG_MONTH_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, Bart Garst
  9.  * $Date$
  10.  */
  11.  
  12. #include "boost/date_time/constrained_value.hpp"
  13. #include "boost/date_time/date_defs.hpp"
  14. #include "boost/shared_ptr.hpp"
  15. #include "boost/date_time/compiler_config.hpp"
  16. #include <stdexcept>
  17. #include <string>
  18. #include <map>
  19. #include <algorithm>
  20. #include <cctype>
  21.  
  22. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  23. namespace gregorian {
  24.  
  25.   typedef date_time::months_of_year months_of_year;
  26.  
  27.   //bring enum values into the namespace
  28.   using date_time::Jan;
  29.   using date_time::Feb;
  30.   using date_time::Mar;
  31.   using date_time::Apr;
  32.   using date_time::May;
  33.   using date_time::Jun;
  34.   using date_time::Jul;
  35.   using date_time::Aug;
  36.   using date_time::Sep;
  37.   using date_time::Oct;
  38.   using date_time::Nov;
  39.   using date_time::Dec;
  40.   using date_time::NotAMonth;
  41.   using date_time::NumMonths;
  42.  
  43.   //! Exception thrown if a greg_month is constructed with a value out of range
  44.   struct bad_month : public std::out_of_range
  45.   {
  46.     bad_month() : std::out_of_range(std::string("Month number is out of range 1..12")) {}
  47.   };
  48.   //! Build a policy class for the greg_month_rep
  49.   typedef CV::simple_exception_policy<unsigned short, 1, 12, bad_month> greg_month_policies;
  50.   //! A constrained range that implements the gregorian_month rules
  51.   typedef CV::constrained_value<greg_month_policies> greg_month_rep;
  52.  
  53.  
  54.   //! Wrapper class to represent months in gregorian based calendar
  55.   class BOOST_DATE_TIME_DECL greg_month : public greg_month_rep {
  56.   public:
  57.     typedef date_time::months_of_year month_enum;
  58.     typedef std::map<std::string, unsigned short> month_map_type;
  59.     typedef mars_boost::shared_ptr<month_map_type> month_map_ptr_type;
  60.     //! Construct a month from the months_of_year enumeration
  61.     greg_month(month_enum theMonth) :
  62.       greg_month_rep(static_cast<greg_month_rep::value_type>(theMonth)) {}
  63.     //! Construct from a short value
  64.     greg_month(unsigned short theMonth) : greg_month_rep(theMonth) {}
  65.     //! Convert the value back to a short
  66.     operator unsigned short()  const {return value_;}
  67.     //! Returns month as number from 1 to 12
  68.     unsigned short as_number() const {return value_;}
  69.     month_enum as_enum() const {return static_cast<month_enum>(value_);}
  70.     const char* as_short_string() const;
  71.     const char* as_long_string()  const;
  72. #ifndef BOOST_NO_STD_WSTRING
  73.     const wchar_t* as_short_wstring() const;
  74.     const wchar_t* as_long_wstring()  const;
  75. #endif // BOOST_NO_STD_WSTRING
  76.     //! Shared pointer to a map of Month strings (Names & Abbrev) & numbers
  77.     static month_map_ptr_type get_month_map_ptr();
  78.  
  79.     /* parameterized as_*_string functions are intended to be called
  80.      * from a template function: "... as_short_string(charT c='\0');" */
  81.     const char* as_short_string(char) const
  82.     {
  83.       return as_short_string();
  84.     }
  85.     const char* as_long_string(char) const
  86.     {
  87.       return as_long_string();
  88.     }
  89. #ifndef BOOST_NO_STD_WSTRING
  90.     const wchar_t* as_short_string(wchar_t) const
  91.     {
  92.       return as_short_wstring();
  93.     }
  94.     const wchar_t* as_long_string(wchar_t) const
  95.     {
  96.       return as_long_wstring();
  97.     }
  98. #endif // BOOST_NO_STD_WSTRING
  99.   };
  100.  
  101. } } //namespace gregorian
  102.  
  103.  
  104.  
  105. #endif
  106.  
downloadgreg_month.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top