mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	This is part of the effort to consolidate global variables, to make them easier to manage (and make it easier to later move some of them to PyInterpreterState). https://github.com/python/cpython/issues/81057
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#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 */
 |