1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #ifndef Py_INTERNAL_CONTEXT_H
- #define Py_INTERNAL_CONTEXT_H
- #ifndef Py_BUILD_CORE
- # error "this header requires Py_BUILD_CORE define"
- #endif
- #include "pycore_hamt.h" /* PyHamtObject */
- extern PyTypeObject _PyContextTokenMissing_Type;
- /* runtime lifecycle */
- PyStatus _PyContext_Init(PyInterpreterState *);
- void _PyContext_Fini(PyInterpreterState *);
- /* other API */
- typedef struct {
- PyObject_HEAD
- } _PyContextTokenMissing;
- #ifndef WITH_FREELISTS
- // without freelists
- # define PyContext_MAXFREELIST 0
- #endif
- #ifndef PyContext_MAXFREELIST
- # define PyContext_MAXFREELIST 255
- #endif
- struct _Py_context_state {
- #if PyContext_MAXFREELIST > 0
- // List of free PyContext objects
- PyContext *freelist;
- int numfree;
- #endif
- };
- struct _pycontextobject {
- PyObject_HEAD
- PyContext *ctx_prev;
- PyHamtObject *ctx_vars;
- PyObject *ctx_weakreflist;
- int ctx_entered;
- };
- struct _pycontextvarobject {
- PyObject_HEAD
- PyObject *var_name;
- PyObject *var_default;
- PyObject *var_cached;
- uint64_t var_cached_tsid;
- uint64_t var_cached_tsver;
- Py_hash_t var_hash;
- };
- struct _pycontexttokenobject {
- PyObject_HEAD
- PyContext *tok_ctx;
- PyContextVar *tok_var;
- PyObject *tok_oldval;
- int tok_used;
- };
- #endif /* !Py_INTERNAL_CONTEXT_H */
|