1 #ifndef Py_INTERNAL_CONTEXT_H
2 #define Py_INTERNAL_CONTEXT_H
3 
4 
5 #include "internal/hamt.h"
6 
7 
8 struct _pycontextobject {
9     PyObject_HEAD
10     PyContext *ctx_prev;
11     PyHamtObject *ctx_vars;
12     PyObject *ctx_weakreflist;
13     int ctx_entered;
14 };
15 
16 
17 struct _pycontextvarobject {
18     PyObject_HEAD
19     PyObject *var_name;
20     PyObject *var_default;
21     PyObject *var_cached;
22     uint64_t var_cached_tsid;
23     uint64_t var_cached_tsver;
24     Py_hash_t var_hash;
25 };
26 
27 
28 struct _pycontexttokenobject {
29     PyObject_HEAD
30     PyContext *tok_ctx;
31     PyContextVar *tok_var;
32     PyObject *tok_oldval;
33     int tok_used;
34 };
35 
36 
37 int _PyContext_Init(void);
38 void _PyContext_Fini(void);
39 
40 
41 #endif /* !Py_INTERNAL_CONTEXT_H */
42