Skip to content
Permalink
Browse files

Common/SettingsHandler: Use std::string_view where applicable

Allows passed in strings to be non-allocating.
  • Loading branch information...
lioncash committed Jul 16, 2019
1 parent 9dd8f82 commit af576839d894c3a34cbf6b7e007e674415f98d72
Showing with 11 additions and 10 deletions.
  1. +8 −8 Source/Core/Common/SettingsHandler.cpp
  2. +3 −2 Source/Core/Common/SettingsHandler.h
@@ -38,27 +38,27 @@ void SettingsHandler::SetBytes(Buffer&& buffer)
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");
std::string toFind = delim + key + "=";
constexpr char delim[] = "\r\n";
std::string toFind = std::string(delim).append(key).append("=");
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());
if (delimFound == decoded.npos)
if (delimFound == std::string_view::npos)
delimFound = decoded.length() - 1;
return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
}
else
{
toFind = key + "=";
toFind = std::string(key).append("=");
found = decoded.find(toFind);
if (found == 0)
{
size_t delimFound = decoded.find(delim, found + toFind.length());
if (delimFound == decoded.npos)
if (delimFound == std::string_view::npos)
delimFound = decoded.length() - 1;
return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length()));
}
@@ -89,7 +89,7 @@ void SettingsHandler::Reset()
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)
{
@@ -8,6 +8,7 @@

#include <array>
#include <string>
#include <string_view>

#include "Common/CommonTypes.h"

@@ -27,11 +28,11 @@ class SettingsHandler
SettingsHandler();
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;
void SetBytes(Buffer&& buffer);
std::string GetValue(const std::string& key) const;
std::string GetValue(std::string_view key) const;

void Decrypt();
void Reset();

0 comments on commit af57683

Please sign in to comment.
You can’t perform that action at this time.