diff --git a/storm/String.cpp b/storm/String.cpp index 8180be8..5631e44 100644 --- a/storm/String.cpp +++ b/storm/String.cpp @@ -206,6 +206,25 @@ void SStrInitialize() { } } +char* SStrChr(char* string, char search) { + STORM_ASSERT(string); + STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr); + + if (!*string) { + return nullptr; + } + + while (*string != search) { + string++; + + if (!*string) { + return nullptr; + } + } + + return string; +} + const char* SStrChr(const char* string, char search) { STORM_ASSERT(string); STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr); @@ -225,6 +244,21 @@ const char* SStrChr(const char* string, char search) { return string; } +char* SStrChrR(char* string, char search) { + STORM_ASSERT(string); + STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr); + + char* result; + + for (result = nullptr; *string; string++) { + if (*string == search) { + result = string; + } + } + + return result; +} + const char* SStrChrR(const char* string, char search) { STORM_ASSERT(string); STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr); @@ -378,14 +412,14 @@ uint32_t SStrPack(char* dest, const char* source, uint32_t destsize) { if (!*v5) { *i = '\0'; - return i - dest; + return static_cast(i - dest); } } } } *i = '\0'; - return i - dest; + return static_cast(i - dest); } size_t SStrPrintf(char* dest, size_t maxchars, const char* format, ...) { diff --git a/storm/String.hpp b/storm/String.hpp index 6aa644e..572db5a 100644 --- a/storm/String.hpp +++ b/storm/String.hpp @@ -7,8 +7,12 @@ #define STORM_MAX_PATH 260 #define STORM_MAX_STR 0x7FFFFFFF +char* SStrChr(char* string, char search); + const char* SStrChr(const char* string, char search); +char* SStrChrR(char* string, char search); + const char* SStrChrR(const char* string, char search); int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars);