annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/python3.8/structmember.h @ 69:33d812a61356

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