Rcpp Version 0.10.3
Main Page
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerator
Friends
Macros
named_object.h
Go to the documentation of this file.
1
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
2
/* :tabSize=4:indentSize=4:noTabs=false:folding=explicit:collapseFolds=1: */
3
//
4
// has_iterator.h: Rcpp R/C++ interface class library -- identify if a class has a nested iterator typedef
5
//
6
// Copyright (C) 2010 - 2012 Dirk Eddelbuettel and Romain Francois
7
//
8
// This file is part of Rcpp.
9
//
10
// Rcpp is free software: you can redistribute it and/or modify it
11
// under the terms of the GNU General Public License as published by
12
// the Free Software Foundation, either version 2 of the License, or
13
// (at your option) any later version.
14
//
15
// Rcpp is distributed in the hope that it will be useful, but
16
// WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
// GNU General Public License for more details.
19
//
20
// You should have received a copy of the GNU General Public License
21
// along with Rcpp. If not, see <http://www.gnu.org/licenses/>.
22
23
#ifndef Rcpp__traits__named_object__h
24
#define Rcpp__traits__named_object__h
25
26
namespace
Rcpp{
27
class
Argument ;
28
29
namespace
traits{
30
31
template
<
typename
T>
struct
needs_protection
:
false_type
{} ;
32
template
<>
struct
needs_protection
<SEXP> :
true_type
{} ;
33
34
template
<
typename
T>
class
named_object
{
35
public
:
36
named_object
(
const
std::string& name_,
const
T& o_) :
37
name
(name_),
object
(o_){}
38
const
std::string&
name
;
39
const
T&
object
;
40
41
} ;
42
template
<>
class
named_object
<SEXP> {
43
public
:
44
named_object
(
const
std::string& name_,
const
SEXP& o_):
45
name
(name_),
object
(o_){
46
R_PreserveObject(
object
) ;
47
}
48
~named_object
(){
49
R_ReleaseObject(
object
) ;
50
}
51
const
std::string&
name
;
52
SEXP
object
;
53
} ;
54
55
56
template
<
typename
T>
struct
is_named
:
public
false_type
{} ;
57
template
<
typename
T>
struct
is_named
<
named_object
<T> > :
public
true_type
{} ;
58
template
<>
struct
is_named
< Rcpp::
Argument
> :
public
true_type
{} ;
59
60
}
// namespace traits
61
}
// namespace Rcpp
62
63
#endif
inst
include
Rcpp
traits
named_object.h
Generated on Sat Mar 23 2013 11:26:08 for Rcpp Version 0.10.3 by
1.8.1.2