Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3306)

Unified Diff: base/i18n/timezone.cc

Issue 573623003: Use a more suitable storage for the timezone table. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Timezone: Now with an extra empty line Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698