Same as emitProtocol, but for the callback instead of getting a delegate
to call, you get a function pointer and a tuple with the arguments for
each instantiation that can be expanded.
So the callback gets called like callback(name, symbol, arguments, uda)
and the implementation can then call the symbol function using
symbol(arguments.expand).
This works around scoping issues and copies the arguments once more on
invocation, causing ref/out parameters to get lost however. Allows to
copy the arguments to other fibers for parallel processing.
Same as emitProtocol, but for the callback instead of getting a delegate to call, you get a function pointer and a tuple with the arguments for each instantiation that can be expanded.
So the callback gets called like callback(name, symbol, arguments, uda) and the implementation can then call the symbol function using symbol(arguments.expand).
This works around scoping issues and copies the arguments once more on invocation, causing ref/out parameters to get lost however. Allows to copy the arguments to other fibers for parallel processing.