-
-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhance XPtr to set and check type info #1212
Comments
On second thought, a drawback of automatic type checking is that it wouldn't work with polymorphism. And I use this quite a lot. |
Good catch. Optional extension in derived class as we riffed may be the way to go. |
FWIW that is now in release 0.12.0 of package |
This issue is stale (365 days without activity) and will be closed in 31 days unless new activity is seen. Please feel free to re-open it is still a concern, possibly with additional data. |
Still on the TODO list... |
The tagging idea I had (and use in So maybe a better idea is to use an additional attribute? |
The
XPtr
class wraps somewhat narrowly around R's own external pointers. The class actually has three fields: the pointer, a tag and a protect field. WRE, Section 5.13.1 has an example of setting the tag (of typeSEXP
, so can be anything) to a string. Searching the CRAN org here at GitHub (with its effective CRAN mirror) shows a few packages using this ... for various purposes, sometimes even second payloads.Now, because the external pointer is effectively a naked C pointer, it would be useful to also offer some type checking. Following some initial discussion (thanks, @ihnorton) I am currently prototyping use with the
tiledb
package. But as this is generally useful we should support it here in time (maybe the July release, maybe next January).Among the obvious missing features are
XPtr
classXPtr
creation helper setting pointer and tagFollowing some quick discussion with @Enchufa2 there is also an idea to automate this further via
typeid()
andstd::type_info()
(though that may not work for user-defined classes, where I also ran into some potholes on initial probing with C++17-ish features).In any event, this seems like a fruitful avenue to venture down so opening this ticket to collect more ideas.
The text was updated successfully, but these errors were encountered: