diff --git a/storm/String.cpp b/storm/String.cpp index becc2fb..43a6b1a 100644 --- a/storm/String.cpp +++ b/storm/String.cpp @@ -201,3 +201,12 @@ uint32_t SStrHashHT(const char* string) { return bjhash((uint8_t*)&normalized, length, 0); } + +size_t SStrLen(const char* string) { + STORM_ASSERT(string); + + const char* c; + for (c = string; *c; ++c) + ; + return c - string; +} diff --git a/storm/String.hpp b/storm/String.hpp index 285c7ef..6b27ddb 100644 --- a/storm/String.hpp +++ b/storm/String.hpp @@ -15,4 +15,6 @@ size_t SStrCopy(char* dest, const char* source, size_t destsize); uint32_t SStrHashHT(const char* string); +size_t SStrLen(const char* string); + #endif diff --git a/test/String.cpp b/test/String.cpp index 4afe378..97238fc 100644 --- a/test/String.cpp +++ b/test/String.cpp @@ -54,3 +54,10 @@ TEST_CASE("SStrHashHT", "[string]") { REQUIRE(hashForwardSlash == hashBackSlash); } } + +TEST_CASE("SStrLen", "[string]") { + SECTION("calculates string length correctly") { + auto length = SStrLen("foo"); + REQUIRE(length == 3); + } +}