structmember.h 2.0 KB

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