Skip to content

Commit dbed32f

Browse files
committed
dotted pair proxy meat
1 parent 7bd563a commit dbed32f

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

inst/include/Rcpp/api/meat/proxy.h

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ namespace Rcpp {
125125
}
126126

127127
// Environment Binding
128-
129128
template <typename CLASS>
130129
template <typename T>
131130
typename BindingPolicy<CLASS>::Binding&
@@ -145,6 +144,28 @@ namespace Rcpp {
145144
BindingPolicy<CLASS>::const_Binding::operator T() const {
146145
return as<T>(get());
147146
}
147+
148+
// Dotted pair proxies
149+
template <typename CLASS>
150+
template <typename T>
151+
typename DottedPairProxyPolicy<CLASS>::DottedPairProxy&
152+
DottedPairProxyPolicy<CLASS>::DottedPairProxy::operator=(const T& rhs) {
153+
set(wrap(rhs));
154+
return *this;
155+
}
156+
157+
template <typename CLASS>
158+
template <typename T>
159+
DottedPairProxyPolicy<CLASS>::DottedPairProxy::operator T() const {
160+
return as<T>(get());
161+
}
162+
163+
template <typename CLASS>
164+
template <typename T>
165+
DottedPairProxyPolicy<CLASS>::const_DottedPairProxy::operator T() const {
166+
return as<T>(get());
167+
}
168+
148169
}
149170

150171
#endif

inst/include/Rcpp/proxy/DottedPairProxy.h

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,20 @@ class DottedPairProxyPolicy {
3333
node = x ;
3434
}
3535

36-
DottedPairProxy& operator=(const DottedPairProxy& rhs){
36+
DottedPairProxy& operator=(const DottedPairProxy& rhs) {
3737
return set(rhs.get());
3838
}
39-
DottedPairProxy& operator=(SEXP rhs){
39+
DottedPairProxy& operator=(SEXP rhs) {
4040
return set(rhs) ;
4141
}
4242

4343
template <typename T>
44-
DottedPairProxy& operator=(const T& rhs) {
45-
return set( wrap(rhs) );
46-
}
44+
DottedPairProxy& operator=(const T& rhs);
4745

4846
template <typename T>
49-
DottedPairProxy& operator=(const traits::named_object<T>& rhs) {
50-
return set( wrap(rhs.object), rhs.name ) ;
51-
}
47+
DottedPairProxy& operator=(const traits::named_object<T>& rhs);
5248

53-
template <typename T> operator T() const {
54-
return as<T>( get() );
55-
}
49+
template <typename T> operator T() const;
5650

5751
inline SEXP get() const {
5852
return CAR(node);
@@ -84,9 +78,7 @@ class DottedPairProxyPolicy {
8478
node = x ;
8579
}
8680

87-
template <typename T> operator T() const {
88-
return as<T>( get() );
89-
}
81+
template <typename T> operator T() const;
9082

9183
inline SEXP get() const {
9284
return CAR(node);

0 commit comments

Comments
 (0)