|
Blender V4.3
|
A generic structure queue (a queue for fixed length generally small) structures. More...
#include <string.h>#include "MEM_guardedalloc.h"#include "BLI_gsqueue.h"#include "BLI_utildefines.h"#include "BLI_strict_flags.h"Go to the source code of this file.
Classes | |
| struct | QueueChunk |
| struct | _GSQueue |
Macros | |
| #define | CHUNK_SIZE_DEFAULT (1 << 16) |
| #define | CHUNK_ELEM_MIN 32 |
Functions | |
| static void * | queue_get_first_elem (GSQueue *queue) |
| static void * | queue_get_last_elem (GSQueue *queue) |
| static size_t | queue_chunk_elem_max_calc (const size_t elem_size, size_t chunk_size) |
| GSQueue * | BLI_gsqueue_new (const size_t elem_size) |
| static void | queue_free_chunk (struct QueueChunk *data) |
| void | BLI_gsqueue_free (GSQueue *queue) |
| void | BLI_gsqueue_push (GSQueue *queue, const void *item) |
| void | BLI_gsqueue_pop (GSQueue *queue, void *r_item) |
| size_t | BLI_gsqueue_len (const GSQueue *queue) |
| bool | BLI_gsqueue_is_empty (const GSQueue *queue) |
A generic structure queue (a queue for fixed length generally small) structures.
Definition in file gsqueue.c.
| #define CHUNK_ELEM_MIN 32 |
Definition at line 24 of file gsqueue.c.
Referenced by queue_chunk_elem_max_calc().
| #define CHUNK_SIZE_DEFAULT (1 << 16) |
Definition at line 22 of file gsqueue.c.
Referenced by BLI_gsqueue_new().
| void BLI_gsqueue_free | ( | GSQueue * | queue | ) |
Free the queue's data and the queue itself.
Definition at line 93 of file gsqueue.c.
References MEM_freeN(), and queue_free_chunk().
Referenced by BLI_thread_queue_free(), unsubdivide_face_center_vertex_tag(), unsubdivide_init_elem_ids(), and unsubdivide_tag_disconnected_mesh_element().
| bool BLI_gsqueue_is_empty | ( | const GSQueue * | queue | ) |
Returns true if the queue is empty, false otherwise.
Definition at line 162 of file gsqueue.c.
References NULL.
Referenced by BLI_gsqueue_pop(), BLI_thread_queue_is_empty(), BLI_thread_queue_pop(), BLI_thread_queue_pop_timeout(), BLI_thread_queue_wait_finish(), unsubdivide_face_center_vertex_tag(), unsubdivide_init_elem_ids(), and unsubdivide_tag_disconnected_mesh_element().
| size_t BLI_gsqueue_len | ( | const GSQueue * | queue | ) |
Definition at line 157 of file gsqueue.c.
Referenced by BLI_thread_queue_len().
| GSQueue * BLI_gsqueue_new | ( | const size_t | elem_size | ) |
Definition at line 72 of file gsqueue.c.
References CHUNK_SIZE_DEFAULT, MEM_callocN, and queue_chunk_elem_max_calc().
Referenced by BLI_thread_queue_init(), unsubdivide_face_center_vertex_tag(), unsubdivide_init_elem_ids(), and unsubdivide_tag_disconnected_mesh_element().
| void BLI_gsqueue_pop | ( | GSQueue * | queue, |
| void * | r_item ) |
Retrieves and removes the first element from the queue. The value is copies to r_item, which must be at least elem_size bytes.
Does not reduce amount of allocated memory.
Definition at line 134 of file gsqueue.c.
References BLI_assert, BLI_gsqueue_is_empty(), QueueChunk::next, NULL, queue_get_first_elem(), and UNLIKELY.
Referenced by BLI_thread_queue_pop(), BLI_thread_queue_pop_timeout(), unsubdivide_face_center_vertex_tag(), unsubdivide_init_elem_ids(), and unsubdivide_tag_disconnected_mesh_element().
| void BLI_gsqueue_push | ( | GSQueue * | queue, |
| const void * | item ) |
Copies the source value onto the end of the queue
| item | source data to be copied to the queue. |
Definition at line 100 of file gsqueue.c.
References BLI_assert, MEM_mallocN, QueueChunk::next, NULL, queue_get_last_elem(), and UNLIKELY.
Referenced by BLI_thread_queue_push(), unsubdivide_face_center_vertex_tag(), unsubdivide_init_elem_ids(), and unsubdivide_tag_disconnected_mesh_element().
|
static |
Definition at line 55 of file gsqueue.c.
References BLI_assert, CHUNK_ELEM_MIN, MEM_SIZE_OVERHEAD, and UNLIKELY.
Referenced by BLI_gsqueue_new().
|
static |
Definition at line 84 of file gsqueue.c.
References MEM_freeN(), and QueueChunk::next.
Referenced by BLI_gsqueue_free().
|
static |
Definition at line 42 of file gsqueue.c.
Referenced by BLI_gsqueue_pop().
|
static |
Definition at line 47 of file gsqueue.c.
Referenced by BLI_gsqueue_push().