(root)/
Python-3.11.7/
Include/
structmember.h
       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  struct PyMemberDef {
      19      const char *name;
      20      int type;
      21      Py_ssize_t offset;
      22      int flags;
      23      const char *doc;
      24  };
      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 *, PyMemberDef *);
      69  PyAPI_FUNC(int) PyMember_SetOne(char *, PyMemberDef *, PyObject *);
      70  
      71  
      72  #ifdef __cplusplus
      73  }
      74  #endif
      75  #endif /* !Py_STRUCTMEMBER_H */