From 46ae1a58722a7a99d0f462b439e7e196686663a2 Mon Sep 17 00:00:00 2001 From: SEK1RO Date: Mon, 16 Sep 2024 09:57:31 +0300 Subject: [PATCH] fix(baseN, hex, sha256): const string & -> string_view --- include/base/baseN.hpp | 11 ++++++----- include/base/hash/sha256.hpp | 3 ++- include/base/hex.hpp | 7 ++++--- src/baseN.cpp | 10 +++++----- src/hash/sha256.cpp | 2 +- src/hex.cpp | 7 +++---- 6 files changed, 21 insertions(+), 19 deletions(-) diff --git a/include/base/baseN.hpp b/include/base/baseN.hpp index 4d97f3f..c3f37cc 100644 --- a/include/base/baseN.hpp +++ b/include/base/baseN.hpp @@ -1,19 +1,20 @@ #pragma once #include +#include #include #include namespace baseN { bool isValid(const char *str, const int8_t *map) noexcept; - bool isValid(const std::string &str, const int8_t *map) noexcept; + bool isValid(std::string_view str, const int8_t *map) noexcept; void encode(const uint8_t *data, uint64_t data_size, char *str, uint8_t base, const char *digits, uint64_t enc_size) noexcept; - std::string encode(const std::vector &data, uint8_t base, const char *digits, uint64_t enc_size) noexcept; - std::string encode(const std::vector &data, uint8_t base, const char *digits) noexcept; + std::string encode(std::span data, uint8_t base, const char *digits, uint64_t enc_size) noexcept; + std::string encode(std::span data, uint8_t base, const char *digits) noexcept; void decode(const char *str, uint8_t *data, uint64_t data_size, uint8_t base, const char *digits, const int8_t *map, uint64_t dec_size); - std::vector decode(const std::string &str, uint8_t base, const char *digits, const int8_t *map, uint64_t dec_size); - std::vector decode(const std::string &str, uint8_t base, const char *digits, const int8_t *map); + std::vector decode(std::string_view str, uint8_t base, const char *digits, const int8_t *map, uint64_t dec_size); + std::vector decode(std::string_view str, uint8_t base, const char *digits, const int8_t *map); } \ No newline at end of file diff --git a/include/base/hash/sha256.hpp b/include/base/hash/sha256.hpp index 620c0af..9703997 100644 --- a/include/base/hash/sha256.hpp +++ b/include/base/hash/sha256.hpp @@ -1,11 +1,12 @@ #pragma once #include +#include #include #define SHA256_DIGEST_LENGTH 32 namespace hash { void sha256(const uint8_t *data, uint64_t data_size, uint8_t *hash) noexcept; - std::vector sha256(const std::vector &data) noexcept; + std::vector sha256(std::span data) noexcept; } \ No newline at end of file diff --git a/include/base/hex.hpp b/include/base/hex.hpp index 7b8956a..0b18cae 100644 --- a/include/base/hex.hpp +++ b/include/base/hex.hpp @@ -1,15 +1,16 @@ #pragma once #include +#include #include #include namespace hex { bool isValid(const char *str) noexcept; - bool isValid(const std::string &str) noexcept; + bool isValid(std::string_view str) noexcept; void encode(const uint8_t *data, uint64_t data_size, char *str) noexcept; - std::string encode(const std::vector &data) noexcept; + std::string encode(std::span data) noexcept; void decode(const char *str, uint8_t *data, uint64_t data_size); - std::vector decode(const std::string &str); + std::vector decode(std::string_view str); } \ No newline at end of file diff --git a/src/baseN.cpp b/src/baseN.cpp index eef2893..e280f1a 100644 --- a/src/baseN.cpp +++ b/src/baseN.cpp @@ -12,7 +12,7 @@ namespace baseN return std::all_of(sv.begin(), sv.end(), [map](char ch) { return map[(int8_t)ch] != -1; }); } - bool isValid(const std::string &str, const int8_t *map) noexcept + bool isValid(std::string_view str, const int8_t *map) noexcept { return baseN::isValid(str.data(), map); } @@ -71,7 +71,7 @@ namespace baseN } std::copy(res_str, res_str + enc_size, str); } - std::string encode(const std::vector &data, uint8_t base, const char *digits, uint64_t enc_size) noexcept + std::string encode(std::span data, uint8_t base, const char *digits, uint64_t enc_size) noexcept { std::string str(enc_size, ' '); baseN::encode(data.data(), data.size(), str.data(), base, digits, enc_size); @@ -80,7 +80,7 @@ namespace baseN { return ch != ' '; })); return str; } - std::string encode(const std::vector &data, uint8_t base, const char *digits) noexcept + std::string encode(std::span data, uint8_t base, const char *digits) noexcept { return baseN::encode(data, base, digits, data.size() * std::log(256) / std::log(base) + 1); } @@ -122,7 +122,7 @@ namespace baseN } std::copy(res_data, res_data + std::min(dec_size, data_size), data); } - std::vector decode(const std::string &str, uint8_t base, const char *digits, const int8_t *map, uint64_t dec_size) + std::vector decode(std::string_view str, uint8_t base, const char *digits, const int8_t *map, uint64_t dec_size) { std::vector data(dec_size); baseN::decode(str.data(), data.data(), data.size(), base, digits, map, dec_size); @@ -131,7 +131,7 @@ namespace baseN { return byte != 0; })); return data; } - std::vector decode(const std::string &str, uint8_t base, const char *digits, const int8_t *map) + std::vector decode(std::string_view str, uint8_t base, const char *digits, const int8_t *map) { return baseN::decode(str, base, digits, map, str.size() * std::log(base) / std::log(256) + 1); } diff --git a/src/hash/sha256.cpp b/src/hash/sha256.cpp index cad5e54..92e5641 100644 --- a/src/hash/sha256.cpp +++ b/src/hash/sha256.cpp @@ -170,7 +170,7 @@ namespace hash sha256_update(&ctx, data, data_size); sha256_final(&ctx, hash); } - std::vector sha256(const std::vector &data) noexcept + std::vector sha256(std::span data) noexcept { std::vector hash(SHA256_DIGEST_LENGTH); sha256(data.data(), data.size(), hash.data()); diff --git a/src/hex.cpp b/src/hex.cpp index 9ce8feb..e70974e 100644 --- a/src/hex.cpp +++ b/src/hex.cpp @@ -1,4 +1,3 @@ -#include #include #include @@ -31,7 +30,7 @@ namespace hex { return baseN::isValid(str, hexmap); } - bool isValid(const std::string &str) noexcept + bool isValid(std::string_view str) noexcept { return baseN::isValid(str, hexmap); } @@ -46,7 +45,7 @@ namespace hex str[i * 2 + 1] = hexdigits[dv[i] & 0x0F]; } } - std::string encode(const std::vector &data) noexcept + std::string encode(std::span data) noexcept { std::string str(data.size() * 2, ' '); hex::encode(data.data(), data.size(), str.data()); @@ -70,7 +69,7 @@ namespace hex data[i] = hexmap[(int8_t)sv[i * 2]] << 4 | hexmap[(int8_t)sv[i * 2 + 1]]; } } - std::vector decode(const std::string &str) + std::vector decode(std::string_view str) { std::vector data(str.size() / 2); hex::decode(str.data(), data.data(), data.size());