[Bf-blender-cvs] [a970ac5d556] master: BLI_array: utility to check memory is zerod

Campbell Barton noreply at git.blender.org
Wed Mar 28 11:14:17 CEST 2018


Commit: a970ac5d556a5a342855a8586c50c8ec539ecbd8
Author: Campbell Barton
Date:   Wed Mar 28 08:59:26 2018 +0200
Branches: master
https://developer.blender.org/rBa970ac5d556a5a342855a8586c50c8ec539ecbd8

BLI_array: utility to check memory is zerod

===================================================================

M	source/blender/blenlib/BLI_array_utils.h
M	source/blender/blenlib/intern/array_utils.c

===================================================================

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;
+}



More information about the Bf-blender-cvs mailing list