WIP: Add ability to automatically box scalars in wrapped API with special case argument type #760
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 the follow-up to discussions in #759 on how to automatically allow passing scalars through to pointer arguments to make using the low-level API more ergonomic.
Rather than the
Ref{Any}
type discussed in the comments, though, I instead chose to special caseRef{Cvoid}
sinceRef{Any}
already has a meaning in Julia:It's possible that these types of arguments may be required in setting up callback functions which pass through an arbitrary data bundle. On the other hand,
Ref{Cvoid}
seems to be an error, so there shouldn't be any code that actually needs this data type:I've included "WIP:" in the title because there might be some existing cases which could be simplified with this new feature. For instance, it might make sense on the
h5d_write
andh5a_write
methods, which would allow removing somewrite_(attribute|dataset)
specializations if the wrapper can do the boxing automatically. (Just an idea at this point, though — haven't tried actually doing it yet, so there might be a corner case I'm not currently thinking of.)