Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenlib/BLI_array.h')
-rw-r--r--source/blender/blenlib/BLI_array.h170
1 files changed, 78 insertions, 92 deletions
diff --git a/source/blender/blenlib/BLI_array.h b/source/blender/blenlib/BLI_array.h
index afc09363319..a61eff7329e 100644
--- a/source/blender/blenlib/BLI_array.h
+++ b/source/blender/blenlib/BLI_array.h
@@ -30,51 +30,45 @@
* \{ */
/** this returns the entire size of the array, including any buffering. */
-#define _bli_array_totalsize_dynamic(arr) ( \
- ((arr) == NULL) ? \
- 0 : \
- MEM_allocN_len(arr) / sizeof(*(arr)) \
-)
-
-#define _bli_array_totalsize_static(arr) \
- (sizeof(_##arr##_static) / sizeof(*(arr)))
-
-#define _bli_array_totalsize(arr) ( \
- (size_t) \
- (((void *)(arr) == (void *)_##arr##_static && (void *)(arr) != NULL) ? \
- _bli_array_totalsize_static(arr) : \
- _bli_array_totalsize_dynamic(arr)) \
-)
+#define _bli_array_totalsize_dynamic(arr) \
+ (((arr) == NULL) ? 0 : MEM_allocN_len(arr) / sizeof(*(arr)))
-/** \} */
+#define _bli_array_totalsize_static(arr) (sizeof(_##arr##_static) / sizeof(*(arr)))
+
+#define _bli_array_totalsize(arr) \
+ ((size_t)(((void *)(arr) == (void *)_##arr##_static && (void *)(arr) != NULL) ? \
+ _bli_array_totalsize_static(arr) : \
+ _bli_array_totalsize_dynamic(arr)))
+/** \} */
/** BLI_array.c
*
* Doing the realloc in a macro isn't so simple,
* so use a function the macros can use.
*/
-void _bli_array_grow_func(
- void **arr_p, const void *arr_static,
- const int sizeof_arr_p, const int arr_len, const int num,
- const char *alloc_str);
-
+void _bli_array_grow_func(void **arr_p,
+ const void *arr_static,
+ const int sizeof_arr_p,
+ const int arr_len,
+ const int num,
+ const char *alloc_str);
/* -------------------------------------------------------------------- */
/** \name Public defines
* \{ */
/** use ``sizeof(*(arr))`` to ensure the array exists and is an array */
-#define BLI_array_declare(arr) \
- int _##arr##_len = ((void)(sizeof(*(arr))), 0); \
- void *_##arr##_static = NULL
+#define BLI_array_declare(arr) \
+ int _##arr##_len = ((void)(sizeof(*(arr))), 0); \
+ void *_##arr##_static = NULL
/**
* this will use stack space, up to maxstatic array elements, before
* switching to dynamic heap allocation */
-#define BLI_array_staticdeclare(arr, maxstatic) \
- int _##arr##_len = 0; \
- char _##arr##_static[maxstatic * sizeof(*(arr))]
+#define BLI_array_staticdeclare(arr, maxstatic) \
+ int _##arr##_len = 0; \
+ char _##arr##_static[maxstatic * sizeof(*(arr))]
/** returns the logical size of the array, not including buffering. */
#define BLI_array_len(arr) ((void)0, _##arr##_len)
@@ -84,82 +78,74 @@ void _bli_array_grow_func(
*
* Allow for a large 'num' value when the new size is more than double
* to allocate the exact sized array. */
-#define BLI_array_reserve(arr, num) (void)( \
- (((void *)(arr) == NULL) && \
- ((void *)(_##arr##_static) != NULL) && \
- /* don't add _##arr##_len below because it must be zero */ \
- (_bli_array_totalsize_static(arr) >= _##arr##_len + (num))) ? \
- /* we have an empty array and a static var big enough */ \
- (void)(arr = (void *)_##arr##_static) \
- : \
- /* use existing static array or allocate */ \
- (LIKELY(_bli_array_totalsize(arr) >= _##arr##_len + (num)) ? \
- (void)0 /* do nothing */ : \
- _bli_array_grow_func((void **)&(arr), _##arr##_static, \
- sizeof(*(arr)), _##arr##_len, num, \
- "BLI_array." #arr)) \
- )
-
+#define BLI_array_reserve(arr, num) \
+ (void)((((void *)(arr) == NULL) && \
+ ((void *)(_##arr##_static) != \
+ NULL) && /* don't add _##arr##_len below because it must be zero */ \
+ (_bli_array_totalsize_static(arr) >= \
+ _##arr##_len + (num))) ? /* we have an empty array and a static var big enough */ \
+ (void)(arr = (void *)_##arr##_static) : /* use existing static array or allocate */ \
+ (LIKELY(_bli_array_totalsize(arr) >= _##arr##_len + (num)) ? \
+ (void)0 /* do nothing */ : \
+ _bli_array_grow_func((void **)&(arr), \
+ _##arr##_static, \
+ sizeof(*(arr)), \
+ _##arr##_len, \
+ num, \
+ "BLI_array." #arr)))
/** returns length of array */
-#define BLI_array_grow_items(arr, num) \
- (BLI_array_reserve(arr, num), (_##arr##_len += num))
+#define BLI_array_grow_items(arr, num) (BLI_array_reserve(arr, num), (_##arr##_len += num))
-#define BLI_array_grow_one(arr) \
- BLI_array_grow_items(arr, 1)
+#define BLI_array_grow_one(arr) BLI_array_grow_items(arr, 1)
/** appends an item to the array. */
-#define BLI_array_append(arr, item) ( \
- (void) BLI_array_grow_one(arr), \
- (void) (arr[_##arr##_len - 1] = item) \
-)
+#define BLI_array_append(arr, item) \
+ ((void)BLI_array_grow_one(arr), (void)(arr[_##arr##_len - 1] = item))
/**
* appends an item to the array and returns a pointer to the item in the array.
* item is not a pointer, but actual data value.*/
-#define BLI_array_append_r(arr, item) ( \
- (void) BLI_array_grow_one(arr), \
- (void) (arr[_##arr##_len - 1] = item), \
- (&arr[_##arr##_len - 1]) \
-)
+#define BLI_array_append_r(arr, item) \
+ ((void)BLI_array_grow_one(arr), (void)(arr[_##arr##_len - 1] = item), (&arr[_##arr##_len - 1]))
/** appends (grows) & returns a pointer to the uninitialized memory */
-#define BLI_array_append_ret(arr) \
- (BLI_array_reserve(arr, 1), &arr[(_##arr##_len++)])
-
-#define BLI_array_free(arr) { \
- if (arr && (char *)arr != _##arr##_static) { \
- BLI_array_fake_user(arr); \
- MEM_freeN(arr); \
- } \
-} ((void)0)
-
-#define BLI_array_pop(arr) ( \
- (arr && _##arr##_len) ? \
- arr[--_##arr##_len] : \
- NULL \
-)
+#define BLI_array_append_ret(arr) (BLI_array_reserve(arr, 1), &arr[(_##arr##_len++)])
+
+#define BLI_array_free(arr) \
+ { \
+ if (arr && (char *)arr != _##arr##_static) { \
+ BLI_array_fake_user(arr); \
+ MEM_freeN(arr); \
+ } \
+ } \
+ ((void)0)
+
+#define BLI_array_pop(arr) ((arr && _##arr##_len) ? arr[--_##arr##_len] : NULL)
/**
* Resets the logical size of an array to zero, but doesn't
* free the memory. */
-#define BLI_array_clear(arr) \
- { _##arr##_len = 0; } ((void)0)
+#define BLI_array_clear(arr) \
+ { \
+ _##arr##_len = 0; \
+ } \
+ ((void)0)
/**
* Set the length of the array, doesn't actually increase the allocated array
* size. don't use this unless you know what you're doing. */
-#define BLI_array_len_set(arr, len) \
- { _##arr##_len = (len); } ((void)0)
+#define BLI_array_len_set(arr, len) \
+ { \
+ _##arr##_len = (len); \
+ } \
+ ((void)0)
/** only to prevent unused warnings */
-#define BLI_array_fake_user(arr) \
- ((void)_##arr##_len, \
- (void)_##arr##_static)
+#define BLI_array_fake_user(arr) ((void)_##arr##_len, (void)_##arr##_static)
/** \} */
-
/* -------------------------------------------------------------------- */
/** \name Generic Array Utils
* other useful defines
@@ -171,19 +157,19 @@ void _bli_array_grow_func(
* not part of the 'API' but handy funcs,
* same purpose as #BLI_array_staticdeclare()
* but use when the max size is known ahead of time */
-#define BLI_array_fixedstack_declare(arr, maxstatic, realsize, allocstr) \
- char _##arr##_static[maxstatic * sizeof(*(arr))]; \
- const bool _##arr##_is_static = ((void *)_##arr##_static) != ( \
- arr = ((realsize) <= maxstatic) ? \
- (void *)_##arr##_static : \
- MEM_mallocN(sizeof(*(arr)) * (realsize), allocstr) \
- ) \
-
-#define BLI_array_fixedstack_free(arr) \
- if (_##arr##_is_static) { \
- MEM_freeN(arr); \
- } ((void)0)
+#define BLI_array_fixedstack_declare(arr, maxstatic, realsize, allocstr) \
+ char _##arr##_static[maxstatic * sizeof(*(arr))]; \
+ const bool _##arr##_is_static = ((void *)_##arr##_static) != \
+ (arr = ((realsize) <= maxstatic) ? \
+ (void *)_##arr##_static : \
+ MEM_mallocN(sizeof(*(arr)) * (realsize), allocstr))
+
+#define BLI_array_fixedstack_free(arr) \
+ if (_##arr##_is_static) { \
+ MEM_freeN(arr); \
+ } \
+ ((void)0)
/** \} */
-#endif /* __BLI_ARRAY_H__ */
+#endif /* __BLI_ARRAY_H__ */