LCOV - code coverage report
Current view: top level - usr/include/boost/date_time/gregorian - greg_month.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 4 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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 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           0 :   struct BOOST_SYMBOL_VISIBLE bad_month : public std::out_of_range
      45             :   {
      46           0 :     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 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           0 :     greg_month(value_type theMonth) : greg_month_rep(theMonth) {}
      65             :     //! Convert the value back to a short
      66           0 :     operator value_type()  const {return value_;}
      67             :     //! Returns month as number from 1 to 12
      68             :     value_type 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

Generated by: LCOV version 1.14