| 
									
										
										
										
											2018-01-22 19:11:18 -05:00
										 |  |  | #ifndef Py_INTERNAL_CONTEXT_H
 | 
					
						
							|  |  |  | #define Py_INTERNAL_CONTEXT_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-17 23:02:26 +02:00
										 |  |  | #ifndef Py_BUILD_CORE
 | 
					
						
							|  |  |  | #  error "this header requires Py_BUILD_CORE define"
 | 
					
						
							| 
									
										
										
										
											2018-11-09 13:03:37 +01:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2018-01-22 19:11:18 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-21 20:05:59 +02:00
										 |  |  | #include "pycore_hamt.h"          // PyHamtObject
 | 
					
						
							| 
									
										
										
										
											2018-01-22 19:11:18 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-09 12:59:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 18:55:48 +01:00
										 |  |  | extern PyTypeObject _PyContextTokenMissing_Type; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-09 12:59:26 -07:00
										 |  |  | /* runtime lifecycle */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 18:55:48 +01:00
										 |  |  | PyStatus _PyContext_Init(PyInterpreterState *); | 
					
						
							| 
									
										
										
										
											2021-12-09 12:59:26 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* other API */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-16 09:54:28 -07:00
										 |  |  | typedef struct { | 
					
						
							|  |  |  |     PyObject_HEAD | 
					
						
							|  |  |  | } _PyContextTokenMissing; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 19:11:18 -05: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; | 
					
						
							| 
									
										
										
										
											2024-07-16 02:57:58 +08:00
										 |  |  | #ifndef Py_GIL_DISABLED
 | 
					
						
							| 
									
										
										
										
											2018-01-22 19:11:18 -05:00
										 |  |  |     PyObject *var_cached; | 
					
						
							|  |  |  |     uint64_t var_cached_tsid; | 
					
						
							|  |  |  |     uint64_t var_cached_tsver; | 
					
						
							| 
									
										
										
										
											2024-07-16 02:57:58 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2018-01-22 19:11:18 -05:00
										 |  |  |     Py_hash_t var_hash; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct _pycontexttokenobject { | 
					
						
							|  |  |  |     PyObject_HEAD | 
					
						
							|  |  |  |     PyContext *tok_ctx; | 
					
						
							|  |  |  |     PyContextVar *tok_var; | 
					
						
							|  |  |  |     PyObject *tok_oldval; | 
					
						
							|  |  |  |     int tok_used; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-24 19:37:41 +02:00
										 |  |  | // _testinternalcapi.hamt() used by tests.
 | 
					
						
							|  |  |  | // Export for '_testcapi' shared extension
 | 
					
						
							|  |  |  | PyAPI_FUNC(PyObject*) _PyContext_NewHamtForTests(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 19:11:18 -05:00
										 |  |  | #endif /* !Py_INTERNAL_CONTEXT_H */
 |