mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 09:57:32 +00:00 
			
		
		
		
	 4d82f628c4
			
		
	
	
		4d82f628c4
		
			
		
	
	
	
	
		
			
			The ``structmember.h`` header is deprecated, though it continues to be available and there are no plans to remove it. There are no deprecation warnings. Old code can stay unchanged (unless the extra include and non-namespaced macros bother you greatly). Specifically, no uses in CPython are updated -- that would just be unnecessary churn. The ``structmember.h`` header is deprecated, though it continues to be available and there are no plans to remove it. Its contents are now available just by including ``Python.h``, with a ``Py`` prefix added if it was missing: - `PyMemberDef`, `PyMember_GetOne` and`PyMember_SetOne` - Type macros like `Py_T_INT`, `Py_T_DOUBLE`, etc. (previously ``T_INT``, ``T_DOUBLE``, etc.) - The flags `Py_READONLY` (previously ``READONLY``) and `Py_AUDIT_READ` (previously all uppercase) Several items are not exposed from ``Python.h``: - `T_OBJECT` (use `Py_T_OBJECT_EX`) - `T_NONE` (previously undocumented, and pretty quirky) - The macro ``WRITE_RESTRICTED`` which does nothing. - The macros ``RESTRICTED`` and ``READ_RESTRICTED``, equivalents of `Py_AUDIT_READ`. - In some configurations, ``<stddef.h>`` is not included from ``Python.h``. It should be included manually when using ``offsetof()``. The deprecated header continues to provide its original contents under the original names. Your old code can stay unchanged, unless the extra include and non-namespaced macros bother you greatly. There is discussion on the issue to rename `T_PYSSIZET` to `PY_T_SSIZE` or similar. I chose not to do that -- users will probably copy/paste that with any spelling, and not renaming it makes migration docs simpler. Co-Authored-By: Alexander Belopolsky <abalkin@users.noreply.github.com> Co-Authored-By: Matthias Braun <MatzeB@users.noreply.github.com>
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef Py_STRUCTMEMBER_H
 | |
| #define Py_STRUCTMEMBER_H
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /* Interface to map C struct members to Python object attributes
 | |
|  *
 | |
|  * This header is deprecated: new code should not use stuff from here.
 | |
|  * New definitions are in descrobject.h.
 | |
|  *
 | |
|  * However, there's nothing wrong with old code continuing to use it,
 | |
|  * and there's not much mainenance overhead in maintaining a few aliases.
 | |
|  * So, don't be too eager to convert old code.
 | |
|  *
 | |
|  * It uses names not prefixed with Py_.
 | |
|  * It is also *not* included from Python.h and must be included individually.
 | |
|  */
 | |
| 
 | |
| #include <stddef.h> /* For offsetof (not always provided by Python.h) */
 | |
| 
 | |
| /* Types */
 | |
| #define T_SHORT     Py_T_SHORT
 | |
| #define T_INT       Py_T_INT
 | |
| #define T_LONG      Py_T_LONG
 | |
| #define T_FLOAT     Py_T_FLOAT
 | |
| #define T_DOUBLE    Py_T_DOUBLE
 | |
| #define T_STRING    Py_T_STRING
 | |
| #define T_OBJECT    _Py_T_OBJECT
 | |
| #define T_CHAR      Py_T_CHAR
 | |
| #define T_BYTE      Py_T_BYTE
 | |
| #define T_UBYTE     Py_T_UBYTE
 | |
| #define T_USHORT    Py_T_USHORT
 | |
| #define T_UINT      Py_T_UINT
 | |
| #define T_ULONG     Py_T_ULONG
 | |
| #define T_STRING_INPLACE    Py_T_STRING_INPLACE
 | |
| #define T_BOOL      Py_T_BOOL
 | |
| #define T_OBJECT_EX Py_T_OBJECT_EX
 | |
| #define T_LONGLONG  Py_T_LONGLONG
 | |
| #define T_ULONGLONG Py_T_ULONGLONG
 | |
| #define T_PYSSIZET  Py_T_PYSSIZET
 | |
| #define T_NONE      _Py_T_NONE
 | |
| 
 | |
| /* Flags */
 | |
| #define READONLY            Py_READONLY
 | |
| #define PY_AUDIT_READ        Py_AUDIT_READ
 | |
| #define READ_RESTRICTED     Py_AUDIT_READ
 | |
| #define PY_WRITE_RESTRICTED _Py_WRITE_RESTRICTED
 | |
| #define RESTRICTED          (READ_RESTRICTED | PY_WRITE_RESTRICTED)
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif /* !Py_STRUCTMEMBER_H */
 |