summaryrefslogtreecommitdiffstats
path: root/Python/marshal.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1993-05-19 14:50:45 (GMT)
committerGuido van Rossum <guido@python.org>1993-05-19 14:50:45 (GMT)
commit25831652fd4c03323066d4cafdc0551c396a993e (patch)
tree69588df0f98b3280402cad3ed95865d06fa21702 /Python/marshal.c
parent687dd13bfec51849c93db7c538ff41d4c8ecddcb (diff)
downloadcpython-25831652fd4c03323066d4cafdc0551c396a993e.zip
cpython-25831652fd4c03323066d4cafdc0551c396a993e.tar.gz
cpython-25831652fd4c03323066d4cafdc0551c396a993e.tar.bz2
Several changes in one:
(1) dictionaries/mappings now have attributes values() and items() as well as keys(); at the C level, use the new function mappinggetnext() to iterate over a dictionary. (2) "class C(): ..." is now illegal; you must write "class C: ...". (3) Class objects now know their own name (finally!); and minor improvements to the way how classes, functions and methods are represented as strings. (4) Added an "access" statement and semantics. (This is still experimental -- as long as you don't use the keyword 'access' nothing should be changed.)
Diffstat (limited to 'Python/marshal.c')
-rw-r--r--Python/marshal.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/Python/marshal.c b/Python/marshal.c
index 3853ff9..93503d1 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -174,17 +174,14 @@ w_object(v, p)
}
}
else if (is_dictobject(v)) {
+ int pos;
+ object *key, *value;
w_byte(TYPE_DICT, p);
/* This one is NULL object terminated! */
- n = getdictsize(v);
- for (i = 0; i < n; i++) {
- object *key, *val;
- key = getdict2key(v, (int)i);
- if (key != NULL) {
- val = dict2lookup(v, key); /* Can't be NULL */
- w_object(key, p);
- w_object(val, p);
- }
+ pos = 0;
+ while (mappinggetnext(v, &pos, &key, &value)) {
+ w_object(key, p);
+ w_object(value, p);
}
w_object((object *)NULL, p);
}