Replaced const reference strings with string_view, where possible, in StringService

This commit is contained in:
Nav
2024-11-29 01:04:36 +00:00
parent 8e86cfb152
commit cde5d83599
2 changed files with 30 additions and 20 deletions

View File

@@ -1,6 +1,7 @@
#include "StringService.hpp" #include "StringService.hpp"
#include <algorithm> #include <algorithm>
#include <iterator>
#include <cctype> #include <cctype>
#include <sstream> #include <sstream>
#include <iomanip> #include <iomanip>
@@ -12,37 +13,46 @@
namespace Services namespace Services
{ {
std::string StringService::asciiToLower(std::string str) { std::string StringService::asciiToLower(std::string_view str) {
std::transform(str.begin(), str.end(), str.begin(), [] (unsigned char character) { auto output = std::string{};
output.reserve(str.size());
std::transform(str.begin(), str.end(), std::back_inserter(output), [] (unsigned char character) {
return std::tolower(character); return std::tolower(character);
}); });
return str; return output;
} }
std::string StringService::asciiToUpper(std::string str) { std::string StringService::asciiToUpper(std::string_view str) {
std::transform(str.begin(), str.end(), str.begin(), [] (unsigned char character) { auto output = std::string{};
output.reserve(str.size());
std::transform(str.begin(), str.end(), std::back_inserter(output), [] (unsigned char character) {
return std::toupper(character); return std::toupper(character);
}); });
return str; return output;
} }
bool StringService::isAscii(const std::string& str) { bool StringService::isAscii(std::string_view str) {
return !std::any_of(str.begin(), str.end(), [] (unsigned char character) { return !std::any_of(str.begin(), str.end(), [] (unsigned char character) {
return character > 127; return character > 127;
}); });
} }
std::string StringService::replaceUnprintable(std::string str) { std::string StringService::replaceUnprintable(std::string_view str) {
std::transform(str.begin(), str.end(), str.begin(), [] (unsigned char character) { auto output = std::string{};
output.reserve(str.size());
std::transform(str.begin(), str.end(), std::back_inserter(output), [] (unsigned char character) {
return character < 32 || character > 126 ? '?' : character; return character < 32 || character > 126 ? '?' : character;
}); });
return str; return output;
} }
bool StringService::isNumeric(const std::string& str) { bool StringService::isNumeric(std::string_view str) {
return !std::any_of(str.begin(), str.end(), [] (unsigned char character) { return !std::any_of(str.begin(), str.end(), [] (unsigned char character) {
return std::isdigit(character); return std::isdigit(character);
}); });
@@ -83,7 +93,7 @@ namespace Services
return stream.str(); return stream.str();
} }
std::string StringService::toHex(const std::string& data) { std::string StringService::toHex(std::string_view data) {
auto stream = std::stringstream{}; auto stream = std::stringstream{};
stream << std::hex << std::setfill('0'); stream << std::hex << std::setfill('0');
@@ -108,7 +118,7 @@ namespace Services
return output; return output;
} }
std::vector<unsigned char> StringService::dataFromHex(const std::string& hexData) { std::vector<unsigned char> StringService::dataFromHex(std::string_view hexData) {
auto output = std::vector<unsigned char>{}; auto output = std::vector<unsigned char>{};
for (auto i = 0; i < hexData.size(); i += 2) { for (auto i = 0; i < hexData.size(); i += 2) {

View File

@@ -12,21 +12,21 @@ namespace Services
class StringService class StringService
{ {
public: public:
static std::string asciiToLower(std::string str); static std::string asciiToLower(std::string_view str);
static std::string asciiToUpper(std::string str); static std::string asciiToUpper(std::string_view str);
static bool isAscii(const std::string& str); static bool isAscii(std::string_view str);
static std::string replaceUnprintable(std::string str); static std::string replaceUnprintable(std::string_view str);
static bool isNumeric(const std::string& str); static bool isNumeric(std::string_view str);
static std::string toHex(std::uint64_t value); static std::string toHex(std::uint64_t value);
static std::string toHex(std::uint32_t value); static std::string toHex(std::uint32_t value);
static std::string toHex(std::uint16_t value); static std::string toHex(std::uint16_t value);
static std::string toHex(unsigned char value); static std::string toHex(unsigned char value);
static std::string toHex(const std::vector<unsigned char>& data); static std::string toHex(const std::vector<unsigned char>& data);
static std::string toHex(const std::string& data); static std::string toHex(std::string_view data);
template <typename Type> template <typename Type>
requires std::is_enum_v<Type> requires std::is_enum_v<Type>
@@ -36,7 +36,7 @@ namespace Services
static std::string toBinaryStringWithMask(std::uint64_t value, std::uint64_t mask); static std::string toBinaryStringWithMask(std::uint64_t value, std::uint64_t mask);
static std::vector<unsigned char> dataFromHex(const std::string& hexData); static std::vector<unsigned char> dataFromHex(std::string_view hexData);
static std::uint64_t toUint64(const std::string& str, int base = 0); static std::uint64_t toUint64(const std::string& str, int base = 0);
static std::uint32_t toUint32(const std::string& str, int base = 0); static std::uint32_t toUint32(const std::string& str, int base = 0);