From 369843dd3702d36a8b6c55b0fe4d2f22f4829fb3 Mon Sep 17 00:00:00 2001 From: Scott Freeman Date: Sun, 1 Dec 2019 11:59:50 -0500 Subject: [PATCH] Changing CCalcEngine::s_engineStrings to use string_view for keys (#829) --- src/CalcManager/CEngine/calc.cpp | 7 +++---- src/CalcManager/CalculatorResource.h | 6 ++++-- src/CalcManager/Header Files/CalcEngine.h | 4 ++-- src/CalcViewModel/Common/EngineResourceProvider.cpp | 4 ++-- src/CalcViewModel/Common/EngineResourceProvider.h | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/CalcManager/CEngine/calc.cpp b/src/CalcManager/CEngine/calc.cpp index c71d292..c577537 100644 --- a/src/CalcManager/CEngine/calc.cpp +++ b/src/CalcManager/CEngine/calc.cpp @@ -24,17 +24,16 @@ static constexpr wstring_view DEFAULT_NUMBER_STR = L"0"; // Read strings for keys, errors, trig types, etc. // These will be copied from the resources to local memory. -unordered_map CCalcEngine::s_engineStrings; +unordered_map CCalcEngine::s_engineStrings; void CCalcEngine::LoadEngineStrings(CalculationManager::IResourceProvider& resourceProvider) { for (const auto& sid : g_sids) { - auto locKey = wstring{ sid }; - auto locString = resourceProvider.GetCEngineString(locKey); + auto locString = resourceProvider.GetCEngineString(sid); if (!locString.empty()) { - s_engineStrings[locKey] = locString; + s_engineStrings[sid] = locString; } } } diff --git a/src/CalcManager/CalculatorResource.h b/src/CalcManager/CalculatorResource.h index 5f360f3..8c4c049 100644 --- a/src/CalcManager/CalculatorResource.h +++ b/src/CalcManager/CalculatorResource.h @@ -1,8 +1,10 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once +#include + namespace CalculationManager { class IResourceProvider @@ -19,6 +21,6 @@ namespace CalculationManager // ids "sDecimal", "sThousand" and "sGrouping". See // https://technet.microsoft.com/en-us/library/cc782655(v=ws.10).aspx // for what these values refer to. - virtual std::wstring GetCEngineString(const std::wstring& id) = 0; + virtual std::wstring GetCEngineString(std::wstring_view id) = 0; }; } diff --git a/src/CalcManager/Header Files/CalcEngine.h b/src/CalcManager/Header Files/CalcEngine.h index fa6d26d..26b8051 100644 --- a/src/CalcManager/Header Files/CalcEngine.h +++ b/src/CalcManager/Header Files/CalcEngine.h @@ -98,7 +98,7 @@ public: { return s_engineStrings[std::to_wstring(ids)]; } - static std::wstring_view GetString(std::wstring ids) + static std::wstring_view GetString(std::wstring_view ids) { return s_engineStrings[ids]; } @@ -161,7 +161,7 @@ private: std::array m_chopNumbers; // word size enforcement std::array m_maxDecimalValueStrings; // maximum values represented by a given word width based off m_chopNumbers - static std::unordered_map s_engineStrings; // the string table shared across all instances + static std::unordered_map s_engineStrings; // the string table shared across all instances wchar_t m_decimalSeparator; wchar_t m_groupSeparator; diff --git a/src/CalcViewModel/Common/EngineResourceProvider.cpp b/src/CalcViewModel/Common/EngineResourceProvider.cpp index b65a2a3..05faff9 100644 --- a/src/CalcViewModel/Common/EngineResourceProvider.cpp +++ b/src/CalcViewModel/Common/EngineResourceProvider.cpp @@ -17,7 +17,7 @@ namespace CalculatorApp m_resLoader = ResourceLoader::GetForViewIndependentUse("CEngineStrings"); } - wstring EngineResourceProvider::GetCEngineString(const wstring& id) + wstring EngineResourceProvider::GetCEngineString(wstring_view id) { const auto& localizationSettings = LocalizationSettings::GetInstance(); @@ -43,7 +43,7 @@ namespace CalculatorApp return numberGroupingString; } - StringReference idRef(id.c_str()); + StringReference idRef(id.data(), id.length()); String ^ str = m_resLoader->GetString(idRef); return str->Begin(); } diff --git a/src/CalcViewModel/Common/EngineResourceProvider.h b/src/CalcViewModel/Common/EngineResourceProvider.h index 8b5bb47..f4620c5 100644 --- a/src/CalcViewModel/Common/EngineResourceProvider.h +++ b/src/CalcViewModel/Common/EngineResourceProvider.h @@ -11,7 +11,7 @@ namespace CalculatorApp { public: EngineResourceProvider(); - virtual std::wstring GetCEngineString(const std::wstring& id) override; + virtual std::wstring GetCEngineString(std::wstring_view id) override; private: Windows::ApplicationModel::Resources::ResourceLoader ^ m_resLoader;