From a970ac5d556a5a342855a8586c50c8ec539ecbd8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 28 Mar 2018 08:59:26 +0200 Subject: BLI_array: utility to check memory is zerod --- source/blender/blenlib/BLI_array_utils.h | 12 ++++++++++-- source/blender/blenlib/intern/array_utils.c | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenlib/BLI_array_utils.h b/source/blender/blenlib/BLI_array_utils.h index a46c87cec40..644faad636a 100644 --- a/source/blender/blenlib/BLI_array_utils.h +++ b/source/blender/blenlib/BLI_array_utils.h @@ -74,10 +74,18 @@ bool _bli_array_iter_span( bool use_wrap, bool use_delimit_bounds, bool (*test_fn)(const void *arr_item, void *user_data), void *user_data, 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, \ - span_step, r_span_len) \ +#define BLI_array_iter_span( \ + arr, arr_len, use_wrap, use_delimit_bounds, test_fn, user_data, \ + span_step, r_span_len) \ _bli_array_iter_span( \ arr, arr_len, sizeof(*(arr)), use_wrap, use_delimit_bounds, test_fn, user_data, \ 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__ */ diff --git a/source/blender/blenlib/intern/array_utils.c b/source/blender/blenlib/intern/array_utils.c index 32f0111babd..e407a92d6f6 100644 --- a/source/blender/blenlib/intern/array_utils.c +++ b/source/blender/blenlib/intern/array_utils.c @@ -308,3 +308,20 @@ bool _bli_array_iter_span( 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; +} -- cgit v1.2.3