Blender  V2.93
BLI_array_utils.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16 
17 #pragma once
18 
24 #include "BLI_compiler_typecheck.h"
25 #include "BLI_sys_types.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 void _bli_array_reverse(void *arr, unsigned int arr_len, size_t arr_stride);
32 #define BLI_array_reverse(arr, arr_len) _bli_array_reverse(arr, arr_len, sizeof(*(arr)))
33 
34 void _bli_array_wrap(void *arr, unsigned int arr_len, size_t arr_stride, int dir);
35 #define BLI_array_wrap(arr, arr_len, dir) _bli_array_wrap(arr, arr_len, sizeof(*(arr)), dir)
36 
37 void _bli_array_permute(void *arr,
38  const unsigned int arr_len,
39  const size_t arr_stride,
40  const unsigned int *order,
41  void *arr_temp);
42 #define BLI_array_permute(arr, arr_len, order) \
43  _bli_array_permute(arr, arr_len, sizeof(*(arr)), order, NULL)
44 #define BLI_array_permute_ex(arr, arr_len, order, arr_temp) \
45  _bli_array_permute(arr, arr_len, sizeof(*(arr)), order, arr_temp)
46 
47 int _bli_array_findindex(const void *arr, unsigned int arr_len, size_t arr_stride, const void *p);
48 #define BLI_array_findindex(arr, arr_len, p) _bli_array_findindex(arr, arr_len, sizeof(*(arr)), p)
49 
50 int _bli_array_rfindindex(const void *arr, unsigned int arr_len, size_t arr_stride, const void *p);
51 #define BLI_array_rfindindex(arr, arr_len, p) \
52  _bli_array_rfindindex(arr, arr_len, sizeof(*(arr)), p)
53 
55  void *arr, const void *arr_a, const void *arr_b, unsigned int arr_len, size_t arr_stride);
56 #define BLI_array_binary_and(arr, arr_a, arr_b, arr_len) \
57  (CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_a)), \
58  CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_b)), \
59  _bli_array_binary_and(arr, arr_a, arr_b, arr_len, sizeof(*(arr))))
60 
62  void *arr, const void *arr_a, const void *arr_b, unsigned int arr_len, size_t arr_stride);
63 #define BLI_array_binary_or(arr, arr_a, arr_b, arr_len) \
64  (CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_a)), \
65  CHECK_TYPE_PAIR_INLINE(*(arr), *(arr_b)), \
66  _bli_array_binary_or(arr, arr_a, arr_b, arr_len, sizeof(*(arr))))
67 
68 bool _bli_array_iter_span(const void *arr,
69  unsigned int arr_len,
70  size_t arr_stride,
71  bool use_wrap,
72  bool use_delimit_bounds,
73  bool (*test_fn)(const void *arr_item, void *user_data),
74  void *user_data,
75  unsigned int span_step[2],
76  unsigned int *r_span_len);
77 #define BLI_array_iter_span( \
78  arr, arr_len, use_wrap, use_delimit_bounds, test_fn, user_data, span_step, r_span_len) \
79  _bli_array_iter_span(arr, \
80  arr_len, \
81  sizeof(*(arr)), \
82  use_wrap, \
83  use_delimit_bounds, \
84  test_fn, \
85  user_data, \
86  span_step, \
87  r_span_len)
88 
89 bool _bli_array_is_zeroed(const void *arr, unsigned int arr_len, size_t arr_stride);
90 #define BLI_array_is_zeroed(arr, arr_len) _bli_array_is_zeroed(arr, arr_len, sizeof(*(arr)))
91 
92 bool _bli_array_iter_spiral_square(const void *arr_v,
93  const int arr_shape[2],
94  const size_t elem_size,
95  const int center[2],
96  bool (*test_fn)(const void *arr_item, void *user_data),
97  void *user_data);
98 #define BLI_array_iter_spiral_square(arr, arr_shape, center, test_fn, user_data) \
99  _bli_array_iter_spiral_square(arr, arr_shape, sizeof(*(arr)), center, test_fn, user_data)
100 #ifdef __cplusplus
101 }
102 #endif
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)
Definition: array_utils.c:198
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)
Definition: array_utils.c:329
int _bli_array_rfindindex(const void *arr, unsigned int arr_len, size_t arr_stride, const void *p)
Definition: array_utils.c:144
void _bli_array_permute(void *arr, const unsigned int arr_len, const size_t arr_stride, const unsigned int *order, void *arr_temp)
Definition: array_utils.c:91
void _bli_array_binary_and(void *arr, const void *arr_a, const void *arr_b, unsigned int arr_len, size_t arr_stride)
Definition: array_utils.c:156
bool _bli_array_is_zeroed(const void *arr, unsigned int arr_len, size_t arr_stride)
Definition: array_utils.c:310
int _bli_array_findindex(const void *arr, unsigned int arr_len, size_t arr_stride, const void *p)
Definition: array_utils.c:130
void _bli_array_reverse(void *arr, unsigned int arr_len, size_t arr_stride)
Definition: array_utils.c:43
void _bli_array_binary_or(void *arr, const void *arr_a, const void *arr_b, unsigned int arr_len, size_t arr_stride)
Definition: array_utils.c:169
void _bli_array_wrap(void *arr, unsigned int arr_len, size_t arr_stride, int dir)
Definition: array_utils.c:65
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint order
void * user_data