mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 c8749b5783
			
		
	
	
		c8749b5783
		
			
		
	
	
	
	
		
			
			This change is strictly renames and moving code around. It helps in the following ways: * ensures type-related init functions focus strictly on one of the three aspects (state, objects, types) * passes in PyInterpreterState * to all those functions, simplifying work on moving types/objects/state to the interpreter * consistent naming conventions help make what's going on more clear * keeping API related to a type in the corresponding header file makes it more obvious where to look for it https://bugs.python.org/issue46008
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef Py_INTERNAL_TUPLE_H
 | |
| #define Py_INTERNAL_TUPLE_H
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #ifndef Py_BUILD_CORE
 | |
| #  error "this header requires Py_BUILD_CORE define"
 | |
| #endif
 | |
| 
 | |
| #include "tupleobject.h"   /* _PyTuple_CAST() */
 | |
| 
 | |
| 
 | |
| /* runtime lifecycle */
 | |
| 
 | |
| extern PyStatus _PyTuple_InitGlobalObjects(PyInterpreterState *);
 | |
| extern PyStatus _PyTuple_InitTypes(PyInterpreterState *);
 | |
| extern void _PyTuple_Fini(PyInterpreterState *);
 | |
| 
 | |
| 
 | |
| /* other API */
 | |
| 
 | |
| #ifndef WITH_FREELISTS
 | |
| // without freelists
 | |
| // for tuples only store empty tuple singleton
 | |
| #  define PyTuple_MAXSAVESIZE 1
 | |
| #  define PyTuple_MAXFREELIST 1
 | |
| #endif
 | |
| 
 | |
| /* Speed optimization to avoid frequent malloc/free of small tuples */
 | |
| #ifndef PyTuple_MAXSAVESIZE
 | |
|    // Largest tuple to save on free list
 | |
| #  define PyTuple_MAXSAVESIZE 20
 | |
| #endif
 | |
| #ifndef PyTuple_MAXFREELIST
 | |
|    // Maximum number of tuples of each size to save
 | |
| #  define PyTuple_MAXFREELIST 2000
 | |
| #endif
 | |
| 
 | |
| struct _Py_tuple_state {
 | |
| #if PyTuple_MAXSAVESIZE > 0
 | |
|     /* Entries 1 up to PyTuple_MAXSAVESIZE are free lists,
 | |
|        entry 0 is the empty tuple () of which at most one instance
 | |
|        will be allocated. */
 | |
|     PyTupleObject *free_list[PyTuple_MAXSAVESIZE];
 | |
|     int numfree[PyTuple_MAXSAVESIZE];
 | |
| #endif
 | |
| };
 | |
| 
 | |
| #define _PyTuple_ITEMS(op) (_PyTuple_CAST(op)->ob_item)
 | |
| 
 | |
| extern PyObject *_PyTuple_FromArray(PyObject *const *, Py_ssize_t);
 | |
| extern PyObject *_PyTuple_FromArraySteal(PyObject *const *, Py_ssize_t);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif   /* !Py_INTERNAL_TUPLE_H */
 |