diff options
author | 2018-03-01 02:35:23 -0800 | |
---|---|---|
committer | 2018-03-01 02:36:46 -0800 | |
commit | 2b9ab77fe9a2f0fa6fb177d80038d5cd2e0b05a5 (patch) | |
tree | 8c621b356e68e2d0db73bb1f4519f6e761c3d8e2 /src/main/cpp | |
parent | ccd54bd00e9c63f880a67d35f89ac603c084db71 (diff) |
Convert static std::set to constexpr array
Google C++ Style Guide disallows static variable with non-trivial
destructor. Use constexpr for static variable whenever possible.
std::array would make the code cleaner, but MSVC's implementation
of constexpr std::array is buggy.
Side-benefit: linear search is faster when array is small (<20).
Change-Id: Ic8244dcb868e27d02ceb5298ccec482e7d4254b7
PiperOrigin-RevId: 187451495
Diffstat (limited to 'src/main/cpp')
-rw-r--r-- | src/main/cpp/option_processor.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc index 6ad7cc4359..4e0c45521b 100644 --- a/src/main/cpp/option_processor.cc +++ b/src/main/cpp/option_processor.cc @@ -359,8 +359,8 @@ static bool IsValidEnvName(const char* p) { #if defined(COMPILER_MSVC) static void PreprocessEnvString(string* env_str) { - static std::set<string> vars_to_uppercase = {"PATH", "TMP", "TEMP", "TEMPDIR", - "SYSTEMROOT"}; + static constexpr const char* vars_to_uppercase[] = {"PATH", "SYSTEMROOT", + "TEMP", "TEMPDIR", "TMP"}; int pos = env_str->find_first_of('='); if (pos == string::npos) return; @@ -368,7 +368,8 @@ static void PreprocessEnvString(string* env_str) { string name = env_str->substr(0, pos); // We do not care about locale. All variable names are ASCII. std::transform(name.begin(), name.end(), name.begin(), ::toupper); - if (vars_to_uppercase.find(name) != vars_to_uppercase.end()) { + if (std::find(std::begin(vars_to_uppercase), std::end(vars_to_uppercase), + name) != std::end(vars_to_uppercase)) { env_str->assign(name + "=" + env_str->substr(pos + 1)); } } |