diff --git a/source/blender/blenlib/BLI_array.h b/source/blender/blenlib/BLI_array.h index 65c01d72fb3..f12a8b5a7a5 100644 --- a/source/blender/blenlib/BLI_array.h +++ b/source/blender/blenlib/BLI_array.h @@ -1,6 +1,4 @@ -/** - * Array Library - * +/* * ***** BEGIN GPL LICENSE BLOCK ***** * * This program is free software; you can redistribute it and/or @@ -28,43 +26,43 @@ */ /* -this library needs to be changed to not use macros quite so heavily, -and to be more of a complete array API. The way arrays are -exposed to client code as normal C arrays is very useful though, imho. -it does require some use of macros, however. - -anyway, it's used a bit too heavily to simply rewrite as a -more "correct" solution without macros entirely. I originally wrote this -to be very easy to use, without the normal pain of most array libraries. -This was especially helpful when it came to the massive refactors necessary for -bmesh, and really helped to speed the process up. - joeedh - -little array macro library. example of usage: - -int *arr = NULL; -BLI_array_declare(arr); -int i; - -for (i=0; i<10; i++) { - BLI_array_growone(arr); - arr[i] = something; -} -BLI_array_free(arr); - -arrays are buffered, using double-buffering (so on each reallocation, -the array size is doubled). supposedly this should give good Big Oh -behaviour, though it may not be the best in practice. -*/ + * this library needs to be changed to not use macros quite so heavily, + * and to be more of a complete array API. The way arrays are + * exposed to client code as normal C arrays is very useful though, imho. + * it does require some use of macros, however. + * + * anyway, it's used a bit too heavily to simply rewrite as a + * more "correct" solution without macros entirely. I originally wrote this + * to be very easy to use, without the normal pain of most array libraries. + * This was especially helpful when it came to the massive refactors necessary + * for bmesh, and really helped to speed the process up. - joeedh + * + * little array macro library. example of usage: + * + * int *arr = NULL; + * BLI_array_declare(arr); + * int i; + * + * for (i=0; i<10; i++) { + * BLI_array_growone(arr); + * arr[i] = something; + * } + * BLI_array_free(arr); + * + * arrays are buffered, using double-buffering (so on each reallocation, + * the array size is doubled). supposedly this should give good Big Oh + * behaviour, though it may not be the best in practice. + */ #define BLI_array_declare(arr) \ - int _##arr##_count=0; \ + int _##arr##_count = 0; \ void *_##arr##_tmp; \ 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##_count=0; \ + int _##arr##_count = 0; \ void *_##arr##_tmp; \ char _##arr##_static[maxstatic*sizeof(arr)] @@ -72,16 +70,16 @@ behaviour, though it may not be the best in practice. /* this returns the entire size of the array, including any buffering. */ #define BLI_array_totalsize_dyn(arr) ( \ ((arr)==NULL) ? \ - 0 : \ - MEM_allocN_len(arr) / sizeof(*arr) \ + 0 : \ + MEM_allocN_len(arr) / sizeof(*arr) \ ) #define BLI_array_totalsize(arr) ( \ - (signed int) \ + (size_t) \ (((void *)(arr) == (void *)_##arr##_static && (void *)(arr) != NULL) ? \ - (sizeof(_##arr##_static) / sizeof(*arr)) : \ - BLI_array_totalsize_dyn(arr)) \ + (sizeof(_##arr##_static) / sizeof(*arr)) : \ + BLI_array_totalsize_dyn(arr)) \ ) @@ -94,7 +92,7 @@ behaviour, though it may not be the best in practice. ++_##arr##_count : \ ( \ (void) (_##arr##_tmp = MEM_callocN( \ - sizeof(*arr)*(_##arr##_count*2+2), \ + sizeof(*arr) * (_##arr##_count * 2 + 2), \ #arr " " __FILE__ ":" STRINGIFY(__LINE__) \ ) \ ), \ @@ -108,7 +106,7 @@ behaviour, though it may not be the best in practice. ), \ (void) (arr = _##arr##_tmp \ ), \ - _##arr##_count++ \ + ++_##arr##_count \ ) \ ) @@ -116,23 +114,23 @@ behaviour, though it may not be the best in practice. /* returns length of array */ #define BLI_array_growone(arr) ( \ ((void *)(arr)==NULL && (void *)(_##arr##_static) != NULL) ? \ - ((arr=(void*)_##arr##_static), ++_##arr##_count) : \ - _bli_array_growone(arr) \ + ((arr= (void*)_##arr##_static), ++_##arr##_count) : \ + _bli_array_growone(arr) \ ) /* appends an item to the array. */ #define BLI_array_append(arr, item) ( \ (void) BLI_array_growone(arr), \ - (void) (arr[_##arr##_count-1] = item) \ + (void) (arr[_##arr##_count - 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_growone(arr), \ - (void) (arr[_##arr##_count-1] = item), \ - (&arr[_##arr##_count-1]) \ + (void) (arr[_##arr##_count - 1] = item), \ + (&arr[_##arr##_count - 1]) \ ) /* grow an array by a specified number of items. */ @@ -142,22 +140,22 @@ behaviour, though it may not be the best in practice. _##arr##_count += num; \ } \ else { \ - int _i; \ - for (_i = 0; _i < (num); _i++) { \ - BLI_array_growone(arr); \ - } \ + int _i; \ + for (_i = 0; _i < (num); _i++) { \ + BLI_array_growone(arr); \ + } \ } #define BLI_array_free(arr) \ if (arr && (char *)arr != _##arr##_static) { \ - BLI_array_fake_user(arr); \ - MEM_freeN(arr); \ + BLI_array_fake_user(arr); \ + MEM_freeN(arr); \ } #define BLI_array_pop(arr) ( \ (arr&&_##arr##_count) ? \ - arr[--_##arr##_count] : \ - 0 \ + arr[--_##arr##_count] : \ + 0 \ ) /* resets the logical size of an array to zero, but doesn't