This commit is contained in:
+10
-10
@@ -5,20 +5,20 @@
|
||||
#include "ev_types.h"
|
||||
|
||||
// Signed integers
|
||||
TYPEDATA_GEN(i8);
|
||||
TYPEDATA_GEN(i16);
|
||||
TYPEDATA_GEN(i32);
|
||||
TYPEDATA_GEN(i64);
|
||||
TYPEDATA_GEN(i8)
|
||||
TYPEDATA_GEN(i16)
|
||||
TYPEDATA_GEN(i32)
|
||||
TYPEDATA_GEN(i64)
|
||||
|
||||
// Unsigned integers
|
||||
TYPEDATA_GEN(u8 );
|
||||
TYPEDATA_GEN(u16);
|
||||
TYPEDATA_GEN(u32);
|
||||
TYPEDATA_GEN(u64);
|
||||
TYPEDATA_GEN(u8 )
|
||||
TYPEDATA_GEN(u16)
|
||||
TYPEDATA_GEN(u32)
|
||||
TYPEDATA_GEN(u64)
|
||||
|
||||
// Floating-Point Numbers
|
||||
TYPEDATA_GEN(f32);
|
||||
TYPEDATA_GEN(f64);
|
||||
TYPEDATA_GEN(f32)
|
||||
TYPEDATA_GEN(f64)
|
||||
|
||||
struct Int8Data { i8 MIN; i8 MAX; };
|
||||
struct Int16Data { i16 MIN; i16 MAX; };
|
||||
|
||||
@@ -56,7 +56,7 @@ typedef enum {
|
||||
EV_STR_ERR_NONE = 0,
|
||||
EV_STR_ERR_OOM = -1,
|
||||
} evstring_error_t;
|
||||
TYPEDATA_GEN(evstring_error_t, DEFAULT(EV_STR_ERR_NONE));
|
||||
TYPEDATA_GEN(evstring_error_t, DEFAULT(EV_STR_ERR_NONE))
|
||||
|
||||
struct evstr_meta_t {
|
||||
EV_DEBUG(u64 magic;)
|
||||
@@ -183,11 +183,6 @@ evstring_findFirst(
|
||||
const evstring text,
|
||||
const evstring query);
|
||||
|
||||
evstring_view
|
||||
__evstring_findFirst_impl(
|
||||
evstring_view text,
|
||||
evstring_view query);
|
||||
|
||||
EV_STR_API evstring
|
||||
evstring_replaceFirst(
|
||||
const evstring text,
|
||||
@@ -223,7 +218,7 @@ TYPEDATA_GEN(evstring,
|
||||
EQUAL(Default),
|
||||
COPY(Default),
|
||||
FREE(Default)
|
||||
);
|
||||
)
|
||||
|
||||
DEFINE_EQUAL_FUNCTION(evstring_view, Default)
|
||||
{
|
||||
@@ -232,7 +227,7 @@ DEFINE_EQUAL_FUNCTION(evstring_view, Default)
|
||||
|
||||
TYPEDATA_GEN(evstring_view,
|
||||
EQUAL(Default),
|
||||
);
|
||||
)
|
||||
|
||||
|
||||
#if defined(EV_STR_IMPLEMENTATION)
|
||||
@@ -303,10 +298,11 @@ evstring_newFmt_v(
|
||||
{
|
||||
va_list test;
|
||||
va_copy(test, args);
|
||||
i32 len = vsnprintf(NULL, 0, fmt, test);
|
||||
if(len < 0) {
|
||||
i32 expected_len = vsnprintf(NULL, 0, fmt, test);
|
||||
if(expected_len < 0) {
|
||||
return EV_INVALID(evstring);
|
||||
}
|
||||
size_t len = (size_t)expected_len;
|
||||
evstring res = evstring_new_impl(NULL, 0);
|
||||
evstring_setLength(&res, len);
|
||||
vsnprintf(res, len + 1, fmt, args);
|
||||
@@ -578,7 +574,7 @@ evstring_addSpace(
|
||||
}
|
||||
|
||||
evstring_view
|
||||
__evstring_findFirst_impl(
|
||||
evstring_findFirst_impl(
|
||||
evstring_view text,
|
||||
evstring_view query)
|
||||
{
|
||||
@@ -612,7 +608,7 @@ evstring_findFirst(
|
||||
{
|
||||
evstr_asserttype(text);
|
||||
evstr_asserttype(query);
|
||||
return __evstring_findFirst_impl(evstring_slice(text, 0, -1), evstring_slice(query, 0, -1));
|
||||
return evstring_findFirst_impl(evstring_slice(text, 0, -1), evstring_slice(query, 0, -1));
|
||||
}
|
||||
|
||||
evstring
|
||||
|
||||
+7
-6
@@ -80,9 +80,10 @@ typedef struct {
|
||||
#define EV_OVERRIDE_VAR(T) EV_CAT(__ev_internal_override_var_,T)
|
||||
#define TypeData(T) EV_CAT(EV_TYPEDATA_,T)
|
||||
#define TYPEDATA_GEN(T, ...) \
|
||||
EV_WARNING_PUSH(); \
|
||||
EV_WARNING_DISABLE_GCC("override-init"); \
|
||||
EV_WARNING_DISABLE_CLANG("initializer-overrides"); \
|
||||
EV_WARNING_PUSH() \
|
||||
EV_WARNING_DISABLE_GCC("override-init") \
|
||||
EV_WARNING_DISABLE_CLANG("initializer-overrides") \
|
||||
EV_WARNING_DISABLE_CLANG("reserved-identifier") \
|
||||
EV_UNUSED static const EvTypeData TypeData(T) = { \
|
||||
EV_DEBUG(.name = EV_STRINGIZE(T),) \
|
||||
.size = sizeof(T), \
|
||||
@@ -91,8 +92,8 @@ typedef struct {
|
||||
.invalid_val = (void*)&(T){0}, \
|
||||
EV_VA_OPT(__VA_ARGS__)(EV_FOREACH_UDATA(__EV_STRUCT_METHOD_DEF, T, __VA_ARGS__)) \
|
||||
}; \
|
||||
EV_WARNING_POP(); \
|
||||
EV_UNUSED static T EV_OVERRIDE_VAR(T)
|
||||
EV_UNUSED static T EV_OVERRIDE_VAR(T); \
|
||||
EV_WARNING_POP()
|
||||
|
||||
#define __EV_STRUCT_METHOD_DEF(T, ...) EV_CAT(EV_CAT(__EV_,EV_HEAD __VA_ARGS__),_FN)(T, EV_TAIL __VA_ARGS__)
|
||||
|
||||
@@ -152,6 +153,6 @@ DEFINE_TOSTR_FUNCTION(EvTypeData, EvTypeDataStringize)
|
||||
}
|
||||
|
||||
TYPEDATA_GEN(EvTypeData,
|
||||
TOSTR(EvTypeDataStringize));
|
||||
TOSTR(EvTypeDataStringize))
|
||||
|
||||
#endif // EV_HEADERS_TYPES_H
|
||||
|
||||
+19
-1
@@ -1,8 +1,22 @@
|
||||
project('evol-headers', 'c',
|
||||
default_options : [ 'c_std=c23' ])
|
||||
default_options : [
|
||||
'c_std=c23',
|
||||
# 'warning_level=everything',
|
||||
# 'werror=true'
|
||||
]
|
||||
)
|
||||
|
||||
headers_include = include_directories('.')
|
||||
|
||||
disabled_warnings = {
|
||||
'clang': [
|
||||
'unused-macros',
|
||||
'reserved-macro-identifier',
|
||||
'pre-c11-compat',
|
||||
'pre-c23-compat',
|
||||
]
|
||||
}
|
||||
|
||||
evh_c_args = []
|
||||
buildtype = get_option('buildtype')
|
||||
if buildtype == 'debug'
|
||||
@@ -20,6 +34,10 @@ elif cc.get_id() == 'clang'
|
||||
evh_c_args += '-DEV_CC_CLANG=1'
|
||||
endif
|
||||
|
||||
foreach w:disabled_warnings[cc.get_id()]
|
||||
evh_c_args += '-Wno-'+w
|
||||
endforeach
|
||||
|
||||
# All other targets should follow the same template
|
||||
str_lib = static_library('ev_str', files('buildfiles/ev_str.c'), c_args: evh_c_args)
|
||||
vec_lib = static_library('ev_vec', files('buildfiles/ev_vec.c'), c_args: evh_c_args)
|
||||
|
||||
Reference in New Issue
Block a user