static void wmem_test_stack(void) { wmem_allocator_t *allocator; wmem_stack_t *stack; unsigned int i; allocator = wmem_allocator_new(WMEM_ALLOCATOR_STRICT); stack = wmem_stack_new(allocator); g_assert(stack); g_assert(wmem_stack_count(stack) == 0); for (i=0; i<CONTAINER_ITERS; i++) { wmem_stack_push(stack, GINT_TO_POINTER(i)); g_assert(wmem_stack_count(stack) == i+1); g_assert(wmem_stack_peek(stack) == GINT_TO_POINTER(i)); } wmem_strict_check_canaries(allocator); for (i=CONTAINER_ITERS; i>0; i--) { g_assert(wmem_stack_peek(stack) == GINT_TO_POINTER(i-1)); g_assert(wmem_stack_pop(stack) == GINT_TO_POINTER(i-1)); g_assert(wmem_stack_count(stack) == i-1); } g_assert(wmem_stack_count(stack) == 0); wmem_destroy_stack(stack); wmem_destroy_allocator(allocator); }
static void json_array_index_increment(json_parser_data_t *data) { gint idx = GPOINTER_TO_INT(wmem_stack_pop(data->array_idx)); idx++; wmem_stack_push(data->array_idx, GINT_TO_POINTER(idx)); }
static void json_object_add_key(json_parser_data_t *data) { wmem_stack_pop(data->array_idx); wmem_stack_push(data->array_idx, GINT_TO_POINTER(JSON_COMPACT_OBJECT_WITH_KEY)); }