From 2f1d87e9c2d0c1c5ae9c8a21d7bac31ff1d9f123 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 20 Oct 1991 20:24:14 +0000 Subject: Added __members__ secret attribute --- Python/structmember.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'Python/structmember.c') diff --git a/Python/structmember.c b/Python/structmember.c index 03b4dcc9dc..acdf9c6717 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -28,6 +28,29 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "structmember.h" +static object * +listmembers(mlist) + struct memberlist *mlist; +{ + int i, n; + object *v; + for (n = 0; mlist[n].name != NULL; n++) + ; + v = newlistobject(n); + if (v != NULL) { + for (i = 0; i < n; i++) + setlistitem(v, i, newstringobject(mlist[i].name)); + if (err_occurred()) { + DECREF(v); + v = NULL; + } + else { + sortlist(v); + } + } + return v; +} + object * getmember(addr, mlist, name) char *addr; @@ -36,6 +59,8 @@ getmember(addr, mlist, name) { struct memberlist *l; + if (strcmp(name, "__members__") == 0) + return listmembers(mlist); for (l = mlist; l->name != NULL; l++) { if (strcmp(l->name, name) == 0) { object *v; -- cgit v1.2.1