You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
98 lines
3.1 KiB
98 lines
3.1 KiB
#ifndef DATE_TIME_TIME_ZONE_NAMES_HPP__ |
|
#define DATE_TIME_TIME_ZONE_NAMES_HPP__ |
|
|
|
/* Copyright (c) 2002-2003,2005 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 <string> |
|
|
|
namespace boost { |
|
namespace date_time { |
|
|
|
template<class CharT> |
|
struct default_zone_names { |
|
public: |
|
typedef CharT char_type; |
|
static const char_type standard_name[9]; |
|
static const char_type standard_abbrev[11]; |
|
static const char_type non_dst_identifier[7]; |
|
}; |
|
template <class CharT> |
|
const typename default_zone_names<CharT>::char_type |
|
default_zone_names<CharT>::standard_name[9] = |
|
{'s','t','d','_','n','a','m','e'}; |
|
|
|
template <class CharT> |
|
const typename default_zone_names<CharT>::char_type |
|
default_zone_names<CharT>::standard_abbrev[11] = |
|
{'s','t','d','_','a','b','b','r','e','v'}; |
|
|
|
template <class CharT> |
|
const typename default_zone_names<CharT>::char_type |
|
default_zone_names<CharT>::non_dst_identifier[7] = |
|
{'n','o','-','d','s','t'}; |
|
|
|
//! Base type that holds various string names for timezone output. |
|
/*! Class that holds various types of strings used for timezones. |
|
* For example, for the western United States there is the full |
|
* name: Pacific Standard Time and the abbreviated name: PST. |
|
* During daylight savings there are additional names: |
|
* Pacific Daylight Time and PDT. |
|
*@parm CharT Allows class to support different character types |
|
*/ |
|
template<class CharT> |
|
class time_zone_names_base |
|
{ |
|
public: |
|
typedef std::basic_string<CharT> string_type; |
|
time_zone_names_base() : |
|
std_zone_name_(default_zone_names<CharT>::standard_name), |
|
std_zone_abbrev_(default_zone_names<CharT>::standard_abbrev), |
|
dst_zone_name_(default_zone_names<CharT>::non_dst_identifier), |
|
dst_zone_abbrev_(default_zone_names<CharT>::non_dst_identifier) |
|
{} |
|
time_zone_names_base(const string_type& std_zone_name_str, |
|
const string_type& std_zone_abbrev_str, |
|
const string_type& dst_zone_name_str, |
|
const string_type& dst_zone_abbrev_str) : |
|
std_zone_name_(std_zone_name_str), |
|
std_zone_abbrev_(std_zone_abbrev_str), |
|
dst_zone_name_(dst_zone_name_str), |
|
dst_zone_abbrev_(dst_zone_abbrev_str) |
|
{} |
|
string_type dst_zone_abbrev() const |
|
{ |
|
return dst_zone_abbrev_; |
|
} |
|
string_type std_zone_abbrev() const |
|
{ |
|
return std_zone_abbrev_; |
|
} |
|
string_type dst_zone_name() const |
|
{ |
|
return dst_zone_name_; |
|
} |
|
string_type std_zone_name() const |
|
{ |
|
return std_zone_name_; |
|
} |
|
private: |
|
string_type std_zone_name_; |
|
string_type std_zone_abbrev_; |
|
string_type dst_zone_name_; |
|
string_type dst_zone_abbrev_; |
|
|
|
}; |
|
|
|
//! Specialization of timezone names for standard char. |
|
//typedef time_zone_names_base<char> time_zone_names; |
|
|
|
} } //namespace |
|
|
|
|
|
#endif
|
|
|