deepCopy

Jacob Carlborg doob at me.com
Tue Oct 19 13:40:09 PDT 2010


On 2010-10-19 17:52, Denis Koroskin wrote:
> On Tue, 19 Oct 2010 12:37:35 +0400, Jacob Carlborg <doob at me.com> wrote:
>>
>> What types does this support, all types? Does it support array slices?
>>
>
> Classes, structs, built-in types, arrays, slices - just about anything.
> For classes to work you need to implement ISerializable interface using
> mixin Serializable; so that it could serialize through base class pointer.
>
> Not that I think about it, it doesn't support built-in associative
> arrays yet. I forgot about that one (it might be tricky to serialize it
> into a sequential memory block). Take a loot at the tests (there are
> many of them, some of them are very tricky), and give it a try.

I'm kind of amazed how sort the code is and that you managed to support 
delegates. A suggestion, support classes without the mixin if they're 
not serialized through a base class reference.

I might have found a bug:

struct Foo
{
     int[] arr;
}

public void test0() {
     Foo src;
     src.arr = [0, 1, 2, 3, 4, 5];		
     auto dst = deepCopy(src);
	
     assert(src.arr is dst.arr); // passes, but should fail ?
}

The assert passes but should fail, otherwise it's not a deep copy.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list