From 5128637d480a376711798858a1dbdb3302039426 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 19 Jan 2016 07:00:55 +1100 Subject: BLI_array_utils: add binary and/or functions --- source/blender/blenlib/BLI_array_utils.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/blender/blenlib/BLI_array_utils.h') diff --git a/source/blender/blenlib/BLI_array_utils.h b/source/blender/blenlib/BLI_array_utils.h index ff7976dc701..c5359d56f9c 100644 --- a/source/blender/blenlib/BLI_array_utils.h +++ b/source/blender/blenlib/BLI_array_utils.h @@ -26,6 +26,8 @@ * \brief Generic array manipulation API. */ +#include "BLI_compiler_typecheck.h" + void _bli_array_reverse(void *arr, unsigned int arr_len, size_t arr_stride); #define BLI_array_reverse(arr, arr_len) \ _bli_array_reverse(arr, arr_len, sizeof(*(arr))) @@ -46,4 +48,20 @@ int _bli_array_findindex(const void *arr, unsigned int arr_len, size_t arr_strid #define BLI_array_findindex(arr, arr_len, p) \ _bli_array_findindex(arr, arr_len, sizeof(*(arr)), p) +void _bli_array_binary_and( + void *arr, const void *arr_a, const void *arr_b, + unsigned int arr_len, size_t arr_stride); +#define BLI_array_binary_and(arr, arr_a, arr_b, arr_len) \ + (CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_a)), \ + CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_b)), \ + _bli_array_binary_and(arr, arr_a, arr_b, arr_len, sizeof(*(arr)))) + +void _bli_array_binary_or( + void *arr, const void *arr_a, const void *arr_b, + unsigned int arr_len, size_t arr_stride); +#define BLI_array_binary_or(arr, arr_a, arr_b, arr_len) \ + (CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_a)), \ + CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_b)), \ + _bli_array_binary_or(arr, arr_a, arr_b, arr_len, sizeof(*(arr)))) + #endif /* __BLI_ARRAY_UTILS_H__ */ -- cgit v1.2.3