Skip to content

xptr: Manipulating External Pointers

ci License r-universe Last Commit Documentation

About

External pointers are a powerful tool supported by the C API of the R environment and language that is documented in the Writing R Extensions manual. But there is limited native support for external pointers on the R side. This package provides some basic tools to verify, create, modify, and tag 'externalptr' objects

Usage

library(xptr)
a <- new_xptr("0x11a888090")
b <- new_xptr("0x11a888098")
is_xptr(a)
#> [1] TRUE
xptr_address(a)
#> [1] "0x11a888090"
xptr_clear(a)
is_null_xptr(a)
#> [1] TRUE
set_xptr_address(a, xptr_address(b))
xptr_address(a)           # default 'pointer' variant
#> [1] "0x11a888098"
> xptr_address(a, FALSE)  # non-'pointer' variant
[1] "4740120728"
>

Installation

The package is not currently on CRAN.

The r-univere page has source and binary builds from the repository version which may differ from the CRAN version and shows how to install them. Lastly, one can always rely on remotes::install_github():

> remotes::install_github("eddelbuettel/xptr")

Author

Randy Lai created the R package and prepared versions 1.0 to 1.1.3 between 2017 and 2020.

Dirk Eddelbuettel adopted the package in 2025.

License

MIT