62 public StoragePolicy< XPtr<T,StoragePolicy, Finalizer, finalizeOnExit> >,
63 public SlotProxyPolicy< XPtr<T,StoragePolicy, Finalizer, finalizeOnExit> >,
65 public TagProxyPolicy< XPtr<T,StoragePolicy, Finalizer, finalizeOnExit> >,
67 public RObjectMethods< XPtr<T,StoragePolicy, Finalizer, finalizeOnExit> >
89 R_SetExternalPtrTag(x,
tag);
90 R_SetExternalPtrProtected(x,
prot);
104 explicit XPtr(T* p,
bool set_delete_finalizer =
true,
105 SEXP
tag = R_NilValue, SEXP
prot = R_NilValue) {
106 RCPP_DEBUG_2(
"XPtr(T* p = <%p>, bool set_delete_finalizer = %s, SEXP tag = R_NilValue, SEXP prot = R_NilValue)", p, (set_delete_finalizer ?
"true" :
"false"))
108 if (set_delete_finalizer) {
140 return get() == NULL;
149 throw ::Rcpp::exception(
"external pointer is not valid");
171 (Rboolean) finalizeOnExit);
195 inline operator T*() {
203 if (TYPEOF(x) != EXTPTRSXP) {
204 const char* fmt =
"Expecting an external pointer: [type=%s].";
205 throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)));