| Index: base/i18n/timezone.cc
|
| diff --git a/base/i18n/timezone.cc b/base/i18n/timezone.cc
|
| index 8c652799dbb9c231cc1a08e119bfedd99409023f..f668543ecdce2f1fc191d16f174ab2ac7d601bdd 100644
|
| --- a/base/i18n/timezone.cc
|
| +++ b/base/i18n/timezone.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "base/i18n/timezone.h"
|
|
|
| +#include <string.h>
|
| +
|
| #include <map>
|
|
|
| #include "base/memory/singleton.h"
|
| @@ -22,7 +24,8 @@ class TimezoneMap {
|
| }
|
|
|
| std::string CountryCodeForTimezone(const std::string& olson_code) {
|
| - std::map<std::string, std::string>::iterator iter = map_.find(olson_code);
|
| + std::map<const char*, const char*, CompareCStrings>::iterator iter =
|
| + map_.find(olson_code.c_str());
|
| if (iter != map_.end())
|
| return iter->second;
|
|
|
| @@ -35,9 +38,10 @@ class TimezoneMap {
|
| // <http://www.ietf.org/timezones/data/zone.tab> and is a part of public
|
| // domain.
|
| struct OlsonCodeData {
|
| - std::string country_code;
|
| - std::string olson_code;
|
| - } olson_code_data[] = {
|
| + const char* country_code;
|
| + const char* olson_code;
|
| + };
|
| + static const OlsonCodeData olson_code_data[] = {
|
| { "AD", "Europe/Andorra" },
|
| { "AE", "Asia/Dubai" },
|
| { "AF", "Asia/Kabul" },
|
| @@ -459,17 +463,17 @@ class TimezoneMap {
|
| { "GB", "Etc/UCT" },
|
| };
|
|
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(olson_code_data); ++i) {
|
| + for (size_t i = 0; i < arraysize(olson_code_data); ++i)
|
| map_[olson_code_data[i].olson_code] = olson_code_data[i].country_code;
|
| - }
|
|
|
| // These are mapping from old codenames to new codenames. They are also
|
| // part of public domain, and available at
|
| // <http://www.ietf.org/timezones/data/backward>.
|
| struct LinkData {
|
| - std::string old_code;
|
| - std::string new_code;
|
| - } link_data[] = {
|
| + const char* old_code;
|
| + const char* new_code;
|
| + };
|
| + static const LinkData link_data[] = {
|
| { "Africa/Asmera", "Africa/Asmara" },
|
| { "Africa/Timbuktu", "Africa/Bamako" },
|
| { "America/Argentina/ComodRivadavia", "America/Argentina/Catamarca" },
|
| @@ -582,14 +586,18 @@ class TimezoneMap {
|
| { "Zulu", "Etc/UTC" },
|
| };
|
|
|
| - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(link_data); ++i) {
|
| + for (size_t i = 0; i < arraysize(link_data); ++i)
|
| map_[link_data[i].old_code] = map_[link_data[i].new_code];
|
| - }
|
| }
|
|
|
| friend struct DefaultSingletonTraits<TimezoneMap>;
|
|
|
| - std::map<std::string, std::string> map_;
|
| + struct CompareCStrings {
|
| + bool operator()(const char* str1, const char* str2) const {
|
| + return strcmp(str1, str2) < 0;
|
| + }
|
| + };
|
| + std::map<const char*, const char*, CompareCStrings> map_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TimezoneMap);
|
| };
|
|
|