cpython/Include/descrobject.h

/* Descriptors */
#ifndef Py_DESCROBJECT_H
#define Py_DESCROBJECT_H
#ifdef __cplusplus
extern "C" {
#endif

getter;
setter;

struct PyGetSetDef {};

PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type;
PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type;
PyAPI_DATA(PyTypeObject) PyMemberDescr_Type;
PyAPI_DATA(PyTypeObject) PyMethodDescr_Type;
PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
PyAPI_DATA(PyTypeObject) PyProperty_Type;

PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *, PyMemberDef *);
PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *, PyGetSetDef *);

PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);


/* 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. */
struct PyMemberDef {};

// These constants used to be in structmember.h, not prefixed by Py_.
// (structmember.h now has aliases to the new names.)

/* Types */
#define Py_T_SHORT
#define Py_T_INT
#define Py_T_LONG
#define Py_T_FLOAT
#define Py_T_DOUBLE
#define Py_T_STRING
#define _Py_T_OBJECT
/* the ordering here is weird for binary compatibility */
#define Py_T_CHAR
#define Py_T_BYTE
/* unsigned variants: */
#define Py_T_UBYTE
#define Py_T_USHORT
#define Py_T_UINT
#define Py_T_ULONG

/* Added by Jack: strings contained in the structure */
#define Py_T_STRING_INPLACE

/* Added by Lillo: bools contained in the structure (assumed char) */
#define Py_T_BOOL

#define Py_T_OBJECT_EX
#define Py_T_LONGLONG
#define Py_T_ULONGLONG

#define Py_T_PYSSIZET
#define _Py_T_NONE

/* Flags */
#define Py_READONLY
#define Py_AUDIT_READ
#define _Py_WRITE_RESTRICTED
#define Py_RELATIVE_OFFSET

PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, PyMemberDef *);
PyAPI_FUNC(int) PyMember_SetOne(char *, PyMemberDef *, PyObject *);

#ifndef Py_LIMITED_API
#define Py_CPYTHON_DESCROBJECT_H
#  include "cpython/descrobject.h"
#  undef Py_CPYTHON_DESCROBJECT_H
#endif

#ifdef __cplusplus
}
#endif
#endif /* !Py_DESCROBJECT_H */