Merge pull request #5359 from norihiro/test-darray-type

Test darray type during CI
This commit is contained in:
Jim
2021-10-01 15:17:13 -07:00
committed by GitHub
7 changed files with 119 additions and 13 deletions
+9
View File
@@ -207,6 +207,11 @@ if(APPLE)
elseif(UNIX)
option(USE_XDG "Utilize XDG Base Directory Specification" ON)
option(ENABLE_WAYLAND "Build support for Wayland" ON)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
option(ENABLE_DARRAY_TYPE_TEST "Test types of darray argument" ON)
else()
option(ENABLE_DARRAY_TYPE_TEST "Test types of darray argument" OFF)
endif()
if(USE_XDG)
add_definitions(-DUSE_XDG)
@@ -215,6 +220,10 @@ elseif(UNIX)
if(NOT UNIX_STRUCTURE)
list(APPEND CMAKE_INSTALL_RPATH "$ORIGIN")
endif()
if(ENABLE_DARRAY_TYPE_TEST)
add_definitions(-DENABLE_DARRAY_TYPE_TEST)
endif()
endif()
if(LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "e2k")
+8 -4
View File
@@ -1017,12 +1017,14 @@ static inline int ep_parse_param_assign_intfloat(struct effect_parser *ep,
float f = (float)os_strtod(ep->cfp.cur_token->str.array);
if (is_negative)
f = -f;
da_push_back_array(param->default_val, &f, sizeof(float));
da_push_back_array(param->default_val, (uint8_t *)&f,
sizeof(float));
} else {
long l = strtol(ep->cfp.cur_token->str.array, NULL, 10);
if (is_negative)
l = -l;
da_push_back_array(param->default_val, &l, sizeof(long));
da_push_back_array(param->default_val, (uint8_t *)&l,
sizeof(long));
}
return PARSE_SUCCESS;
@@ -1036,11 +1038,13 @@ static inline int ep_parse_param_assign_bool(struct effect_parser *ep,
if (cf_token_is(&ep->cfp, "true")) {
long l = 1;
da_push_back_array(param->default_val, &l, sizeof(long));
da_push_back_array(param->default_val, (uint8_t *)&l,
sizeof(long));
return PARSE_SUCCESS;
} else if (cf_token_is(&ep->cfp, "false")) {
long l = 0;
da_push_back_array(param->default_val, &l, sizeof(long));
da_push_back_array(param->default_val, (uint8_t *)&l,
sizeof(long));
return PARSE_SUCCESS;
}
+4 -4
View File
@@ -223,10 +223,10 @@ struct ep_func {
char *name, *ret_type, *mapping;
struct dstr contents;
DARRAY(struct ep_var) param_vars;
DARRAY(const char *) func_deps;
DARRAY(const char *) struct_deps;
DARRAY(const char *) param_deps;
DARRAY(const char *) sampler_deps;
DARRAY(char *) func_deps;
DARRAY(char *) struct_deps;
DARRAY(char *) param_deps;
DARRAY(char *) sampler_deps;
bool written;
};
+4 -2
View File
@@ -541,12 +541,14 @@ static inline int sp_parse_param_assign_intfloat(struct shader_parser *sp,
float f = (float)os_strtod(sp->cfp.cur_token->str.array);
if (is_negative)
f = -f;
da_push_back_array(param->default_val, &f, sizeof(float));
da_push_back_array(param->default_val, (uint8_t *)&f,
sizeof(float));
} else {
long l = strtol(sp->cfp.cur_token->str.array, NULL, 10);
if (is_negative)
l = -l;
da_push_back_array(param->default_val, &l, sizeof(long));
da_push_back_array(param->default_val, (uint8_t *)&l,
sizeof(long));
}
return PARSE_SUCCESS;
+1 -1
View File
@@ -1222,7 +1222,7 @@ static bool add_caption(struct obs_output *output, struct encoder_packet *out)
sei_init(&sei, 0.0);
da_init(out_data);
da_push_back_array(out_data, &ref, sizeof(ref));
da_push_back_array(out_data, (uint8_t *)&ref, sizeof(ref));
da_push_back_array(out_data, out->data, out->size);
if (output->caption_data.size > 0) {
+1 -1
View File
@@ -20,7 +20,7 @@
static size_t array_output_write(void *param, const void *data, size_t size)
{
struct array_output_data *output = param;
da_push_back_array(output->bytes, data, size);
da_push_back_array(output->bytes, (uint8_t *)data, size);
return size;
}
+92 -1
View File
@@ -494,33 +494,124 @@ static inline void darray_swap(const size_t element_size, struct darray *dst,
#define da_move(dst, src) darray_move(&dst.da, &src.da)
#define da_find(v, item, idx) darray_find(sizeof(*v.array), &v.da, item, idx)
#ifdef ENABLE_DARRAY_TYPE_TEST
#ifdef __cplusplus
#define da_type_test(v, item) \
({ \
if (false) { \
auto _t = v.array; \
_t = (item); \
(void)_t; \
*(v).array = *(item); \
} \
})
#else
#define da_type_test(v, item) \
({ \
if (false) { \
const typeof(*v.array) *_t; \
_t = (item); \
(void)_t; \
*(v).array = *(item); \
} \
})
#endif
#endif // ENABLE_DARRAY_TYPE_TEST
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_find(v, item, idx) \
({ \
da_type_test(v, item); \
darray_find(sizeof(*v.array), &v.da, item, idx); \
})
#else
#define da_find(v, item, idx) darray_find(sizeof(*v.array), &v.da, item, idx)
#endif
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_push_back(v, item) \
({ \
da_type_test(v, item); \
darray_push_back(sizeof(*v.array), &v.da, item); \
})
#else
#define da_push_back(v, item) darray_push_back(sizeof(*v.array), &v.da, item)
#endif
#define da_push_back_new(v) darray_push_back_new(sizeof(*v.array), &v.da)
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_push_back_array(dst, src_array, n) \
({ \
da_type_test(dst, src_array); \
darray_push_back_array(sizeof(*dst.array), &dst.da, src_array, \
n); \
})
#else
#define da_push_back_array(dst, src_array, n) \
darray_push_back_array(sizeof(*dst.array), &dst.da, src_array, n)
#endif
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_push_back_da(dst, src) \
({ \
da_type_test(dst, src.array); \
darray_push_back_darray(sizeof(*dst.array), &dst.da, &src.da); \
})
#else
#define da_push_back_da(dst, src) \
darray_push_back_darray(sizeof(*dst.array), &dst.da, &src.da)
#endif
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_insert(v, idx, item) \
({ \
da_type_test(v, item); \
darray_insert(sizeof(*v.array), &v.da, idx, item); \
})
#else
#define da_insert(v, idx, item) \
darray_insert(sizeof(*v.array), &v.da, idx, item)
#endif
#define da_insert_new(v, idx) darray_insert_new(sizeof(*v.array), &v.da, idx)
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_insert_array(dst, idx, src_array, n) \
({ \
da_type_test(dst, src_array); \
darray_insert_array(sizeof(*dst.array), &dst.da, idx, \
src_array, n); \
})
#else
#define da_insert_array(dst, idx, src_array, n) \
darray_insert_array(sizeof(*dst.array), &dst.da, idx, src_array, n)
#endif
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_insert_da(dst, idx, src) \
({ \
da_type_test(dst, src.array); \
darray_insert_darray(sizeof(*dst.array), &dst.da, idx, \
&src.da); \
})
#else
#define da_insert_da(dst, idx, src) \
darray_insert_darray(sizeof(*dst.array), &dst.da, idx, &src.da)
#endif
#define da_erase(dst, idx) darray_erase(sizeof(*dst.array), &dst.da, idx)
#ifdef ENABLE_DARRAY_TYPE_TEST
#define da_erase_item(dst, item) \
({ \
da_type_test(dst, item); \
darray_erase_item(sizeof(*dst.array), &dst.da, item); \
})
#else
#define da_erase_item(dst, item) \
darray_erase_item(sizeof(*dst.array), &dst.da, item)
#endif
#define da_erase_range(dst, from, to) \
darray_erase_range(sizeof(*dst.array), &dst.da, from, to)