comparison orange/serialization/Serializer.d @ 14:6e454595b203

Fixed (de)serializing of arrays and associative arrays.
author Jacob Carlborg <doob@me.com>
date Sun, 08 Aug 2010 21:24:11 +0200
parents 99c52d46822a
children 9f6064f9505a
comparison
equal deleted inserted replaced
13:698b7c558bfb 14:6e454595b203
194 194
195 private void serializeArray (T) (T value, DataType key) 195 private void serializeArray (T) (T value, DataType key)
196 { 196 {
197 archive.archive(value, key, { 197 archive.archive(value, key, {
198 foreach (i, e ; value) 198 foreach (i, e ; value)
199 archive.archive(e, toDataType(i)); 199 serialize(e, toDataType(i));
200 }); 200 });
201 } 201 }
202 202
203 private void serializeAssociativeArray (T) (T value, DataType key) 203 private void serializeAssociativeArray (T) (T value, DataType key)
204 { 204 {
205 archive.archive(value, key, { 205 archive.archive(value, key, {
206 foreach(k, v ; value) 206 foreach(k, v ; value)
207 archive.archive(v, toDataType(k)); 207 serialize(v, toDataType(k));
208 }); 208 });
209 } 209 }
210 210
211 private void serializePointer (T) (T value, DataType key) 211 private void serializePointer (T) (T value, DataType key)
212 { 212 {
367 367
368 private T deserializeArray (T) (DataType key) 368 private T deserializeArray (T) (DataType key)
369 { 369 {
370 return archive.unarchive!(T)(key, (T value) { 370 return archive.unarchive!(T)(key, (T value) {
371 foreach (i, ref e ; value) 371 foreach (i, ref e ; value)
372 e = archive.unarchive!(typeof(e))(toDataType(i)); 372 e = deserializeInternal!(typeof(e))(toDataType(i));
373 373
374 return value; 374 return value;
375 }); 375 });
376 } 376 }
377 377