BLI_array: utility to check memory is zerod
authorCampbell Barton <ideasman42@gmail.com>
Wed, 28 Mar 2018 06:59:26 +0000 (08:59 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 28 Mar 2018 09:13:54 +0000 (11:13 +0200)
source/blender/blenlib/BLI_array_utils.h
source/blender/blenlib/intern/array_utils.c

index a46c87cec40d9469ea487f6d38b07760a43f603e..644faad636a3eeb59b0cdeac1fe95218a071280c 100644 (file)
@@ -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__ */
index 32f0111babd43d32757c7eb2a6d438eef7cf3c2e..e407a92d6f6191f3be02162e14a72f0021424093 100644 (file)
@@ -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;
+}