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