25 #define BLI_buffer_declare_static(type_, name_, flag_, static_count_) \
27 type_ name_##_static_[static_count_]; \
28 BLI_Buffer name_ = { \
29 (name_##_static_), sizeof(type_), 0, static_count_, BLI_BUFFER_USE_STATIC | (flag_)}
32 #define BLI_buffer_declare(type_, name_, flag_) \
34 BLI_Buffer name_ = {NULL, sizeof(type_), 0, 0, (flag_)}
36 #define BLI_buffer_at(buffer_, type_, index_) \
37 ((((type_ *)(buffer_) \
38 ->data)[(BLI_assert(sizeof(type_) == (buffer_)->elem_size)), \
39 (BLI_assert((int)(index_) >= 0 && (size_t)(index_) < (buffer_)->count)), \
42 #define BLI_buffer_array(buffer_, type_) (&(BLI_buffer_at(buffer_, type_, 0)))
44 #define BLI_buffer_resize_data(buffer_, type_, new_count_) \
45 ((BLI_buffer_resize(buffer_, new_count_), new_count_ ? BLI_buffer_array(buffer_, type_) : NULL))
47 #define BLI_buffer_reinit_data(buffer_, type_, new_count_) \
48 ((BLI_buffer_reinit(buffer_, new_count_), new_count_ ? BLI_buffer_array(buffer_, type_) : NULL))
50 #define BLI_buffer_append(buffer_, type_, val_) \
51 (BLI_buffer_resize(buffer_, (buffer_)->count + 1), \
52 (BLI_buffer_at(buffer_, type_, (buffer_)->count - 1) = val_))
54 #define BLI_buffer_clear(buffer_) \
56 (buffer_)->count = 0; \
80 #define BLI_buffer_append_array(buffer_, type_, data_, count_) \
82 type_ *__tmp = (data_); \
83 BLI_assert(sizeof(type_) == (buffer_)->elem_size); \
84 _bli_buffer_append_array(buffer_, __tmp, count_); \
94 #define BLI_buffer_free(name_) \
96 _bli_buffer_free(name_); \
104 #define BLI_buffer_field_init(name_, type_) \
106 memset(name_, 0, sizeof(*name_)); \
107 *(size_t *)&((name_)->elem_size) = sizeof(type_); \
111 #define BLI_buffer_field_free(name_) _bli_buffer_free(name_)
void BLI_buffer_reinit(BLI_Buffer *buffer, size_t new_count)
void _bli_buffer_append_array(BLI_Buffer *buffer, void *data, size_t count)
struct BLI_Buffer BLI_Buffer
void _bli_buffer_free(BLI_Buffer *buffer)
void BLI_buffer_resize(BLI_Buffer *buffer, size_t new_count)
ccl_global float * buffer