1#ifndef NVIM_CONTEXT_H
2#define NVIM_CONTEXT_H
3
4#include <msgpack.h>
5#include "nvim/api/private/defs.h"
6#include "nvim/lib/kvec.h"
7
8typedef struct {
9 msgpack_sbuffer regs; ///< Registers.
10 msgpack_sbuffer jumps; ///< Jumplist.
11 msgpack_sbuffer buflist; ///< Buffer list.
12 msgpack_sbuffer gvars; ///< Global variables.
13 Array funcs; ///< Functions.
14} Context;
15typedef kvec_t(Context) ContextVec;
16
17#define MSGPACK_SBUFFER_INIT (msgpack_sbuffer) { \
18 .size = 0, \
19 .data = NULL, \
20 .alloc = 0, \
21}
22
23#define CONTEXT_INIT (Context) { \
24 .regs = MSGPACK_SBUFFER_INIT, \
25 .jumps = MSGPACK_SBUFFER_INIT, \
26 .buflist = MSGPACK_SBUFFER_INIT, \
27 .gvars = MSGPACK_SBUFFER_INIT, \
28 .funcs = ARRAY_DICT_INIT, \
29}
30
31typedef enum {
32 kCtxRegs = 1, ///< Registers
33 kCtxJumps = 2, ///< Jumplist
34 kCtxBuflist = 4, ///< Buffer list
35 kCtxGVars = 8, ///< Global variables
36 kCtxSFuncs = 16, ///< Script functions
37 kCtxFuncs = 32, ///< Functions
38} ContextTypeFlags;
39
40extern int kCtxAll;
41
42#ifdef INCLUDE_GENERATED_DECLARATIONS
43# include "context.h.generated.h"
44#endif
45
46#endif // NVIM_CONTEXT_H
47