Rcpp Version 0.12.12
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:
27 
28  inline SEXP operator()(SEXP x){
29  nprotected++;
30  return PROTECT(x) ;
31  }
32 
34  UNPROTECT(nprotected) ;
35  nprotected = 0 ;
36  }
37 
38  private:
39  int nprotected ;
40 
41  // not defined on purpose
42  Shelter(const Shelter&) ;
43  Shelter& operator=(const Shelter&) ;
44  } ;
45 }
46 
47 #endif
Shelter & operator=(const Shelter &)
int nprotected
Definition: Shelter.h:39
Rcpp API.
Definition: algo.h:28
SEXP operator()(SEXP x)
Definition: Shelter.h:28