Blender V5.0
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
10
11#include <stddef.h>
12
13#include "BLI_compiler_attrs.h"
14
15typedef struct BLI_Stack BLI_Stack;
16
18 const char *description,
19 size_t chunk_size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
23BLI_Stack *BLI_stack_new(size_t elem_size, const char *description) ATTR_WARN_UNUSED_RESULT
25
30
46void BLI_stack_push(BLI_Stack *stack, const void *src) ATTR_NONNULL();
47
57void BLI_stack_pop_n(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL();
63void BLI_stack_pop_n_reverse(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL();
70void BLI_stack_pop(BLI_Stack *stack, void *dst) ATTR_NONNULL();
71
81
83
#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.cc:157
void BLI_stack_pop(BLI_Stack *stack, void *dst) ATTR_NONNULL()
Definition stack.cc:138
void BLI_stack_pop_n(BLI_Stack *stack, void *dst, unsigned int n) ATTR_NONNULL()
Definition stack.cc:147
size_t BLI_stack_count(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.cc:228
void BLI_stack_push(BLI_Stack *stack, const void *src) ATTR_NONNULL()
Definition stack.cc:132
bool BLI_stack_is_empty(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.cc:250
void BLI_stack_clear(BLI_Stack *stack) ATTR_NONNULL()
Definition stack.cc:196
void BLI_stack_free(BLI_Stack *stack) ATTR_NONNULL()
Definition stack.cc:96
void * BLI_stack_peek(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.cc:169
void * BLI_stack_push_r(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition stack.cc:103
void BLI_stack_discard(BLI_Stack *stack) ATTR_NONNULL()
Definition stack.cc:176
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.cc:68
#define BLI_stack_new(esize, descr)
size_t elem_size
Definition stack.cc:37