making COW and ownership
Era Scarecrow
rtcvb32 at yahoo.com
Wed Nov 21 07:13:16 PST 2012
On Wednesday, 21 November 2012 at 10:15:52 UTC, Timon Gehr wrote:
> This also duplicates the data if you move the struct in memory
> and then mutate. Probably you just need to have a boolean owner
> flag and set it to false on postblit.
Hadn't thought of a move being involved.. I was trying to use a
way to identify it at the off chance it copied without a
postblit, then it could still identify itself... (casting could
easily do that). I have code that forcibly converts a struct into
a raw array, since reversing that is needed at times. In those
cases the owner address would still identify it where with a flag
it would overwrite the referenced data believing it was the owner.
Let's see... Here's the convert struct/type to array, modified
to simplify.
void[] getArrayOfType(TYPE, V ...)() {
TYPE[] t;
t.length = 1;
static if (V.length)
t[0] = TYPE(V);
return cast(void[]) t;
}
More information about the Digitalmars-d-learn
mailing list