Blender V4.3
BLI_stack.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
11#include "BLI_compiler_attrs.h"
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17typedef struct BLI_Stack BLI_Stack;
18
20 const char *description,
21 size_t chunk_size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
25BLI_Stack *BLI_stack_new(size_t elem_size, const char *description) ATTR_WARN_UNUSED_RESULT
27
32
48void BLI_stack_push(BLI_Stack *stack, const void *src) ATTR_NONNULL();
49
59void BLI_stack_pop_n(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL();
65void BLI_stack_pop_n_reverse(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL();
72void BLI_stack_pop(BLI_Stack *stack, void *dst) ATTR_NONNULL();
73
83
85
90
91#ifdef __cplusplus
92}
93#endif
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
void BLI_stack_pop_n_reverse(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL()
Definition stack.c:156
void BLI_stack_pop(BLI_Stack *stack, void *dst) ATTR_NONNULL()
Definition stack.c:137
void BLI_stack_pop_n(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL()
Definition stack.c:146
size_t BLI_stack_count(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.c:227
void BLI_stack_push(BLI_Stack *stack, const void *src) ATTR_NONNULL()
Definition stack.c:131
bool BLI_stack_is_empty(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.c:249
void BLI_stack_clear(BLI_Stack *stack) ATTR_NONNULL()
Definition stack.c:195
void BLI_stack_free(BLI_Stack *stack) ATTR_NONNULL()
Definition stack.c:96
void * BLI_stack_peek(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.c:168
void * BLI_stack_push_r(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.c:103
void BLI_stack_discard(BLI_Stack *stack) ATTR_NONNULL()
Definition stack.c:175
BLI_Stack * BLI_stack_new_ex(size_t elem_size, const char *description, size_t chunk_size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.c:68
#define BLI_stack_new(esize, descr)
size_t elem_size
Definition stack.c:37