diff Python/structmember.c @ 398:0ac1357cd898 legacy-trunk

Added __members__ secret attribute
author Guido van Rossum <guido@python.org>
date Sun, 20 Oct 1991 20:24:14 +0000
parents 853b736a6a9e
children e2c3463c4d91
line wrap: on
line diff
--- a/Python/structmember.c	Sun Oct 20 20:22:50 1991 +0000
+++ b/Python/structmember.c	Sun Oct 20 20:24:14 1991 +0000
@@ -28,6 +28,29 @@
 
 #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 @@
 {
 	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;