Rcpp Version 1.0.14
Loading...
Searching...
No Matches
S4.h
Go to the documentation of this file.
1// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2//
3// S4.h: Rcpp R/C++ interface class library -- S4 objects
4//
5// Copyright (C) 2010 - 2013 Dirk Eddelbuettel and Romain Francois
6//
7// This file is part of Rcpp.
8//
9// Rcpp is free software: you can redistribute it and/or modify it
10// under the terms of the GNU General Public License as published by
11// the Free Software Foundation, either version 2 of the License, or
12// (at your option) any later version.
13//
14// Rcpp is distributed in the hope that it will be useful, but
15// WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17// GNU General Public License for more details.
18//
19// You should have received a copy of the GNU General Public License
20// along with Rcpp. If not, see <http://www.gnu.org/licenses/>.
21
22#ifndef Rcpp_S4_h
23#define Rcpp_S4_h
24
25namespace Rcpp{
26
31 public:
33
34 S4_Impl(){} ;
35
41 S4_Impl(SEXP x) {
42 if( ! ::Rf_isS4(x) ) throw not_s4() ;
43 Storage::set__(x) ;
44 }
45
46 S4_Impl& operator=( SEXP other ){
47 Storage::set__( other ) ;
48 return *this ;
49 }
50
57 S4_Impl( const std::string& klass ){
59 if (!Rf_inherits(x, klass.c_str()))
60 throw S4_creation_error( klass ) ;
61 Storage::set__(x) ;
62 }
63
67 bool is( const std::string& clazz) const ;
68
72 void update(SEXP x){
73 if( ! ::Rf_isS4(x) ) throw not_s4() ;
74 }
75 } ;
76
78
79} // namespace Rcpp
80
81#endif
#define RCPP_GENERATE_CTOR_ASSIGN(__CLASS__)
Definition interface.h:21
#define RCPP_API_CLASS(__CLASS__)
Definition interface.h:49
Rcpp API.
Definition algo.h:28
void update(SEXP)
bool is(SEXP x)
Definition is.h:53
T as(SEXP x)
Definition as.h:151
S4_Impl< PreserveStorage > S4
Definition S4.h:77