1 | #ifndef Py_CONTEXT_H |
2 | #define Py_CONTEXT_H |
3 | #ifdef __cplusplus |
4 | extern "C" { |
5 | #endif |
6 | |
7 | #ifndef Py_LIMITED_API |
8 | |
9 | |
10 | PyAPI_DATA(PyTypeObject) PyContext_Type; |
11 | typedef struct _pycontextobject PyContext; |
12 | |
13 | PyAPI_DATA(PyTypeObject) PyContextVar_Type; |
14 | typedef struct _pycontextvarobject PyContextVar; |
15 | |
16 | PyAPI_DATA(PyTypeObject) PyContextToken_Type; |
17 | typedef struct _pycontexttokenobject PyContextToken; |
18 | |
19 | |
20 | #define PyContext_CheckExact(o) Py_IS_TYPE(o, &PyContext_Type) |
21 | #define PyContextVar_CheckExact(o) Py_IS_TYPE(o, &PyContextVar_Type) |
22 | #define PyContextToken_CheckExact(o) Py_IS_TYPE(o, &PyContextToken_Type) |
23 | |
24 | |
25 | PyAPI_FUNC(PyObject *) PyContext_New(void); |
26 | PyAPI_FUNC(PyObject *) PyContext_Copy(PyObject *); |
27 | PyAPI_FUNC(PyObject *) PyContext_CopyCurrent(void); |
28 | |
29 | PyAPI_FUNC(int) PyContext_Enter(PyObject *); |
30 | PyAPI_FUNC(int) PyContext_Exit(PyObject *); |
31 | |
32 | |
33 | /* Create a new context variable. |
34 | |
35 | default_value can be NULL. |
36 | */ |
37 | PyAPI_FUNC(PyObject *) PyContextVar_New( |
38 | const char *name, PyObject *default_value); |
39 | |
40 | |
41 | /* Get a value for the variable. |
42 | |
43 | Returns -1 if an error occurred during lookup. |
44 | |
45 | Returns 0 if value either was or was not found. |
46 | |
47 | If value was found, *value will point to it. |
48 | If not, it will point to: |
49 | |
50 | - default_value, if not NULL; |
51 | - the default value of "var", if not NULL; |
52 | - NULL. |
53 | |
54 | '*value' will be a new ref, if not NULL. |
55 | */ |
56 | PyAPI_FUNC(int) PyContextVar_Get( |
57 | PyObject *var, PyObject *default_value, PyObject **value); |
58 | |
59 | |
60 | /* Set a new value for the variable. |
61 | Returns NULL if an error occurs. |
62 | */ |
63 | PyAPI_FUNC(PyObject *) PyContextVar_Set(PyObject *var, PyObject *value); |
64 | |
65 | |
66 | /* Reset a variable to its previous value. |
67 | Returns 0 on success, -1 on error. |
68 | */ |
69 | PyAPI_FUNC(int) PyContextVar_Reset(PyObject *var, PyObject *token); |
70 | |
71 | |
72 | /* This method is exposed only for CPython tests. Don not use it. */ |
73 | PyAPI_FUNC(PyObject *) _PyContext_NewHamtForTests(void); |
74 | |
75 | |
76 | #endif /* !Py_LIMITED_API */ |
77 | |
78 | #ifdef __cplusplus |
79 | } |
80 | #endif |
81 | #endif /* !Py_CONTEXT_H */ |
82 | |