Merge pull request #8248 from lioncash/settings

Common/SettingsHandler: Use std::string_view where applicable
This commit is contained in:
Léo Lam 2019-07-21 15:13:27 +08:00 committed by GitHub
commit 1ed7cc260b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 14 deletions

View File

@ -9,9 +9,10 @@
#include <cstddef> #include <cstddef>
#include <ctime> #include <ctime>
#include <iomanip> #include <iomanip>
#include <sstream>
#include <string> #include <string>
#include <fmt/time.h>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
namespace Common namespace Common
@ -38,27 +39,27 @@ void SettingsHandler::SetBytes(Buffer&& buffer)
Decrypt(); Decrypt();
} }
std::string SettingsHandler::GetValue(const std::string& key) const std::string SettingsHandler::GetValue(std::string_view key) const
{ {
std::string delim = std::string("\r\n"); constexpr char delim[] = "\r\n";
std::string toFind = delim + key + "="; std::string toFind = std::string(delim).append(key).append("=");
size_t found = decoded.find(toFind); size_t found = decoded.find(toFind);
if (found != decoded.npos) if (found != std::string_view::npos)
{ {
size_t delimFound = decoded.find(delim, found + toFind.length()); size_t delimFound = decoded.find(delim, found + toFind.length());
if (delimFound == decoded.npos) if (delimFound == std::string_view::npos)
delimFound = decoded.length() - 1; delimFound = decoded.length() - 1;
return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length())); return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
} }
else else
{ {
toFind = key + "="; toFind = std::string(key).append("=");
found = decoded.find(toFind); found = decoded.find(toFind);
if (found == 0) if (found == 0)
{ {
size_t delimFound = decoded.find(delim, found + toFind.length()); size_t delimFound = decoded.find(delim, found + toFind.length());
if (delimFound == decoded.npos) if (delimFound == std::string_view::npos)
delimFound = decoded.length() - 1; delimFound = decoded.length() - 1;
return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length())); return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
} }
@ -89,7 +90,7 @@ void SettingsHandler::Reset()
m_buffer = {}; m_buffer = {};
} }
void SettingsHandler::AddSetting(const std::string& key, const std::string& value) void SettingsHandler::AddSetting(std::string_view key, std::string_view value)
{ {
for (const char& c : key) for (const char& c : key)
{ {
@ -124,8 +125,6 @@ std::string SettingsHandler::GenerateSerialNumber()
// Must be 9 characters at most; otherwise the serial number will be rejected by SDK libraries, // Must be 9 characters at most; otherwise the serial number will be rejected by SDK libraries,
// as there is a check to ensure the string length is strictly lower than 10. // as there is a check to ensure the string length is strictly lower than 10.
// 3 for %j, 2 for %H, 2 for %M, 2 for %S. // 3 for %j, 2 for %H, 2 for %M, 2 for %S.
std::stringstream stream; return fmt::format("{:%j%H%M%S}", *std::localtime(&t));
stream << std::put_time(std::localtime(&t), "%j%H%M%S");
return stream.str();
} }
} // namespace Common } // namespace Common

View File

@ -8,6 +8,7 @@
#include <array> #include <array>
#include <string> #include <string>
#include <string_view>
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
@ -27,11 +28,11 @@ public:
SettingsHandler(); SettingsHandler();
explicit SettingsHandler(Buffer&& buffer); explicit SettingsHandler(Buffer&& buffer);
void AddSetting(const std::string& key, const std::string& value); void AddSetting(std::string_view key, std::string_view value);
const Buffer& GetBytes() const; const Buffer& GetBytes() const;
void SetBytes(Buffer&& buffer); void SetBytes(Buffer&& buffer);
std::string GetValue(const std::string& key) const; std::string GetValue(std::string_view key) const;
void Decrypt(); void Decrypt();
void Reset(); void Reset();