feat(string): add non-const string functions and fix narrowing warning

* feat(string): add non-const SStrChr and SStrChrR implementations
* fix(string): resolve narrowing conversion warnings in function SStrPack
This commit is contained in:
Tristan 'Natrist' Cormier 2023-01-19 00:36:07 -05:00 committed by GitHub
parent c42164ea5f
commit 23fb94c19d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 2 deletions

View file

@ -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) { const char* SStrChr(const char* string, char search) {
STORM_ASSERT(string); STORM_ASSERT(string);
STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr); STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr);
@ -225,6 +244,21 @@ const char* SStrChr(const char* string, char search) {
return string; 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) { const char* SStrChrR(const char* string, char search) {
STORM_ASSERT(string); STORM_ASSERT(string);
STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr); STORM_VALIDATE(string, ERROR_INVALID_PARAMETER, nullptr);
@ -378,14 +412,14 @@ uint32_t SStrPack(char* dest, const char* source, uint32_t destsize) {
if (!*v5) { if (!*v5) {
*i = '\0'; *i = '\0';
return i - dest; return static_cast<uint32_t>(i - dest);
} }
} }
} }
} }
*i = '\0'; *i = '\0';
return i - dest; return static_cast<uint32_t>(i - dest);
} }
size_t SStrPrintf(char* dest, size_t maxchars, const char* format, ...) { size_t SStrPrintf(char* dest, size_t maxchars, const char* format, ...) {

View file

@ -7,8 +7,12 @@
#define STORM_MAX_PATH 260 #define STORM_MAX_PATH 260
#define STORM_MAX_STR 0x7FFFFFFF #define STORM_MAX_STR 0x7FFFFFFF
char* SStrChr(char* string, char search);
const char* SStrChr(const 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); const char* SStrChrR(const char* string, char search);
int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars); int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars);