On Tuesday, 25 April 2017 at 20:20:08 UTC, jmh530 wrote:
On Monday, 24 April 2017 at 21:59:34 UTC, Atila Neves wrote:


Enter the `@Dispose` UDA:


I found this really interesting.

Am I understanding the process correctly: apply map to numbers, allocate and return a new array in D, copy it to Excel, call dispose to free the D memory.

So if you instead used something like
scope(exit) Mallocator.instance.dispose(dArg);
then Excel wouldn't be able to use it because it would be freed by D already?

It seems like your @Dispose UDA could have many uses outside of just the excel-d package. If I understand correctly, it's similar to C++ smart pointers, but not exactly the same. I'm still not sure I totally grok it though.

I considered using the smart pointers from my automem package but didn't want to add a dependency. I'm thinking now I could make it optional and if it detects that your function returns Unique!T it can convert the wrapped T to an Excel type.

Atila

Reply via email to