Fix GCC errors
This commit is contained in:
parent
45f07986c3
commit
a964466c8b
@ -20,7 +20,7 @@ endif ()
|
|||||||
if (NOT DEFINED MSVC)
|
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_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(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 ()
|
else ()
|
||||||
set(WARNING_FLAGS_C /W4)
|
set(WARNING_FLAGS_C /W4)
|
||||||
set(WARNING_FLAGS_CXX /W4)
|
set(WARNING_FLAGS_CXX /W4)
|
||||||
@ -47,10 +47,10 @@ endif()
|
|||||||
message(STATUS "Configure libguf_test...")
|
message(STATUS "Configure libguf_test...")
|
||||||
target_compile_definitions(libguf_test PUBLIC TEST_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/test/data/")
|
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_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 "Configured libguf_test")
|
||||||
|
|
||||||
message(STATUS "Configure libguf_example...")
|
message(STATUS "Configure libguf_example...")
|
||||||
target_compile_options(libguf_example PRIVATE ${WARNING_FLAGS_C} $<$<CONFIG:Debug>: ${DBG_FLAGS}>)
|
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")
|
message(STATUS "Configured libguf_example")
|
||||||
|
|||||||
@ -9,6 +9,15 @@
|
|||||||
#include "guf_assert.h"
|
#include "guf_assert.h"
|
||||||
#include "guf_hash.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;
|
typedef const char* guf_cstr_const;
|
||||||
|
|
||||||
static inline int guf_cstr_const_cmp(const guf_cstr_const *a, const guf_cstr_const *b)
|
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;
|
*dst = NULL;
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
*dst = strdup(*src);
|
*dst = guf_cstr_dup(*src);
|
||||||
GUF_ASSERT_RELEASE(*dst);
|
GUF_ASSERT_RELEASE(*dst);
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
//
|
||||||
static inline guf_cstr_heap *guf_cstr_heap_move(guf_cstr_heap *dst, guf_cstr_heap *src, void *ctx)
|
static inline guf_cstr_heap *guf_cstr_heap_move(guf_cstr_heap *dst, guf_cstr_heap *src, void *ctx)
|
||||||
{
|
{
|
||||||
(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_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_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
|
#endif
|
||||||
|
|
||||||
// 1.) guf_str_view:
|
// 1.) guf_str_view:
|
||||||
|
|||||||
@ -132,7 +132,7 @@ int main(void)
|
|||||||
dbuf_heap_cstr strings = dbuf_heap_cstr_new(&allocator);
|
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, "Foo 1");
|
||||||
dbuf_heap_cstr_push_val_cpy(&strings, "Bar 2");
|
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);
|
dbuf_heap_cstr_push(&strings, &move_me, GUF_CPY_MOVE);
|
||||||
GUF_ASSERT_RELEASE(move_me == NULL);
|
GUF_ASSERT_RELEASE(move_me == NULL);
|
||||||
|
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public:
|
|||||||
bool passed {false}, done {false};
|
bool passed {false}, done {false};
|
||||||
size_t num_failed_checks {0}, num_passed_checks {0};
|
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;
|
virtual ~Test() = default;
|
||||||
|
|
||||||
size_t total_checks() const
|
size_t total_checks() const
|
||||||
@ -67,7 +67,7 @@ public:
|
|||||||
|
|
||||||
void before_run()
|
void before_run()
|
||||||
{
|
{
|
||||||
time_start = std::chrono::high_resolution_clock::now();
|
time_start = std::chrono::steady_clock::now();
|
||||||
}
|
}
|
||||||
|
|
||||||
void after_run()
|
void after_run()
|
||||||
@ -75,7 +75,7 @@ public:
|
|||||||
done = true;
|
done = true;
|
||||||
passed = (num_failed_checks == 0);
|
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);
|
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);
|
dbuf_str_view delims = dbuf_str_view_new(&allocator);
|
||||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_WHITESPACE); ++i) {
|
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);
|
dbuf_str_view_push_val(&delims, d);
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_COMMON_PUNCT); ++i) {
|
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);
|
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";
|
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);
|
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)));
|
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)) {
|
if (TEST_CHECK(foo)) {
|
||||||
TEST_CHECK(*foo == 42);
|
TEST_CHECK(*foo == 42);
|
||||||
}
|
}
|
||||||
guf_str_append(&str_cpy, GUF_CSTR_LIT_TO_VIEW_CPP("Foobar"));
|
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)) {
|
if (TEST_CHECK(foo2)) {
|
||||||
TEST_CHECK(*foo2 == 42);
|
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()};
|
const guf_str_view delim_sv = guf_str_view{.str = delim.data(), .len = (ptrdiff_t)delim.size()};
|
||||||
guf_str_view src = guf_str_view{.len = (ptrdiff_t)str.size(), .str = str.data()};
|
guf_str_view src = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
|
||||||
size_t n = 0;
|
size_t n = 0;
|
||||||
do {
|
do {
|
||||||
const guf_str_view popped = guf_str_view_pop_split(&src, delim_sv);
|
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)
|
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;
|
std::vector<guf_str_view> delims;
|
||||||
for (const auto delim : delims_in) {
|
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);
|
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");
|
push_check_name("count_words");
|
||||||
dbuf_str_view delims = dbuf_str_view_new(&allocator);
|
dbuf_str_view delims = dbuf_str_view_new(&allocator);
|
||||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_WHITESPACE); ++i) {
|
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);
|
dbuf_str_view_push_val(&delims, d);
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < GUF_ARR_SIZE(GUF_UTF8_COMMON_PUNCT); ++i) {
|
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);
|
dbuf_str_view_push_val(&delims, d);
|
||||||
}
|
}
|
||||||
int words = count_words(TEST_DATA_DIR "/" "utf8-test.txt", &delims);
|
int words = count_words(TEST_DATA_DIR "/" "utf8-test.txt", &delims);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user