On Wednesday, 25 April 2012 at 21:27:30 UTC, Jonathan M Davis wrote:
But you can't convert a delegate to a function without passing the delegate to the function one way or another, because the function doesn't have a context
(not being a delegate).

That's the whole point of the question - you _can_ pull this off if you create a small code fragment somewhere in memory which calls the delegate with that specific context argument, and then set your function pointer to its address (similar to thunks in most vtable implementations or SEH, if you are familiar with these). Now, the only problem is that executing data is not quite easy, mostly because of security mechanisms (W^X, NX and friends).

As for the original question, I didn't need the feature so far (many C libraries provide a void* bit of data to use at the client's discretion), but if you need inspiration on how to implement it, I'd look at projects like Mono and FFI libraries which likely need to provide similar functionality.

Would probably be a good addition to Phobos.

David

Reply via email to