Rcpp Version 1.0.14
Loading...
Searching...
No Matches
const_generic_proxy.h
Go to the documentation of this file.
1// const_generic_proxy.h: Rcpp R/C++ interface class library --
2//
3// Copyright (C) 2013 - 2018 Romain Francois
4//
5// This file is part of Rcpp.
6//
7// Rcpp is free software: you can redistribute it and/or modify it
8// under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 2 of the License, or
10// (at your option) any later version.
11//
12// Rcpp is distributed in the hope that it will be useful, but
13// WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with Rcpp. If not, see <http://www.gnu.org/licenses/>.
19
20#ifndef Rcpp__vector__const_generic_proxy_h
21#define Rcpp__vector__const_generic_proxy_h
22
23namespace Rcpp{
24namespace internal{
25
26 template <int RTYPE, template <class> class StoragePolicy>
27 class const_generic_proxy : public GenericProxy< const_generic_proxy<RTYPE, StoragePolicy> > {
28 public:
29 typedef typename ::Rcpp::Vector<RTYPE, StoragePolicy> VECTOR ;
30
32
35
36 const_generic_proxy( const VECTOR& v, R_xlen_t i ) : parent(&v), index(i){} ;
37
38 operator SEXP() const {
39 return get() ;
40 }
41
42 template <typename U> operator U() const {
43 return ::Rcpp::as<U>(get()) ;
44 }
45
46 // helping the compiler (not sure why it can't help itself)
47 operator bool() const { return ::Rcpp::as<bool>(get()) ; }
48 operator int() const { return ::Rcpp::as<int>(get()) ; }
49
50 inline void move(R_xlen_t n) { index += n ; }
51
52 const VECTOR* parent;
54
55 private:
56
57 inline SEXP get() const {
58 return VECTOR_ELT(*parent, index );
59 }
60
61 } ;
62
63}
64}
65
66#endif
const_generic_proxy(const const_generic_proxy &other)
::Rcpp::Vector< RTYPE, StoragePolicy > VECTOR
const_generic_proxy(const VECTOR &v, R_xlen_t i)
T as(SEXP x, ::Rcpp::traits::r_type_primitive_tag)
Definition as.h:43
Rcpp API.
Definition algo.h:28