cpython/Include/internal/pycore_context.h

62 lines
1.1 KiB
C
Raw Normal View History

2018-01-22 20:11:18 -04:00
#ifndef Py_INTERNAL_CONTEXT_H
#define Py_INTERNAL_CONTEXT_H
#ifndef Py_BUILD_CORE
# error "this header requires Py_BUILD_CORE define"
#endif
2018-01-22 20:11:18 -04:00
#include "pycore_hamt.h" // PyHamtObject
2018-01-22 20:11:18 -04:00
#define CONTEXT_MAX_WATCHERS 8
extern PyTypeObject _PyContextTokenMissing_Type;
/* runtime lifecycle */
PyStatus _PyContext_Init(PyInterpreterState *);
/* other API */
typedef struct {
PyObject_HEAD
} _PyContextTokenMissing;
2018-01-22 20:11:18 -04:00
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;
#ifndef Py_GIL_DISABLED
2018-01-22 20:11:18 -04:00
PyObject *var_cached;
uint64_t var_cached_tsid;
uint64_t var_cached_tsver;
#endif
2018-01-22 20:11:18 -04:00
Py_hash_t var_hash;
};
struct _pycontexttokenobject {
PyObject_HEAD
PyContext *tok_ctx;
PyContextVar *tok_var;
PyObject *tok_oldval;
int tok_used;
};
// _testinternalcapi.hamt() used by tests.
// Export for '_testcapi' shared extension
PyAPI_FUNC(PyObject*) _PyContext_NewHamtForTests(void);
2018-01-22 20:11:18 -04:00
#endif /* !Py_INTERNAL_CONTEXT_H */