mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
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.)
This commit is contained in:
parent
687dd13bfe
commit
25831652fd
21 changed files with 1223 additions and 823 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue