#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 |