From: Guido van Rossum Date: Sun, 20 Oct 1991 20:24:14 +0000 (+0000) Subject: Added __members__ secret attribute X-Git-Tag: v0.9.8~785 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2f1d87e9c2d0c1c5ae9c8a21d7bac31ff1d9f123;p=thirdparty%2FPython%2Fcpython.git Added __members__ secret attribute --- diff --git a/Python/structmember.c b/Python/structmember.c index 03b4dcc9dcfb..acdf9c671735 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;