BLI_array: utility to check memory is zerod

This commit is contained in:
Campbell Barton 2018-03-28 08:59:26 +02:00
parent 4bd5b824b0
commit a970ac5d55
2 changed files with 27 additions and 2 deletions

@ -74,10 +74,18 @@ bool _bli_array_iter_span(
bool use_wrap, bool use_delimit_bounds, bool use_wrap, bool use_delimit_bounds,
bool (*test_fn)(const void *arr_item, void *user_data), void *user_data, bool (*test_fn)(const void *arr_item, void *user_data), void *user_data,
unsigned int span_step[2], unsigned int *r_span_len); unsigned int span_step[2], unsigned int *r_span_len);
#define BLI_array_iter_span(arr, arr_len, use_wrap, use_delimit_bounds, test_fn, user_data, \ #define BLI_array_iter_span( \
span_step, r_span_len) \ arr, arr_len, use_wrap, use_delimit_bounds, test_fn, user_data, \
span_step, r_span_len) \
_bli_array_iter_span( \ _bli_array_iter_span( \
arr, arr_len, sizeof(*(arr)), use_wrap, use_delimit_bounds, test_fn, user_data, \ arr, arr_len, sizeof(*(arr)), use_wrap, use_delimit_bounds, test_fn, user_data, \
span_step, r_span_len) span_step, r_span_len)
bool _bli_array_is_zerod(
const void *arr,
unsigned int arr_len, size_t arr_stride);
#define BLI_array_is_zerod(arr, arr_len) \
_bli_array_is_zerod( \
arr, arr_len, sizeof(*(arr)))
#endif /* __BLI_ARRAY_UTILS_H__ */ #endif /* __BLI_ARRAY_UTILS_H__ */

@ -308,3 +308,20 @@ bool _bli_array_iter_span(
return false; return false;
} }
/**
* Simple utility to check memory is zero'd.
*/
bool _bli_array_is_zerod(
const void *arr_v,
unsigned int arr_len, size_t arr_stride)
{
const char *arr_step = (const char *)arr_v;
size_t i = arr_stride * arr_len;
while (i--) {
if (*(arr_step++)) {
return false;
}
}
return true;
}