BLI_stack: use strict flags

also use size_t, rename BLI_stack_empty
This commit is contained in:
Campbell Barton 2014-06-28 23:07:32 +10:00
parent c0c75ff1ac
commit dcc361708c
3 changed files with 14 additions and 12 deletions

@ -31,7 +31,7 @@
typedef struct BLI_Stack BLI_Stack; typedef struct BLI_Stack BLI_Stack;
/* Create a new homogeneous stack with elements of 'elem_size' bytes */ /* Create a new homogeneous stack with elements of 'elem_size' bytes */
BLI_Stack *BLI_stack_new(int elem_size, const char *description); BLI_Stack *BLI_stack_new(size_t elem_size, const char *description);
/* Free the stack's data and the stack itself */ /* Free the stack's data and the stack itself */
void BLI_stack_free(BLI_Stack *stack); void BLI_stack_free(BLI_Stack *stack);
@ -49,6 +49,6 @@ void BLI_stack_push(BLI_Stack *stack, void *src);
void BLI_stack_pop(BLI_Stack *stack, void *dst); void BLI_stack_pop(BLI_Stack *stack, void *dst);
/* Returns true if the stack is empty, false otherwise */ /* Returns true if the stack is empty, false otherwise */
int BLI_stack_empty(const BLI_Stack *stack); bool BLI_stack_is_empty(const BLI_Stack *stack);
#endif #endif

@ -28,21 +28,23 @@
#include <string.h> #include <string.h>
#include <stdlib.h> /* abort() */ #include <stdlib.h> /* abort() */
#include "BLI_stack.h" /* own include */
#include "BLI_utildefines.h" #include "BLI_utildefines.h"
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
#include "BLI_stack.h" /* own include */
#include "BLI_strict_flags.h"
struct BLI_Stack { struct BLI_Stack {
void *data; void *data;
int totelem; size_t totelem;
int maxelem; size_t maxelem;
int elem_size; size_t elem_size;
}; };
BLI_Stack *BLI_stack_new(int elem_size, const char *description) BLI_Stack *BLI_stack_new(size_t elem_size, const char *description)
{ {
BLI_Stack *stack = MEM_callocN(sizeof(*stack), description); BLI_Stack *stack = MEM_callocN(sizeof(*stack), description);
@ -74,11 +76,11 @@ void BLI_stack_push(BLI_Stack *stack, void *src)
* number of elements */ * number of elements */
stack->maxelem = 32; stack->maxelem = 32;
stack->data = MEM_mallocN((stack->elem_size * stack->data = MEM_mallocN((stack->elem_size *
stack->maxelem), AT); stack->maxelem), __func__);
} }
else { else {
/* Double stack size */ /* Double stack size */
int maxelem = stack->maxelem + stack->maxelem; size_t maxelem = stack->maxelem + stack->maxelem;
/* Check for overflow */ /* Check for overflow */
BLI_assert(maxelem > stack->maxelem); BLI_assert(maxelem > stack->maxelem);
stack->data = MEM_reallocN(stack->data, stack->data = MEM_reallocN(stack->data,
@ -104,7 +106,7 @@ void BLI_stack_pop(BLI_Stack *stack, void *dst)
} }
} }
int BLI_stack_empty(const BLI_Stack *stack) bool BLI_stack_is_empty(const BLI_Stack *stack)
{ {
return stack->totelem == 0; return stack->totelem == 0;
} }

@ -732,7 +732,7 @@ static EMat *build_edge_mats(const MVertSkin *vs,
} }
} }
while (!BLI_stack_empty(stack)) { while (!BLI_stack_is_empty(stack)) {
build_emats_stack(stack, visited_e, emat, emap, medge, vs, mvert); build_emats_stack(stack, visited_e, emat, emap, medge, vs, mvert);
} }