mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2 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 */
 | |
| 
 | |
| #include <stddef.h> /* For offsetof */
 | |
| 
 | |
| /* An array of PyMemberDef structures defines the name, type and offset
 | |
|    of selected members of a C structure.  These can be read by
 | |
|    PyMember_GetOne() and set by PyMember_SetOne() (except if their READONLY
 | |
|    flag is set).  The array must be terminated with an entry whose name
 | |
|    pointer is NULL. */
 | |
| 
 | |
| typedef struct PyMemberDef {
 | |
|     char *name;
 | |
|     int type;
 | |
|     Py_ssize_t offset;
 | |
|     int flags;
 | |
|     char *doc;
 | |
| } PyMemberDef;
 | |
| 
 | |
| /* Types */
 | |
| #define T_SHORT     0
 | |
| #define T_INT       1
 | |
| #define T_LONG      2
 | |
| #define T_FLOAT     3
 | |
| #define T_DOUBLE    4
 | |
| #define T_STRING    5
 | |
| #define T_OBJECT    6
 | |
| /* XXX the ordering here is weird for binary compatibility */
 | |
| #define T_CHAR      7   /* 1-character string */
 | |
| #define T_BYTE      8   /* 8-bit signed int */
 | |
| /* unsigned variants: */
 | |
| #define T_UBYTE     9
 | |
| #define T_USHORT    10
 | |
| #define T_UINT      11
 | |
| #define T_ULONG     12
 | |
| 
 | |
| /* Added by Jack: strings contained in the structure */
 | |
| #define T_STRING_INPLACE    13
 | |
| 
 | |
| /* Added by Lillo: bools contained in the structure (assumed char) */
 | |
| #define T_BOOL      14
 | |
| 
 | |
| #define T_OBJECT_EX 16  /* Like T_OBJECT, but raises AttributeError
 | |
|                            when the value is NULL, instead of
 | |
|                            converting to None. */
 | |
| #ifdef HAVE_LONG_LONG
 | |
| #define T_LONGLONG      17
 | |
| #define T_ULONGLONG     18
 | |
| #endif /* HAVE_LONG_LONG */
 | |
| 
 | |
| #define T_PYSSIZET      19      /* Py_ssize_t */
 | |
| #define T_NONE          20      /* Value is always None */
 | |
| 
 | |
| 
 | |
| /* Flags */
 | |
| #define READONLY            1
 | |
| #define READ_RESTRICTED     2
 | |
| #define PY_WRITE_RESTRICTED 4
 | |
| #define RESTRICTED          (READ_RESTRICTED | PY_WRITE_RESTRICTED)
 | |
| 
 | |
| 
 | |
| /* Current API, use this */
 | |
| PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *);
 | |
| PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *);
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif /* !Py_STRUCTMEMBER_H */
 | 
