Fix GCC errors
This commit is contained in:
parent
45f07986c3
commit
a964466c8b
@ -20,7 +20,7 @@ endif ()
|
||||
if (NOT DEFINED MSVC)
|
||||
set(WARNING_FLAGS_C -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Wno-unused-function)
|
||||
set(WARNING_FLAGS_CXX -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Woverloaded-virtual -Wredundant-decls -Wctor-dtor-privacy -Wno-unused-function)
|
||||
set(DBG_FLAGS -fsanitize=undefined,address -g3 -glldb -Og)
|
||||
set(DBG_FLAGS -fsanitize=undefined,address -g3 -Og)
|
||||
else ()
|
||||
set(WARNING_FLAGS_C /W4)
|
||||
set(WARNING_FLAGS_CXX /W4)
|
||||
@ -47,10 +47,10 @@ endif()
|
||||
message(STATUS "Configure libguf_test...")
|
||||
target_compile_definitions(libguf_test PUBLIC TEST_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/test/data/")
|
||||
target_compile_options(libguf_test PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${WARNING_FLAGS_CXX}> $<$<COMPILE_LANGUAGE:C>:${WARNING_FLAGS_C}> $<$<CONFIG:Debug>: ${DBG_FLAGS}>)
|
||||
target_link_options(libguf_test PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${WARNING_FLAGS_CXX}> $<$<COMPILE_LANGUAGE:C>:${WARNING_FLAGS_C}> $<$<CONFIG:Debug>: ${DBG_FLAGS}>)
|
||||
target_link_options(libguf_test PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${WARNING_FLAGS_CXX}> $<$<COMPILE_LANGUAGE:C>:${WARNING_FLAGS_C}> $<$<CONFIG:Debug>: ${DBG_FLAGS}> -lm)
|
||||
message(STATUS "Configured libguf_test")
|
||||
|
||||
message(STATUS "Configure libguf_example...")
|
||||
target_compile_options(libguf_example PRIVATE ${WARNING_FLAGS_C} $<$<CONFIG:Debug>: ${DBG_FLAGS}>)
|
||||
target_link_options(libguf_example PRIVATE ${WARNING_FLAGS_C} $<$<CONFIG:Debug>: ${DBG_FLAGS}>)
|
||||
target_link_options(libguf_example PRIVATE ${WARNING_FLAGS_C} $<$<CONFIG:Debug>: ${DBG_FLAGS}> -lm)
|
||||
message(STATUS "Configured libguf_example")
|
||||
|
||||
@ -9,6 +9,15 @@
|
||||
#include "guf_assert.h"
|
||||
#include "guf_hash.h"
|
||||
|
||||
static inline char *guf_cstr_dup(const char *cstr)
|
||||
{
|
||||
char *cpy = (char*)calloc(strlen(cstr) + 1, 1); // Explicit conversion for cpp...
|
||||
if (cpy) {
|
||||
strcpy(cpy, cstr);
|
||||
}
|
||||
return cpy;
|
||||
}
|
||||
|
||||
typedef const char* guf_cstr_const;
|
||||
|
||||
static inline int guf_cstr_const_cmp(const guf_cstr_const *a, const guf_cstr_const *b)
|
||||
@ -42,11 +51,11 @@ static inline guf_cstr_heap *guf_cstr_heap_copy(guf_cstr_heap *dst, const guf_cs
|
||||
*dst = NULL;
|
||||
return dst;
|
||||
}
|
||||
*dst = strdup(*src);
|
||||
*dst = guf_cstr_dup(*src);
|
||||
GUF_ASSERT_RELEASE(*dst);
|
||||
return dst;
|
||||
}
|
||||
|
||||
//
|
||||
static inline guf_cstr_heap *guf_cstr_heap_move(guf_cstr_heap *dst, guf_cstr_heap *src, void *ctx)
|
||||
{
|
||||
(void)ctx;
|
||||
|
||||
@ -77,7 +77,7 @@ typedef struct guf_str_tok_state {
|
||||
#define GUF_CSTR_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)strlen(CSTR)}
|
||||
#define GUF_CSTR_LIT_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)sizeof(CSTR) - 1}
|
||||
|
||||
#define GUF_STR_UNINITIALISED_CPP guf_str{.allocator = NULL, .data.lng.size = 0, .data.lng.capacity = 0, .data.lng.c_str = NULL}
|
||||
#define GUF_STR_UNINITIALISED_CPP guf_str{.data = {0}, .allocator = NULL}
|
||||
#endif
|
||||
|
||||
// 1.) guf_str_view:
|
||||
|
||||
@ -132,7 +132,7 @@ int main(void)
|
||||
dbuf_heap_cstr strings = dbuf_heap_cstr_new(&allocator);
|
||||
dbuf_heap_cstr_push_val_cpy(&strings, "Foo 1");
|
||||
dbuf_heap_cstr_push_val_cpy(&strings, "Bar 2");
|
||||
char *move_me = strdup("Baz 3");
|
||||
char *move_me = guf_cstr_dup("Baz 3");
|
||||
dbuf_heap_cstr_push(&strings, &move_me, GUF_CPY_MOVE);
|
||||
GUF_ASSERT_RELEASE(move_me == NULL);
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ public:
|
||||
bool passed {false}, done {false};
|
||||
size_t num_failed_checks {0}, num_passed_checks {0};
|
||||
|
||||
Test(const std::string& name) : name{name} {}
|
||||
Test(const std::string& nm) : name{nm} {}
|
||||
virtual ~Test() = default;
|
||||
|
||||
size_t total_checks() const
|
||||
@ -67,7 +67,7 @@ public:
|
||||
|
||||
void before_run()
|
||||
{
|
||||
time_start = std::chrono::high_resolution_clock::now();
|
||||
time_start = std::chrono::steady_clock::now();
|
||||
}
|
||||
|
||||
void after_run()
|
||||
@ -75,7 +75,7 @@ public:
|
||||
done = true;
|
||||
passed = (num_failed_checks == 0);
|
||||
|
||||
time_end = std::chrono::high_resolution_clock::now();
|
||||
time_end = std::chrono::steady_clock::now();
|
||||
runtime_ms = std::chrono::duration_cast<decltype(runtime_ms)>(time_end - time_start);
|
||||
}
|
||||
|
||||
|
||||
@ -61,11 +61,11 @@ void DictSvToIntTest::insert_lookup(std::optional<ptrdiff_t> inital_dict_cap)
|
||||
|
||||
dbuf_str_view delims = dbuf_str_view_new(&allocator);
|
||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_WHITESPACE); ++i) {
|
||||
guf_str_view d = {.len = (ptrdiff_t)strlen(GUF_UTF8_WHITESPACE[i]), .str = GUF_UTF8_WHITESPACE[i]};
|
||||
guf_str_view d = {.str = GUF_UTF8_WHITESPACE[i], .len = (ptrdiff_t)strlen(GUF_UTF8_WHITESPACE[i])};
|
||||
dbuf_str_view_push_val(&delims, d);
|
||||
}
|
||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_COMMON_PUNCT); ++i) {
|
||||
guf_str_view d = {.len = (ptrdiff_t)strlen(GUF_UTF8_COMMON_PUNCT[i]), .str = GUF_UTF8_COMMON_PUNCT[i]};
|
||||
guf_str_view d = {.str = GUF_UTF8_COMMON_PUNCT[i], .len = (ptrdiff_t)strlen(GUF_UTF8_COMMON_PUNCT[i])};
|
||||
dbuf_str_view_push_val(&delims, d);
|
||||
}
|
||||
|
||||
@ -378,14 +378,14 @@ void DictSvToIntTest::insert_lookup(std::optional<ptrdiff_t> inital_dict_cap)
|
||||
str += c % 2 ? "AAA" : "aaa";
|
||||
}
|
||||
|
||||
guf_str str_cpy = guf_str_new(guf_str_view{.len = (ptrdiff_t)str.size(), .str = str.data()}, &allocator);
|
||||
guf_str str_cpy = guf_str_new(guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()}, &allocator);
|
||||
dict_str_i32_insert_val_arg(&word_cnt_dict_str, str_cpy, 42, GUF_CPY_DEEP, GUF_CPY_VALUE);
|
||||
int32_t *foo = dict_str_i32_at_val_arg(&word_cnt_dict_str, guf_str_new_readonly(guf_str_view_from_str(&str_cpy)));
|
||||
if (TEST_CHECK(foo)) {
|
||||
TEST_CHECK(*foo == 42);
|
||||
}
|
||||
guf_str_append(&str_cpy, GUF_CSTR_LIT_TO_VIEW_CPP("Foobar"));
|
||||
int32_t *foo2 = dict_str_i32_at_val_arg(&word_cnt_dict_str, guf_str_new_readonly(guf_str_view{.len = (ptrdiff_t)str.size(), .str = str.data()}));
|
||||
int32_t *foo2 = dict_str_i32_at_val_arg(&word_cnt_dict_str, guf_str_new_readonly(guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()}));
|
||||
if (TEST_CHECK(foo2)) {
|
||||
TEST_CHECK(*foo2 == 42);
|
||||
}
|
||||
|
||||
@ -335,8 +335,8 @@ std::vector<std::string_view> StrTest::test_popsplit(std::string_view str, std::
|
||||
}
|
||||
|
||||
|
||||
const guf_str_view delim_sv = guf_str_view{.len = (ptrdiff_t)delim.size(), .str = delim.data()};
|
||||
guf_str_view src = guf_str_view{.len = (ptrdiff_t)str.size(), .str = str.data()};
|
||||
const guf_str_view delim_sv = guf_str_view{.str = delim.data(), .len = (ptrdiff_t)delim.size()};
|
||||
guf_str_view src = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
|
||||
size_t n = 0;
|
||||
do {
|
||||
const guf_str_view popped = guf_str_view_pop_split(&src, delim_sv);
|
||||
@ -356,10 +356,10 @@ std::vector<std::string_view> StrTest::test_popsplit(std::string_view str, std::
|
||||
|
||||
std::vector<std::string_view> StrTest::get_toks(std::string_view sv_in, const std::vector<std::string_view>& delims_in, bool preserve_delims, guf_str_tok_delim_opt opt)
|
||||
{
|
||||
const guf_str_view sv = guf_str_view{.len = (ptrdiff_t)sv_in.size(), .str = sv_in.data()};
|
||||
const guf_str_view sv = guf_str_view{.str = sv_in.data(), .len = (ptrdiff_t)sv_in.size()};
|
||||
std::vector<guf_str_view> delims;
|
||||
for (const auto delim : delims_in) {
|
||||
delims.push_back(guf_str_view{.len = (ptrdiff_t)delim.size(), .str = delim.data()});
|
||||
delims.push_back(guf_str_view{.str = delim.data(), .len = (ptrdiff_t)delim.size()});
|
||||
}
|
||||
guf_str_tok_state tok_state = guf_str_tok_state_new(sv, delims.data(), std::ssize(delims), opt);
|
||||
|
||||
|
||||
@ -27,11 +27,11 @@ void UTF8Test::run()
|
||||
push_check_name("count_words");
|
||||
dbuf_str_view delims = dbuf_str_view_new(&allocator);
|
||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_WHITESPACE); ++i) {
|
||||
guf_str_view d = {.len = (ptrdiff_t)strlen(GUF_UTF8_WHITESPACE[i]), .str = GUF_UTF8_WHITESPACE[i]};
|
||||
guf_str_view d = {.str = GUF_UTF8_WHITESPACE[i], .len = (ptrdiff_t)strlen(GUF_UTF8_WHITESPACE[i])};
|
||||
dbuf_str_view_push_val(&delims, d);
|
||||
}
|
||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_COMMON_PUNCT); ++i) {
|
||||
guf_str_view d = {.len = (ptrdiff_t)strlen(GUF_UTF8_COMMON_PUNCT[i]), .str = GUF_UTF8_COMMON_PUNCT[i]};
|
||||
guf_str_view d = {.str = GUF_UTF8_COMMON_PUNCT[i], .len = (ptrdiff_t)strlen(GUF_UTF8_COMMON_PUNCT[i])};
|
||||
dbuf_str_view_push_val(&delims, d);
|
||||
}
|
||||
int words = count_words(TEST_DATA_DIR "/" "utf8-test.txt", &delims);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user