DynString_equal_c_str

This commit is contained in:
2026-07-15 14:33:05 +03:00
parent 7a98eb4dfb
commit 61c76abf89
6 changed files with 53 additions and 17 deletions

View File

@@ -39,11 +39,11 @@ const char* DynString_c_str(const DynString* dstr) {
}
bool DynString_equal(const DynString* s1, const DynString* s2) {
if (s1->len != s2->len) {
if (s1->data == NULL || s2->data == NULL) {
return false;
}
if (s1->data == NULL || s2->data == NULL) {
if (s1->len != s2->len) {
return false;
}
@@ -56,6 +56,24 @@ bool DynString_equal(const DynString* s1, const DynString* s2) {
return true;
}
bool DynString_equal_c_str(const DynString* s1, const char* s2) {
if (s1->data == NULL || s2 == NULL) {
return false;
}
if (s1->len != strlen(s2)) {
return false;
}
for (size_t i = 0; i < s1->len; i++) {
if (s1->data[i] != s2[i]) {
return false;
}
}
return true;
}
void DynString_reserve(DynString* dstr, const size_t new_capacity) {
if (dstr->capacity >= new_capacity) {
return;

View File

@@ -17,6 +17,7 @@ void DynString_free(DynString* dstr);
bool DynString_is_null(const DynString* dstr);
const char* DynString_c_str(const DynString* dstr);
bool DynString_equal(const DynString* s1, const DynString* s2);
bool DynString_equal_c_str(const DynString* s1, const char* s2);
void DynString_concat_c_str(
DynString* dstr,
const char* str,

View File

@@ -23,9 +23,9 @@ PltfWin32State pltf_state = {
#undef PLTF_KEYS_X
bool pltf_has_wgl_extension(const DynString* name) {
bool pltf_has_wgl_extension(const char* name) {
for (size_t i = 0; i < pltf_state.wgl_extensions.len; i++) {
if (DynString_equal(name, DynArray_DynString_at(&pltf_state.wgl_extensions, i))) {
if (DynString_equal_c_str(DynArray_DynString_at(&pltf_state.wgl_extensions, i), name)) {
return true;
}
}
@@ -33,13 +33,6 @@ bool pltf_has_wgl_extension(const DynString* name) {
return false;
}
bool pltf_has_wgl_extension_c_str(const char* name) {
DynString name_dstr = DynString_alloc(name, strlen(name));
const bool res = pltf_has_wgl_extension(&name_dstr);
DynString_free(&name_dstr);
return res;
}
unsigned int vk_to_pltf_key(WPARAM key) {
switch (key) {
case VK_ESCAPE:

View File

@@ -30,8 +30,8 @@ typedef struct {
extern PltfWin32State pltf_state;
extern HMODULE opengl_module;
bool pltf_has_wgl_extension(const DynString* name);
bool pltf_has_wgl_extension_c_str(const char* name);
bool pltf_has_wgl_extension(const char* name);
// bool pltf_has_wgl_extension_c_str(const char* name);
unsigned int vk_to_pltf_key(WPARAM key);
#endif // PLTF_WIN32_INTERNAL_H_

View File

@@ -156,10 +156,10 @@ void pltf_gl_ctx_create() {
free(wgl_extensions_str);
if (!pltf_has_wgl_extension_c_str("WGL_ARB_pixel_format")) {
if (!pltf_has_wgl_extension("WGL_ARB_pixel_format")) {
LOG_FATAL("WGL_ARB_create_context extension required.");
}
if (!pltf_has_wgl_extension_c_str("WGL_ARB_create_context")) {
if (!pltf_has_wgl_extension("WGL_ARB_create_context")) {
LOG_FATAL("WGL_ARB_create_context extension is required");
}

View File

@@ -34,10 +34,33 @@ void test_DynString_equal(void** state) {
DynString_free(&s2);
s1 = DynString_alloc("Hello", strlen("Hello"));
s2 = DynString_alloc("Hello", strlen("Hello"));
assert_true(DynString_equal(&s1, &s2));
s2 = DynString_alloc("Hell0", strlen("Hell0"));
assert_false(DynString_equal(&s1, &s2));
DynString_free(&s1);
DynString_free(&s2);
s1 = DynString_alloc("Hello World", strlen("Hello World"));
s2 = DynString_alloc("Hello", strlen("Hello"));
assert_false(DynString_equal(&s1, &s2));
DynString_free(&s1);
DynString_free(&s2);
}
void test_DynString_equal_c_str(void** state) {
DynString s1 = DynString_alloc("Hello", strlen("Hello"));
char* s2 = "Hello";
assert_true(DynString_equal_c_str(&s1, s2));
DynString_free(&s1);
s1 = DynString_alloc("Hello", strlen("Hello"));
s2 = "Hell0";
assert_false(DynString_equal_c_str(&s1, s2));
DynString_free(&s1);
s1 = DynString_alloc("Hello World", strlen("Hello World"));
s2 = "Hello";
assert_false(DynString_equal_c_str(&s1, s2));
DynString_free(&s1);
}
void test_DynString_concat_c_str(void** state) {
@@ -71,6 +94,7 @@ int main() {
cmocka_unit_test(test_DynString_alloc),
cmocka_unit_test(test_DynString_free),
cmocka_unit_test(test_DynString_equal),
cmocka_unit_test(test_DynString_equal_c_str),
cmocka_unit_test(test_DynString_concat_c_str),
cmocka_unit_test(test_DynString_c_str),
};