Blender  V3.3
BLI_memiter.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #pragma once
4 
9 #include "BLI_compiler_attrs.h"
10 #include "BLI_compiler_compat.h"
11 #include "BLI_sys_types.h"
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 /* 512kb, good default for small elems. */
18 #define BLI_MEMITER_DEFAULT_SIZE (1 << 19)
19 
20 struct BLI_memiter;
21 
22 typedef struct BLI_memiter BLI_memiter;
23 
33 BLI_memiter *BLI_memiter_create(unsigned int chunk_size_min)
35 void *BLI_memiter_alloc(BLI_memiter *mi, unsigned int size)
36  /* WARNING: `ATTR_MALLOC` attribute on #BLI_memiter_alloc causes crash, see: D2756. */
38 void BLI_memiter_alloc_from(BLI_memiter *mi, uint elem_size, const void *data_from)
39  ATTR_NONNULL(1, 3);
42  ATTR_NONNULL(1);
46 
47 /* Utilities. */
48 
53 void *BLI_memiter_elem_first_size(BLI_memiter *mi, unsigned int *r_size);
54 
56 typedef struct BLI_memiter_handle {
60 
65  ATTR_NONNULL(1, 2);
66 
67 #ifdef __cplusplus
68 }
69 #endif
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_MALLOC
#define ATTR_RETURNS_NONNULL
#define ATTR_NONNULL(...)
void * BLI_memiter_alloc(BLI_memiter *mi, unsigned int size) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
Definition: BLI_memiter.c:131
void BLI_memiter_destroy(BLI_memiter *mi) ATTR_NONNULL(1)
Definition: BLI_memiter.c:218
void bool BLI_memiter_iter_done(const BLI_memiter_handle *iter) ATTR_NONNULL(1)
Definition: BLI_memiter.c:281
void void * BLI_memiter_calloc(BLI_memiter *mi, unsigned int size) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
Definition: BLI_memiter.c:191
struct BLI_memiter_handle BLI_memiter_handle
void BLI_memiter_alloc_from(BLI_memiter *mi, uint elem_size, const void *data_from) ATTR_NONNULL(1
void * BLI_memiter_iter_step(BLI_memiter_handle *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
Definition: BLI_memiter.c:312
void * BLI_memiter_iter_step_size(BLI_memiter_handle *iter, uint *r_size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
unsigned int BLI_memiter_count(const BLI_memiter *mi) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
Definition: BLI_memiter.c:230
void * BLI_memiter_elem_first(BLI_memiter *mi)
Definition: BLI_memiter.c:241
BLI_memiter * BLI_memiter_create(unsigned int chunk_size_min) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
Definition: BLI_memiter.c:114
void BLI_memiter_clear(BLI_memiter *mi) ATTR_NONNULL(1)
Definition: BLI_memiter.c:224
void BLI_memiter_iter_init(BLI_memiter *mi, BLI_memiter_handle *iter) ATTR_NONNULL(1
void * BLI_memiter_elem_first_size(BLI_memiter *mi, unsigned int *r_size)
Definition: BLI_memiter.c:251
unsigned int uint
Definition: BLI_sys_types.h:67
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
struct BLI_memiter_elem * elem
Definition: BLI_memiter.h:57