diff options
Diffstat (limited to 'src/nvim/eval_defs.h')
-rw-r--r-- | src/nvim/eval_defs.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/nvim/eval_defs.h b/src/nvim/eval_defs.h index a8a8acd048..373f1e6278 100644 --- a/src/nvim/eval_defs.h +++ b/src/nvim/eval_defs.h @@ -2,6 +2,7 @@ #define NVIM_EVAL_DEFS_H #include <limits.h> +#include <stddef.h> #include "nvim/hashtab.h" @@ -132,4 +133,16 @@ typedef struct list_stack_S { struct list_stack_S *prev; } list_stack_T; +// In a hashtab item "hi_key" points to "di_key" in a dictitem. +// This avoids adding a pointer to the hashtab item. + +/// Convert a dictitem pointer to a hashitem key pointer +#define DI2HIKEY(di) ((di)->di_key) + +/// Convert a hashitem key pointer to a dictitem pointer +#define HIKEY2DI(p) ((dictitem_T *)(p - offsetof(dictitem_T, di_key))) + +/// Convert a hashitem pointer to a dictitem pointer +#define HI2DI(hi) HIKEY2DI((hi)->hi_key) + #endif // NVIM_EVAL_DEFS_H |