Reducing the number of wstring copies when constructing Unit and Category (#936)

This commit is contained in:
Scott Freeman 2020-03-13 14:06:20 -04:00 committed by GitHub
parent 18a1f82035
commit 0490d8cd20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,8 +6,8 @@
#include <vector> #include <vector>
#include <unordered_map> #include <unordered_map>
#include <future> #include <future>
#include "sal_cross_platform.h" // for SAL #include "sal_cross_platform.h" // for SAL
#include <memory> // for std::shared_ptr #include <memory> // for std::shared_ptr
namespace UnitConversionManager namespace UnitConversionManager
{ {
@ -18,11 +18,11 @@ namespace UnitConversionManager
Unit() Unit()
{ {
} }
Unit(int id, std::wstring name, std::wstring abbreviation, bool isConversionSource, bool isConversionTarget, bool isWhimsical) Unit(int id, std::wstring_view name, std::wstring abbreviation, bool isConversionSource, bool isConversionTarget, bool isWhimsical)
: id(id) : id(id)
, name(name) , name(name)
, accessibleName(name) , accessibleName(name)
, abbreviation(abbreviation) , abbreviation(std::move(abbreviation))
, isConversionSource(isConversionSource) , isConversionSource(isConversionSource)
, isConversionTarget(isConversionTarget) , isConversionTarget(isConversionTarget)
, isWhimsical(isWhimsical) , isWhimsical(isWhimsical)
@ -31,23 +31,26 @@ namespace UnitConversionManager
Unit( Unit(
int id, int id,
std::wstring currencyName, std::wstring_view currencyName,
std::wstring countryName, std::wstring_view countryName,
std::wstring abbreviation, std::wstring abbreviation,
bool isRtlLanguage, bool isRtlLanguage,
bool isConversionSource, bool isConversionSource,
bool isConversionTarget) bool isConversionTarget)
: id(id) : id(id)
, abbreviation(abbreviation) , abbreviation(std::move(abbreviation))
, isConversionSource(isConversionSource) , isConversionSource(isConversionSource)
, isConversionTarget(isConversionTarget) , isConversionTarget(isConversionTarget)
, isWhimsical(false) , isWhimsical(false)
{ {
std::wstring nameValue1 = isRtlLanguage ? currencyName : countryName; auto nameValue1 = isRtlLanguage ? currencyName : countryName;
std::wstring nameValue2 = isRtlLanguage ? countryName : currencyName; auto nameValue2 = isRtlLanguage ? countryName : currencyName;
name = nameValue1 + L" - " + nameValue2; name = nameValue1;
accessibleName = nameValue1 + L" " + nameValue2; name.append(L" - ").append(nameValue2);
accessibleName = nameValue1;
accessibleName.append(1, L' ').append(nameValue2);
} }
int id; int id;
@ -84,7 +87,7 @@ namespace UnitConversionManager
Category(int id, std::wstring name, bool supportsNegative) Category(int id, std::wstring name, bool supportsNegative)
: id(id) : id(id)
, name(name) , name(std::move(name))
, supportsNegative(supportsNegative) , supportsNegative(supportsNegative)
{ {
} }