diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-03-28 09:59:26 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-03-28 12:13:54 +0300 |
commit | a970ac5d556a5a342855a8586c50c8ec539ecbd8 (patch) | |
tree | a07320c1fbdb43aebeaf5743fc770aa69eb1a0a4 /source/blender | |
parent | 4bd5b824b08823d2ed26161a7260672411efddd2 (diff) |
BLI_array: utility to check memory is zerod
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenlib/BLI_array_utils.h | 12 | ||||
-rw-r--r-- | source/blender/blenlib/intern/array_utils.c | 17 |
2 files changed, 27 insertions, 2 deletions
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; +} |