|
Blender
V2.93
|
Generic array manipulation API. More...
Go to the source code of this file.
Macros | |
| #define | BLI_array_reverse(arr, arr_len) _bli_array_reverse(arr, arr_len, sizeof(*(arr))) |
| #define | BLI_array_wrap(arr, arr_len, dir) _bli_array_wrap(arr, arr_len, sizeof(*(arr)), dir) |
| #define | BLI_array_permute(arr, arr_len, order) _bli_array_permute(arr, arr_len, sizeof(*(arr)), order, NULL) |
| #define | BLI_array_permute_ex(arr, arr_len, order, arr_temp) _bli_array_permute(arr, arr_len, sizeof(*(arr)), order, arr_temp) |
| #define | BLI_array_findindex(arr, arr_len, p) _bli_array_findindex(arr, arr_len, sizeof(*(arr)), p) |
| #define | BLI_array_rfindindex(arr, arr_len, p) _bli_array_rfindindex(arr, arr_len, sizeof(*(arr)), p) |
| #define | BLI_array_binary_and(arr, arr_a, arr_b, arr_len) |
| #define | BLI_array_binary_or(arr, arr_a, arr_b, arr_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_is_zeroed(arr, arr_len) _bli_array_is_zeroed(arr, arr_len, sizeof(*(arr))) |
| #define | BLI_array_iter_spiral_square(arr, arr_shape, center, test_fn, user_data) _bli_array_iter_spiral_square(arr, arr_shape, sizeof(*(arr)), center, test_fn, user_data) |
Functions | |
| void | _bli_array_reverse (void *arr, unsigned int arr_len, size_t arr_stride) |
| void | _bli_array_wrap (void *arr, unsigned int arr_len, size_t arr_stride, int dir) |
| void | _bli_array_permute (void *arr, const unsigned int arr_len, const size_t arr_stride, const unsigned int *order, void *arr_temp) |
| int | _bli_array_findindex (const void *arr, unsigned int arr_len, size_t arr_stride, const void *p) |
| int | _bli_array_rfindindex (const void *arr, unsigned int arr_len, size_t arr_stride, const void *p) |
| void | _bli_array_binary_and (void *arr, const void *arr_a, const void *arr_b, unsigned int arr_len, size_t arr_stride) |
| void | _bli_array_binary_or (void *arr, const void *arr_a, const void *arr_b, unsigned int arr_len, size_t arr_stride) |
| bool | _bli_array_iter_span (const void *arr, unsigned int arr_len, size_t arr_stride, 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) |
| bool | _bli_array_is_zeroed (const void *arr, unsigned int arr_len, size_t arr_stride) |
| bool | _bli_array_iter_spiral_square (const void *arr_v, const int arr_shape[2], const size_t elem_size, const int center[2], bool(*test_fn)(const void *arr_item, void *user_data), void *user_data) |
Generic array manipulation API.
Definition in file BLI_array_utils.h.
| #define BLI_array_binary_and | ( | arr, | |
| arr_a, | |||
| arr_b, | |||
| arr_len | |||
| ) |
Definition at line 56 of file BLI_array_utils.h.
| #define BLI_array_binary_or | ( | arr, | |
| arr_a, | |||
| arr_b, | |||
| arr_len | |||
| ) |
Definition at line 63 of file BLI_array_utils.h.
| #define BLI_array_findindex | ( | arr, | |
| arr_len, | |||
| p | |||
| ) | _bli_array_findindex(arr, arr_len, sizeof(*(arr)), p) |
Definition at line 48 of file BLI_array_utils.h.
| #define BLI_array_is_zeroed | ( | arr, | |
| arr_len | |||
| ) | _bli_array_is_zeroed(arr, arr_len, sizeof(*(arr))) |
Definition at line 90 of file BLI_array_utils.h.
| #define BLI_array_iter_span | ( | arr, | |
| arr_len, | |||
| use_wrap, | |||
| use_delimit_bounds, | |||
| test_fn, | |||
| user_data, | |||
| span_step, | |||
| r_span_len | |||
| ) |
Definition at line 77 of file BLI_array_utils.h.
| #define BLI_array_iter_spiral_square | ( | arr, | |
| arr_shape, | |||
| center, | |||
| test_fn, | |||
| user_data | |||
| ) | _bli_array_iter_spiral_square(arr, arr_shape, sizeof(*(arr)), center, test_fn, user_data) |
Definition at line 98 of file BLI_array_utils.h.
| #define BLI_array_permute | ( | arr, | |
| arr_len, | |||
| order | |||
| ) | _bli_array_permute(arr, arr_len, sizeof(*(arr)), order, NULL) |
Definition at line 42 of file BLI_array_utils.h.
| #define BLI_array_permute_ex | ( | arr, | |
| arr_len, | |||
| order, | |||
| arr_temp | |||
| ) | _bli_array_permute(arr, arr_len, sizeof(*(arr)), order, arr_temp) |
Definition at line 44 of file BLI_array_utils.h.
| #define BLI_array_reverse | ( | arr, | |
| arr_len | |||
| ) | _bli_array_reverse(arr, arr_len, sizeof(*(arr))) |
Definition at line 32 of file BLI_array_utils.h.
| #define BLI_array_rfindindex | ( | arr, | |
| arr_len, | |||
| p | |||
| ) | _bli_array_rfindindex(arr, arr_len, sizeof(*(arr)), p) |
Definition at line 51 of file BLI_array_utils.h.
| #define BLI_array_wrap | ( | arr, | |
| arr_len, | |||
| dir | |||
| ) | _bli_array_wrap(arr, arr_len, sizeof(*(arr)), dir) |
Definition at line 35 of file BLI_array_utils.h.
| void _bli_array_binary_and | ( | void * | arr, |
| const void * | arr_a, | ||
| const void * | arr_b, | ||
| unsigned int | arr_len, | ||
| size_t | arr_stride | ||
| ) |
Definition at line 156 of file array_utils.c.
| void _bli_array_binary_or | ( | void * | arr, |
| const void * | arr_a, | ||
| const void * | arr_b, | ||
| unsigned int | arr_len, | ||
| size_t | arr_stride | ||
| ) |
Definition at line 169 of file array_utils.c.
| int _bli_array_findindex | ( | const void * | arr, |
| unsigned int | arr_len, | ||
| size_t | arr_stride, | ||
| const void * | p | ||
| ) |
Find the first index of an item in an array.
Access via BLI_array_findindex
Definition at line 130 of file array_utils.c.
| bool _bli_array_is_zeroed | ( | const void * | arr_v, |
| unsigned int | arr_len, | ||
| size_t | arr_stride | ||
| ) |
Simple utility to check memory is zeroed.
Definition at line 310 of file array_utils.c.
| bool _bli_array_iter_span | ( | const void * | arr, |
| unsigned int | arr_len, | ||
| size_t | arr_stride, | ||
| bool | use_wrap, | ||
| bool | use_delimit_bounds, | ||
| bool(*)(const void *arr_item, void *user_data) | test_fn, | ||
| void * | user_data, | ||
| unsigned int | span_step[2], | ||
| unsigned int * | r_span_len | ||
| ) |
Utility function to iterate over contiguous items in an array.
| use_wrap | Detect contiguous ranges across the first/last points. In this case the second index of span_step may be lower than the first, which indicates the values are wrapped. |
| use_delimit_bounds | When false, ranges that defined by the start/end indices are excluded. This option has no effect when use_wrap is enabled. |
| test_fn | Function to test if the item should be included in the range. |
| user_data | User data for test_fn. |
| span_step | Indices to iterate over, initialize both values to the array length to initialize iteration. |
| r_span_len | The length of the span, useful when use_wrap is enabled, where calculating the length isn't a simple subtraction. |
Definition at line 198 of file array_utils.c.
References BLI_assert, NULL, POINTER_OFFSET, UNLIKELY, and user_data.
| bool _bli_array_iter_spiral_square | ( | const void * | arr_v, |
| const int | arr_shape[2], | ||
| size_t | elem_size, | ||
| const int | center[2], | ||
| bool(*)(const void *arr_item, void *user_data) | test_fn, | ||
| void * | user_data | ||
| ) |
Smart function to sample a rect spiraling outside. Nice for selection ID.
| arr_shape | dimensions [w, h]. |
| center | coordinates [x, y] indicating where to start traversing. |
Definition at line 329 of file array_utils.c.
References BLI_assert, center, CLAMP, max_iiii(), min_iiii(), KDL::sign(), steps, stride, and user_data.
| void _bli_array_permute | ( | void * | arr, |
| const unsigned int | arr_len, | ||
| const size_t | arr_stride, | ||
| const unsigned int * | order, | ||
| void * | arr_temp | ||
| ) |
In-place array permute. (re-arrange elements based on an array of indices).
Access via BLI_array_wrap
Definition at line 91 of file array_utils.c.
References BLI_assert, len, MEM_freeN, MEM_mallocN, NULL, order, and POINTER_OFFSET.
| void _bli_array_reverse | ( | void * | arr_v, |
| unsigned int | arr_len, | ||
| size_t | arr_stride | ||
| ) |
In-place array reverse.
Access via BLI_array_reverse
Definition at line 43 of file array_utils.c.
References BLI_array_alloca.
| int _bli_array_rfindindex | ( | const void * | arr, |
| unsigned int | arr_len, | ||
| size_t | arr_stride, | ||
| const void * | p | ||
| ) |
A version of BLI_array_findindex that searches from the end of the list.
Definition at line 144 of file array_utils.c.
| void _bli_array_wrap | ( | void * | arr_v, |
| unsigned int | arr_len, | ||
| size_t | arr_stride, | ||
| int | dir | ||
| ) |
In-place array wrap. (rotate the array one step forward or backwards).
Access via BLI_array_wrap
Definition at line 65 of file array_utils.c.
References BLI_array_alloca, and BLI_assert.
Referenced by testbuffer_list_state_random_data().