Skip to content

Commit c3298b4

Browse files
committed
Clean up some string and hashing utility functions
1 parent cbb0503 commit c3298b4

File tree

5 files changed

+17
-3
lines changed

5 files changed

+17
-3
lines changed

include/Hashing.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include <array> // TODO: When we use C++20, change this to <span>
1010
#include <cstdint>
11+
#include <string_view>
1112

1213
namespace OpenShock {
1314
class MD5 {
@@ -20,6 +21,7 @@ namespace OpenShock {
2021

2122
inline bool begin() { return mbedtls_md5_starts_ret(&ctx) == 0; }
2223
inline bool update(const uint8_t* data, std::size_t dataLen) { return mbedtls_md5_update_ret(&ctx, data, dataLen) == 0; }
24+
inline bool update(std::string_view data) { return update(reinterpret_cast<const uint8_t*>(data.data()), data.length()); }
2325
inline bool finish(std::array<uint8_t, 16>& hash) { return mbedtls_md5_finish_ret(&ctx, hash.data()) == 0; }
2426

2527
private:
@@ -35,6 +37,7 @@ namespace OpenShock {
3537

3638
inline bool begin() { return mbedtls_sha1_starts_ret(&ctx) == 0; }
3739
inline bool update(const uint8_t* data, std::size_t dataLen) { return mbedtls_sha1_update_ret(&ctx, data, dataLen) == 0; }
40+
inline bool update(std::string_view data) { return update(reinterpret_cast<const uint8_t*>(data.data()), data.length()); }
3841
inline bool finish(std::array<uint8_t, 20>& hash) { return mbedtls_sha1_finish_ret(&ctx, hash.data()) == 0; }
3942

4043
private:
@@ -50,6 +53,7 @@ namespace OpenShock {
5053

5154
inline bool begin() { return mbedtls_sha256_starts_ret(&ctx, 0) == 0; }
5255
inline bool update(const uint8_t* data, std::size_t dataLen) { return mbedtls_sha256_update_ret(&ctx, data, dataLen) == 0; }
56+
inline bool update(std::string_view data) { return update(reinterpret_cast<const uint8_t*>(data.data()), data.length()); }
5357
inline bool finish(std::array<uint8_t, 32>& hash) { return mbedtls_sha256_finish_ret(&ctx, hash.data()) == 0; }
5458

5559
private:

include/util/StringUtils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,8 @@ namespace OpenShock {
6262
std::vector<std::string_view> StringSplit(const std::string_view view, bool (*predicate)(char delimiter), std::size_t maxSplits = std::numeric_limits<std::size_t>::max());
6363
std::vector<std::string_view> StringSplitNewLines(const std::string_view view, std::size_t maxSplits = std::numeric_limits<std::size_t>::max());
6464
std::vector<std::string_view> StringSplitWhiteSpace(const std::string_view view, std::size_t maxSplits = std::numeric_limits<std::size_t>::max());
65+
66+
bool StringIEquals(const std::string_view a, const std::string_view b);
67+
6568
String StringToArduinoString(std::string_view view);
6669
} // namespace OpenShock

src/Convert.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "Convert.h"
22

33
#include "util/DigitCounter.h"
4+
#include "util/StringUtils.h"
45

56
#include <cstdint>
67
#include <cstring>
@@ -234,12 +235,12 @@ bool Convert::ToBool(std::string_view str, bool& val)
234235
return false;
235236
}
236237

237-
if (strncasecmp(str.data(), "true", str.length()) == 0) {
238+
if (OpenShock::StringIEquals(str, "true"sv)) {
238239
val = true;
239240
return true;
240241
}
241242

242-
if (strncasecmp(str.data(), "false", str.length()) == 0) {
243+
if (OpenShock::StringIEquals(str, "false"sv)) {
243244
val = false;
244245
return true;
245246
}

src/serial/SerialInputHandler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ namespace std {
5151
};
5252

5353
struct equals_ci {
54-
bool operator()(std::string_view a, std::string_view b) const { return strncasecmp(a.data(), b.data(), std::max(a.size(), b.size())) == 0; }
54+
bool operator()(std::string_view a, std::string_view b) const { return OpenShock::StringIEquals(a, b); }
5555
};
5656
} // namespace std
5757

src/util/StringUtils.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ std::vector<std::string_view> OpenShock::StringSplitWhiteSpace(const std::string
123123
);
124124
}
125125

126+
bool OpenShock::StringIEquals(const std::string_view a, const std::string_view b)
127+
{
128+
if (a.size() != b.size()) return false;
129+
return strncasecmp(a.data(), b.data(), a.size()) == 0;
130+
}
131+
126132
String OpenShock::StringToArduinoString(std::string_view view) {
127133
return String(view.data(), view.size());
128134
}

0 commit comments

Comments
 (0)