Return pointer values which may have been mutated by foreign funcalls #213
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.
This is an option for gaining access to values that are mutated by foreign function calls.
The advantage of this solution is ease-of-use with
(multiple-value-bind ... ... ...)
and(declare (ignore ...))
.The consequence is unnecessary calls to
cffi:mem-ref
.There are three alternatives.
Use a
typecase
that allows the use to pass either a value or a pointer to a value. The advantage here is that we don't have unnecessary calls tocffi:mem-ref
. The consequences are that the user has to manage the memory allocation and that we usetypecase
.Force the user to manage the memory allocation for all pointer variables. The advantage here is that we don't use
typecase
. The consequences are extra work for the user and unnecessary loss of type-checking.Give up access to mutated pointers, keep everything as-is.
Let me know your thoughts, @stylewarning @kchanqvq