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