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