blob: 1671cebe1bfae4ac5eff557aa9fac661c79ee13e [file] [log] [blame]
Guido van Rossum32d34c82001-09-20 21:45:26 +00001/* Descriptors */
Tim Peters6d6c1a32001-08-02 04:15:00 +00002
3typedef PyObject *(*getter)(PyObject *, void *);
4typedef int (*setter)(PyObject *, PyObject *, void *);
5
Guido van Rossum32d34c82001-09-20 21:45:26 +00006typedef struct PyGetSetDef {
Tim Peters6d6c1a32001-08-02 04:15:00 +00007 char *name;
8 getter get;
9 setter set;
Guido van Rossum32d34c82001-09-20 21:45:26 +000010 char *doc;
Tim Peters6d6c1a32001-08-02 04:15:00 +000011 void *closure;
Guido van Rossum32d34c82001-09-20 21:45:26 +000012} PyGetSetDef;
Tim Peters6d6c1a32001-08-02 04:15:00 +000013
14typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
15 void *wrapped);
16
17struct wrapperbase {
18 char *name;
19 wrapperfunc wrapper;
20 char *doc;
21};
22
23extern DL_IMPORT(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
24extern DL_IMPORT(PyObject *) PyDescr_NewMember(PyTypeObject *,
Guido van Rossum6f799372001-09-20 20:46:19 +000025 struct PyMemberDef *);
Tim Peters6d6c1a32001-08-02 04:15:00 +000026extern DL_IMPORT(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
Guido van Rossum32d34c82001-09-20 21:45:26 +000027 struct PyGetSetDef *);
Tim Peters6d6c1a32001-08-02 04:15:00 +000028extern DL_IMPORT(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
29 struct wrapperbase *, void *);
30extern DL_IMPORT(int) PyDescr_IsData(PyObject *);
31
32extern DL_IMPORT(PyObject *) PyDictProxy_New(PyObject *);
33extern DL_IMPORT(PyObject *) PyWrapper_New(PyObject *, PyObject *);
Guido van Rossum29a62dd2001-08-23 21:40:38 +000034
35
Guido van Rossum8bce4ac2001-09-06 21:56:42 +000036extern DL_IMPORT(PyTypeObject) PyProperty_Type;