summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-09-20 20:46:19 (GMT)
committerGuido van Rossum <guido@python.org>2001-09-20 20:46:19 (GMT)
commit6f7993765ac0989b5d13084240797913627a31d8 (patch)
tree51dd234049db1eb78c6dd25d23ec687bf91d817c /Include
parente0af35eb694179d8da5d3208ffdfb92e5356335f (diff)
downloadcpython-6f7993765ac0989b5d13084240797913627a31d8.zip
cpython-6f7993765ac0989b5d13084240797913627a31d8.tar.gz
cpython-6f7993765ac0989b5d13084240797913627a31d8.tar.bz2
Add optional docstrings to member descriptors. For backwards
compatibility, this required all places where an array of "struct memberlist" structures was declared that is referenced from a type's tp_members slot to change the type of the structure to PyMemberDef; "struct memberlist" is now only used by old code that still calls PyMember_Get/Set. The code in PyObject_GenericGetAttr/SetAttr now calls the new APIs PyMember_GetOne/SetOne, which take a PyMemberDef argument. As examples, I added actual docstrings to the attributes of a few types: file, complex, instance method, super, and xxsubtype.spamlist. Also converted the symtable to new style getattr.
Diffstat (limited to 'Include')
-rw-r--r--Include/descrobject.h2
-rw-r--r--Include/object.h2
-rw-r--r--Include/structmember.h16
3 files changed, 18 insertions, 2 deletions
diff --git a/Include/descrobject.h b/Include/descrobject.h
index a868310..3d58181 100644
--- a/Include/descrobject.h
+++ b/Include/descrobject.h
@@ -21,7 +21,7 @@ struct wrapperbase {
extern DL_IMPORT(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
extern DL_IMPORT(PyObject *) PyDescr_NewMember(PyTypeObject *,
- struct memberlist *);
+ struct PyMemberDef *);
extern DL_IMPORT(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
struct getsetlist *);
extern DL_IMPORT(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
diff --git a/Include/object.h b/Include/object.h
index 160331e..1d0ae5f 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -274,7 +274,7 @@ typedef struct _typeobject {
/* Attribute descriptor and subclassing stuff */
struct PyMethodDef *tp_methods;
- struct memberlist *tp_members;
+ struct PyMemberDef *tp_members;
struct getsetlist *tp_getset;
struct _typeobject *tp_base;
PyObject *tp_dict;
diff --git a/Include/structmember.h b/Include/structmember.h
index cd35fdb..2c9f41d 100644
--- a/Include/structmember.h
+++ b/Include/structmember.h
@@ -28,12 +28,22 @@ extern "C" {
pointer is NULL. */
struct memberlist {
+ /* Obsolete version, for binary backwards compatibility */
char *name;
int type;
int offset;
int flags;
};
+typedef struct PyMemberDef {
+ /* Current version, use this */
+ char *name;
+ int type;
+ int offset;
+ int flags;
+ char *doc;
+} PyMemberDef;
+
/* Types */
#define T_SHORT 0
#define T_INT 1
@@ -66,9 +76,15 @@ struct memberlist {
#define RESTRICTED (READ_RESTRICTED | WRITE_RESTRICTED)
+/* Obsolete API, for binary backwards compatibility */
DL_IMPORT(PyObject *) PyMember_Get(char *, struct memberlist *, char *);
DL_IMPORT(int) PyMember_Set(char *, struct memberlist *, char *, PyObject *);
+/* Current API, use this */
+DL_IMPORT(PyObject *) PyMember_GetOne(char *, struct PyMemberDef *);
+DL_IMPORT(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *);
+
+
#ifdef __cplusplus
}
#endif