#include <stddef.h>
#include "nvim/log.h"
#include "nvim/types.h"
Go to the source code of this file.
|
#define | GA_EMPTY_INIT_VALUE { 0, 0, 0, 1, NULL } |
|
#define | GA_INIT(itemsize, growsize) { 0, 0, (itemsize), (growsize), NULL } |
|
#define | GA_EMPTY(ga_ptr) ((ga_ptr)->ga_len <= 0) |
|
#define | GA_APPEND(item_type, gap, item) |
|
#define | GA_APPEND_VIA_PTR(item_type, gap) ga_append_via_ptr(gap, sizeof(item_type)) |
|
#define | GA_DEEP_CLEAR(gap, item_type, free_item_fn) |
|
#define | FREE_PTR_PTR(ptr) xfree(*(ptr)) |
|
#define | GA_DEEP_CLEAR_PTR(gap) GA_DEEP_CLEAR(gap, void *, FREE_PTR_PTR) |
|
◆ FREE_PTR_PTR
◆ GA_APPEND
#define GA_APPEND |
( |
|
item_type, |
|
|
|
gap, |
|
|
|
item |
|
) |
| |
Value: do { \
((item_type *)(
gap)->ga_data)[(
gap)->ga_len++] = (
item); \
} while (0)
◆ GA_APPEND_VIA_PTR
#define GA_APPEND_VIA_PTR |
( |
|
item_type, |
|
|
|
gap |
|
) |
| ga_append_via_ptr(gap, sizeof(item_type)) |
◆ GA_DEEP_CLEAR
#define GA_DEEP_CLEAR |
( |
|
gap, |
|
|
|
item_type, |
|
|
|
free_item_fn |
|
) |
| |
Value: do { \
garray_T *_gap = (
gap); \
if (_gap->ga_data !=
NULL) { \
for (
int i = 0;
i < _gap->ga_len;
i++) { \
item_type *_item = &(((item_type *)_gap->ga_data)[
i]); \
free_item_fn(_item); \
} \
} \
ga_clear(_gap); \
} while (false)
Deep free a garray of specific type using a custom free function. Items in the array as well as the array itself are freed.
- Parameters
-
gap | the garray to be freed |
item_type | type of the item in the garray |
free_item_fn | free function that takes (*item_type) as parameter |
◆ GA_DEEP_CLEAR_PTR
Call free
for every pointer stored in the garray and then frees the garray.
- Parameters
-
gap | the garray to be freed |
◆ GA_EMPTY
#define GA_EMPTY |
( |
|
ga_ptr | ) |
((ga_ptr)->ga_len <= 0) |
◆ GA_EMPTY_INIT_VALUE
#define GA_EMPTY_INIT_VALUE { 0, 0, 0, 1, NULL } |
◆ GA_INIT
#define GA_INIT |
( |
|
itemsize, |
|
|
|
growsize |
|
) |
| { 0, 0, (itemsize), (growsize), NULL } |
◆ garray_T
Structure used for growing arrays. This is used to store information that only grows, is deleted all at once, and needs to be accessed by index. See ga_clear() and ga_grow().