Create an actual copy during director pass-by-value. #434
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Handle arguments passed by value into a director class the same way as arguments outputted by value: Make a copy of them that Java can own.
It would be nice if the new object could be move-initialized, but in the interest of compatibility I have not attempted this. Is there a policy on how move semantics can be exploited in SWIG without breaking compatibility?
Objects passed by value are only valid for the duration of the call, so the previous approach made sense from a C++ perspective; however, in C++ you could save the argument by copying or moving it. In Java it's more natural to save a reference to the object instead. This approach allows this to work.
Perhaps ironically, pass-by-reference still results in an object that Java cannot safely safe a reference to, because objects passed by reference might not be copy-constructable.