Rcpp Version 1.0.9
Shelter.h
Go to the documentation of this file.
1 // Copyright (C) 2013 Romain Francois
2 //
3 // This file is part of Rcpp.
4 //
5 // Rcpp is free software: you can redistribute it and/or modify it
6 // under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // Rcpp is distributed in the hope that it will be useful, but
11 // WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Rcpp. If not, see <http://www.gnu.org/licenses/>.
17 
18 #ifndef Rcpp_protection_Shelter_H
19 #define Rcpp_protection_Shelter_H
20 
21 namespace Rcpp {
22 
23  template <class T>
24  class Shelter {
25  public:
26  Shelter() : nprotected(0) {}
27 
28  inline SEXP operator()(SEXP x) {
29  if (x != R_NilValue) nprotected++;
30  return Rcpp_protect(x);
31  }
32 
35  nprotected = 0;
36  }
37 
38  private:
40 
41  // not defined on purpose
42  Shelter(const Shelter&) ;
44  };
45 }
46 
47 #endif
int nprotected
Definition: Shelter.h:39
SEXP operator()(SEXP x)
Definition: Shelter.h:28
Shelter(const Shelter &)
Shelter & operator=(const Shelter &)
Rcpp API.
Definition: algo.h:28
SEXP Rcpp_protect(SEXP x)
Definition: Shield.h:23
void Rcpp_unprotect(int i)
Definition: Shield.h:28