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 | |
8 | typedef 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; |
15 | typedef 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 | |
31 | typedef 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 | |
40 | extern int kCtxAll; |
41 | |
42 | #ifdef INCLUDE_GENERATED_DECLARATIONS |
43 | # include "context.h.generated.h" |
44 | #endif |
45 | |
46 | #endif // NVIM_CONTEXT_H |
47 | |