File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -125,6 +125,22 @@ wr_object(v, fp)
125125 wr_object (getlistitem (v , (int )i ), fp );
126126 }
127127 }
128+ else if (is_dictobject (v )) {
129+ wr_byte (TYPE_DICT , fp );
130+ /* This one is NULL object terminated! */
131+ n = getdictsize (v );
132+ for (i = 0 ; i < n ; i ++ ) {
133+ object * key , * val ;
134+ extern object * getdict2key ();
135+ key = getdict2key (v , (int )i );
136+ if (key != NULL ) {
137+ val = dictlookup (v , getstringvalue (key ));
138+ wr_object (key , fp );
139+ wr_object (val , fp );
140+ }
141+ }
142+ wr_object ((object * )NULL , fp );
143+ }
128144 else if (is_codeobject (v )) {
129145 codeobject * co = (codeobject * )v ;
130146 wr_byte (TYPE_CODE , fp );
@@ -261,6 +277,22 @@ rd_object(fp)
261277 setlistitem (v , (int )i , rd_object (fp ));
262278 return v ;
263279
280+ case TYPE_DICT :
281+ v = newdictobject ();
282+ if (v == NULL )
283+ return NULL ;
284+ for (;;) {
285+ object * key , * val ;
286+ key = rd_object (fp );
287+ if (key == NULL )
288+ break ;
289+ val = rd_object (fp );
290+ dict2insert (v , key , val );
291+ DECREF (key );
292+ XDECREF (val );
293+ }
294+ return v ;
295+
264296 case TYPE_CODE :
265297 {
266298 object * code = rd_object (fp );
@@ -288,7 +320,7 @@ rd_object(fp)
288320 }
289321}
290322
291- /* The rest is meant to test only ... */
323+ /* And an interface for Python programs ... */
292324
293325static object *
294326dump (self , args )
You can’t perform that action at this time.
0 commit comments