Shallow copy object when type is know

mw mingwu at gmail.com
Fri Aug 28 01:16:43 UTC 2020


On Thursday, 21 April 2016 at 11:53:13 UTC, rumbu wrote:
> On Wednesday, 20 April 2016 at 12:32:48 UTC, Tofu Ninja wrote:
>> Is there a way to shallow copy an object when the type is 
>> known? I cant seem to figure out if there is a standard way. I 
>> can't just implement a copy function for the class, I need a 
>> generic solution.
>
> extern (C) Object _d_newclass(TypeInfo_Class ci);
>
> Object dup(Object obj)
> {
>     if (obj is null)
>         return null;
>     ClassInfo ci = obj.classinfo;
>     size_t start = Object.classinfo.init.length;
>     size_t end = ci.init.length;
>     Object clone = _d_newclass(ci);
>     (cast(void*)clone)[start .. end] = (cast(void*)obj)[start 
> .. end];
>     return clone;
> }

Is this the established D-idiom of a generic class bit-wise clone 
function (as of 2020)?

Any risk of using this implementation I should be aware of?

Thanks.



More information about the Digitalmars-d-learn mailing list