comparison orange/serialization/Serializer.d @ 46:d6fbd0b3586e

Issue 8: Wrong results for array of arrays. (Temporary fix).
author Jacob Carlborg <doob@me.com>
date Tue, 09 Aug 2011 11:38:50 +0200
parents 8b9409423740
children 9c9bbef6bf5e
comparison
equal deleted inserted replaced
45:3cd22957e411 46:d6fbd0b3586e
549 } 549 }
550 550
551 private T deserializeArray (T) (string key) 551 private T deserializeArray (T) (string key)
552 { 552 {
553 auto slice = deserializeSlice(key); 553 auto slice = deserializeSlice(key);
554 554
555 if (auto tmp = getDeserializedSlice!(T)(slice)) 555 if (auto tmp = getDeserializedSlice!(T)(slice))
556 return *tmp; 556 return *tmp;
557 557
558 T value; 558 T value;
559 559
561 value.length = length; 561 value.length = length;
562 562
563 foreach (i, ref e ; value) 563 foreach (i, ref e ; value)
564 e = deserializeInternal!(typeof(e))(toData(i)); 564 e = deserializeInternal!(typeof(e))(toData(i));
565 }; 565 };
566 566
567 if (slice.id != size_t.max) 567 if (slice.id != size_t.max)
568 { 568 {
569 archive.unarchiveArray(slice.id, dg); 569 archive.unarchiveArray(slice.id, dg);
570 addDeserializedSlice(value, slice.id); 570 addDeserializedSlice(value, slice.id);
571 571
576 { 576 {
577 slice.id = archive.unarchiveArray(key, dg); 577 slice.id = archive.unarchiveArray(key, dg);
578 578
579 if (auto a = slice.id in deserializedSlices) 579 if (auto a = slice.id in deserializedSlices)
580 return cast(T) *a; 580 return cast(T) *a;
581 581
582 addDeserializedSlice(value, slice.id); 582 addDeserializedSlice(value, slice.id);
583 583
584 return value; 584 return value;
585 } 585 }
586 } 586 }