⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 greg_month.cpp

📁 C++的一个好库。。。现在很流行
💻 CPP
字号:
/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
 * Use, modification and distribution is subject to the 
 * Boost Software License, Version 1.0. (See accompanying
 * file LICENSE-1.0 or http://www.boost.org/LICENSE-1.0)
 * Author: Jeff Garland, Bart Garst
 * $Date: 2005/06/21 03:34:50 $
 */



#ifndef BOOST_DATE_TIME_SOURCE
#define BOOST_DATE_TIME_SOURCE
#endif
#include "boost/date_time/gregorian/greg_month.hpp"
#include "boost/date_time/gregorian/greg_facet.hpp"
#include "boost/date_time/date_format_simple.hpp"
#include "boost/date_time/compiler_config.hpp"
#if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
#include "boost/date_time/gregorian/formatters_limited.hpp"
#else
#include "boost/date_time/gregorian/formatters.hpp"
#endif
#include "boost/date_time/date_parsing.hpp"
#include "boost/date_time/gregorian/parsers.hpp"

#include "greg_names.hpp"
namespace boost {
namespace gregorian {

  /*! Returns a shared pointer to a map of Month strings & numbers.
   * Strings are both full names and abbreviations.
   * Ex. ("jan",1), ("february",2), etc...
   * Note: All characters are lowercase - for case insensitivity
   */
  greg_month::month_map_ptr_type greg_month::get_month_map_ptr()
  {
    static month_map_ptr_type month_map_ptr(new greg_month::month_map_type());

    if(month_map_ptr->empty()) {
      std::string s("");
      for(unsigned short i = 1; i <= 12; ++i) {
        greg_month m(static_cast<month_enum>(i));
        s = m.as_long_string();
        s = date_time::convert_to_lower(s);
        month_map_ptr->insert(std::make_pair(s, i));
        s = m.as_short_string();
        s = date_time::convert_to_lower(s);
        month_map_ptr->insert(std::make_pair(s, i));
      }
    }
    return month_map_ptr;
  }


  //! Returns 3 char english string for the month ex: Jan, Feb, Mar, Apr
  const char*
  greg_month::as_short_string() const 
  {
    return short_month_names[value_-1];
  }
  
  //! Returns full name of month as string in english ex: January, February
  const char*
  greg_month::as_long_string()  const 
  {
    return long_month_names[value_-1];
  }
 
  //! Return special_value from string argument
  /*! Return special_value from string argument. If argument is 
   * not one of the special value names (defined in names.hpp), 
   * return 'not_special' */
  special_values special_value_from_string(const std::string& s) {
    short i = date_time::find_match(special_value_names,
                                    special_value_names,
                                    date_time::NumSpecialValues,
                                    s);
    if(i > date_time::NumSpecialValues) { // match not found
      return not_special;
    }
    else {
      return static_cast<special_values>(i);
    }
  }


#ifndef BOOST_NO_STD_WSTRING
  //! Returns 3 wchar_t english string for the month ex: Jan, Feb, Mar, Apr
  const wchar_t*
  greg_month::as_short_wstring() const 
  {
    return w_short_month_names[value_-1];
  }
  
  //! Returns full name of month as wchar_t string in english ex: January, February
  const wchar_t*
  greg_month::as_long_wstring()  const 
  {
    return w_long_month_names[value_-1];
  }
#endif // BOOST_NO_STD_WSTRING
  
#ifndef BOOST_DATE_TIME_NO_LOCALE
  /*! creates an all_date_names_put object with the correct set of names.
   * This function is only called in the event of an exception where
   * the imbued locale containing the needed facet is for some reason 
   * unreachable.
   */
  BOOST_DATE_TIME_DECL 
  boost::date_time::all_date_names_put<greg_facet_config, char>* 
  create_facet_def(char type)
  {
    typedef 
      boost::date_time::all_date_names_put<greg_facet_config, char> facet_def;
    
    return new facet_def(short_month_names,
                         long_month_names,
                         special_value_names,
                         short_weekday_names,
                         long_weekday_names);
  }
  
  //! generates a locale with the set of gregorian name-strings of type char*
  BOOST_DATE_TIME_DECL std::locale generate_locale(std::locale& loc, char type){
    typedef boost::date_time::all_date_names_put<greg_facet_config, char> facet_def;
    return std::locale(loc, new facet_def(short_month_names,
                                          long_month_names,
                                          special_value_names,
                                          short_weekday_names,
                                          long_weekday_names)
        );
  }
  
#ifndef BOOST_NO_STD_WSTRING
  /*! creates an all_date_names_put object with the correct set of names.
   * This function is only called in the event of an exception where
   * the imbued locale containing the needed facet is for some reason 
   * unreachable.
   */
  BOOST_DATE_TIME_DECL 
  boost::date_time::all_date_names_put<greg_facet_config, wchar_t>* 
  create_facet_def(wchar_t type)
  {
    typedef 
      boost::date_time::all_date_names_put<greg_facet_config,wchar_t> facet_def;
    
    return new facet_def(w_short_month_names,
                         w_long_month_names,
                         w_special_value_names,
                         w_short_weekday_names,
                         w_long_weekday_names);
  }

  //! generates a locale with the set of gregorian name-strings of type wchar_t*
  BOOST_DATE_TIME_DECL std::locale generate_locale(std::locale& loc, wchar_t type){
    typedef boost::date_time::all_date_names_put<greg_facet_config, wchar_t> facet_def;
    return std::locale(loc, new facet_def(w_short_month_names,
                                          w_long_month_names,
                                          w_special_value_names,
                                          w_short_weekday_names,
                                          w_long_weekday_names)
        );
  }
#endif // BOOST_NO_STD_WSTRING
#endif // BOOST_DATE_TIME_NO_LOCALE

} } //namespace gregorian






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -