1
- // -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2
1
//
3
2
// XPtr.h: Rcpp R/C++ interface class library -- smart external pointers
4
3
//
5
- // Copyright (C) 2009 - 2017 Dirk Eddelbuettel and Romain Francois
4
+ // Copyright (C) 2009 - 2020 Dirk Eddelbuettel and Romain Francois
6
5
//
7
6
// This file is part of Rcpp.
8
7
//
27
26
namespace Rcpp {
28
27
29
28
template <typename T>
30
- void standard_delete_finalizer (T* obj) {
29
+ void standard_delete_finalizer (T* obj) { // #nocov start
31
30
delete obj;
32
31
}
33
32
@@ -46,7 +45,7 @@ void finalizer_wrapper(SEXP p) {
46
45
R_ClearExternalPtr (p);
47
46
48
47
Finalizer (ptr);
49
- }
48
+ } // #nocov end
50
49
51
50
template <
52
51
typename T,
@@ -102,7 +101,7 @@ class XPtr :
102
101
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" ))
103
102
Storage::set__ (R_MakeExternalPtr ((void *)p , tag, prot));
104
103
if (set_delete_finalizer) {
105
- setDeleteFinalizer ();
104
+ setDeleteFinalizer (); // #nocov
106
105
}
107
106
}
108
107
@@ -142,7 +141,7 @@ class XPtr :
142
141
inline T* checked_get () const {
143
142
T* ptr = get ();
144
143
if (ptr == NULL )
145
- throw ::Rcpp::exception (" external pointer is not valid" );
144
+ throw ::Rcpp::exception (" external pointer is not valid" ); // #nocov
146
145
return ptr;
147
146
}
148
147
@@ -162,10 +161,10 @@ class XPtr :
162
161
return checked_get ();
163
162
}
164
163
165
- void setDeleteFinalizer () {
164
+ void setDeleteFinalizer () { // #nocov start
166
165
R_RegisterCFinalizerEx (Storage::get__ (), finalizer_wrapper<T,Finalizer>,
167
166
(Rboolean) finalizeOnExit);
168
- }
167
+ } // #nocov end
169
168
170
169
/* *
171
170
* Release the external pointer (if any) immediately. This will cause
@@ -197,8 +196,8 @@ class XPtr :
197
196
private:
198
197
inline void checked_set (SEXP x) {
199
198
if (TYPEOF (x) != EXTPTRSXP) {
200
- const char * fmt = " Expecting an external pointer: [type=%s]." ;
201
- throw ::Rcpp::not_compatible (fmt, Rf_type2char (TYPEOF (x)));
199
+ const char * fmt = " Expecting an external pointer: [type=%s]." ; // #nocov
200
+ throw ::Rcpp::not_compatible (fmt, Rf_type2char (TYPEOF (x))); // #nocov
202
201
}
203
202
Storage::set__ (x);
204
203
}
0 commit comments