Mercurial > projects > orange
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 } |