1 #ifndef Py_STRUCTMEMBER_H 2 #define Py_STRUCTMEMBER_H 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 8 /* Interface to map C struct members to Python object attributes */ 9 10 #include <stddef.h> /* For offsetof */ 11 12 /* An array of PyMemberDef structures defines the name, type and offset 13 of selected members of a C structure. These can be read by 14 PyMember_GetOne() and set by PyMember_SetOne() (except if their READONLY 15 flag is set). The array must be terminated with an entry whose name 16 pointer is NULL. */ 17 18 typedef struct PyMemberDef { 19 const char *name; 20 int type; 21 Py_ssize_t offset; 22 int flags; 23 const char *doc; 24 } PyMemberDef; 25 26 /* Types */ 27 #define T_SHORT 0 28 #define T_INT 1 29 #define T_LONG 2 30 #define T_FLOAT 3 31 #define T_DOUBLE 4 32 #define T_STRING 5 33 #define T_OBJECT 6 34 /* XXX the ordering here is weird for binary compatibility */ 35 #define T_CHAR 7 /* 1-character string */ 36 #define T_BYTE 8 /* 8-bit signed int */ 37 /* unsigned variants: */ 38 #define T_UBYTE 9 39 #define T_USHORT 10 40 #define T_UINT 11 41 #define T_ULONG 12 42 43 /* Added by Jack: strings contained in the structure */ 44 #define T_STRING_INPLACE 13 45 46 /* Added by Lillo: bools contained in the structure (assumed char) */ 47 #define T_BOOL 14 48 49 #define T_OBJECT_EX 16 /* Like T_OBJECT, but raises AttributeError 50 when the value is NULL, instead of 51 converting to None. */ 52 #define T_LONGLONG 17 53 #define T_ULONGLONG 18 54 55 #define T_PYSSIZET 19 /* Py_ssize_t */ 56 #define T_NONE 20 /* Value is always None */ 57 58 59 /* Flags */ 60 #define READONLY 1 61 #define READ_RESTRICTED 2 62 #define PY_WRITE_RESTRICTED 4 63 #define RESTRICTED (READ_RESTRICTED | PY_WRITE_RESTRICTED) 64 65 #define PY_AUDIT_READ READ_RESTRICTED 66 67 /* Current API, use this */ 68 PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *); 69 PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *); 70 71 72 #ifdef __cplusplus 73 } 74 #endif 75 #endif /* !Py_STRUCTMEMBER_H */ 76