[Rcpp-commits] r4300 - in pkg/Rcpp: . inst inst/include/Rcpp inst/include/Rcpp/api/meat inst/include/Rcpp/generated inst/include/Rcpp/traits src

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Tue Apr 2 16:24:48 CEST 2013


Author: romain
Date: 2013-04-02 16:24:48 +0200 (Tue, 02 Apr 2013)
New Revision: 4300

Modified:
   pkg/Rcpp/ChangeLog
   pkg/Rcpp/inst/NEWS.Rd
   pkg/Rcpp/inst/include/Rcpp/DottedPair.h
   pkg/Rcpp/inst/include/Rcpp/Named.h
   pkg/Rcpp/inst/include/Rcpp/api/meat/DottedPair.h
   pkg/Rcpp/inst/include/Rcpp/generated/DataFrame_generated.h
   pkg/Rcpp/inst/include/Rcpp/grow.h
   pkg/Rcpp/inst/include/Rcpp/traits/named_object.h
   pkg/Rcpp/src/api.cpp
Log:
fix DataFrame::create

Modified: pkg/Rcpp/ChangeLog
===================================================================
--- pkg/Rcpp/ChangeLog	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/ChangeLog	2013-04-02 14:24:48 UTC (rev 4300)
@@ -1,3 +1,10 @@
+2013-04-02 Romain Francois <romain at r-enthusiasts.com>
+
+        * include/Rcpp/generated/DataFrame_generated.h : DateFrame::create
+        uses List::create and then feeds to the DataFrame constructor, which 
+        seems to work better than the previous approach of calling back to the 
+        data.frame function in R
+        
 2013-03-31  Dirk Eddelbuettel  <edd at debian.org>
 
 	* debian/control (Build-Depends): Modified for Debian-only rebuilds
@@ -10,15 +17,6 @@
 	complex types with Poor Man's Versions (TM) of Rf_EncodeReal and
 	Rf_EncodeComplex which the Powers That Be disallow from being used
 
-2013-03-29 Romain Francois <romain at r-enthusiasts.com>
-
-        * include/Rcpp/traits/named_object.h: only keep named_object<SEXP>
-        * include/Rcpp/Named.h: Named generates named_object<SEXP>
-        * include/Rcpp/api/meat/DottedPair.h: adapt to changes above
-        * include/Rcpp/DottedPair.h: idem
-        * src/api.cpp: define DottedPair::Proxy::operator=(
-	named_object<SEXP> )
-
 2013-03-27 Romain Francois <romain at r-enthusiasts.com>
 
         * include/Rcpp/vector/MatrixRow.h : removed unintended printed

Modified: pkg/Rcpp/inst/NEWS.Rd
===================================================================
--- pkg/Rcpp/inst/NEWS.Rd	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/NEWS.Rd	2013-04-02 14:24:48 UTC (rev 4300)
@@ -2,6 +2,19 @@
 \title{News for Package 'Rcpp'}
 \newcommand{\cpkg}{\href{http://CRAN.R-project.org/package=#1}{\pkg{#1}}}
 
+  \section{Changes in Rcpp version 0.10.4 (future)}{
+  \itemize{
+    \item Changes in R code:
+    \item Changes in Rcpp attributes: 
+    \item Changes in Rcpp API:
+    \itemize{
+        \item The \code{DataFrame::create} set of functions has been reworked
+        to just use \code{List::create} and feed to the \code{DataFrame}
+        constructor
+    }
+  }
+}
+
 \section{Changes in Rcpp version 0.10.3 (2013-03-23)}{
   \itemize{
     \item Changes in R code:

Modified: pkg/Rcpp/inst/include/Rcpp/DottedPair.h
===================================================================
--- pkg/Rcpp/inst/include/Rcpp/DottedPair.h	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/include/Rcpp/DottedPair.h	2013-04-02 14:24:48 UTC (rev 4300)
@@ -110,7 +110,8 @@
 		template <typename T>
 		Proxy& operator=(const T& rhs) ;
 		
-		Proxy& operator=(const traits::named_object<SEXP>& rhs) ;
+		template <typename T>
+		Proxy& operator=(const traits::named_object<T>& rhs) ;
 		
 		template <typename T> operator T() const ;
 		

Modified: pkg/Rcpp/inst/include/Rcpp/Named.h
===================================================================
--- pkg/Rcpp/inst/include/Rcpp/Named.h	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/include/Rcpp/Named.h	2013-04-02 14:24:48 UTC (rev 4300)
@@ -30,8 +30,8 @@
 	Argument( const std::string& name_) : name(name_){} 
 	
 	template<typename T>
-	inline traits::named_object<SEXP> operator=( const T& t){
-		return traits::named_object<SEXP>( name, wrap(t) ) ;	
+	inline traits::named_object<T> operator=( const T& t){
+		return traits::named_object<T>( name, t ) ;	
 	}
 	
 	std::string name ;	
@@ -41,8 +41,8 @@
 	return Argument( name );	
 }
 template <typename T>
-inline traits::named_object<SEXP> Named( const std::string& name, const T& o){
-	return traits::named_object<SEXP>( name, wrap(o) );	
+inline traits::named_object<T> Named( const std::string& name, const T& o){
+	return traits::named_object<T>( name, o );	
 }
 
 namespace internal{

Modified: pkg/Rcpp/inst/include/Rcpp/api/meat/DottedPair.h
===================================================================
--- pkg/Rcpp/inst/include/Rcpp/api/meat/DottedPair.h	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/include/Rcpp/api/meat/DottedPair.h	2013-04-02 14:24:48 UTC (rev 4300)
@@ -38,6 +38,11 @@
 	}
 
 	template <typename T>
+	DottedPair::Proxy& DottedPair::Proxy::operator=(const traits::named_object<T>& rhs){
+    	return set( rhs.object, rhs.name.c_str() ) ;
+    }
+	
+	template <typename T>
 	void DottedPair::push_back( const T& object){
 		if( isNULL() ){
 			setSEXP( grow( object, m_sexp ) ) ;

Modified: pkg/Rcpp/inst/include/Rcpp/generated/DataFrame_generated.h
===================================================================
--- pkg/Rcpp/inst/include/Rcpp/generated/DataFrame_generated.h	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/include/Rcpp/generated/DataFrame_generated.h	2013-04-02 14:24:48 UTC (rev 4300)
@@ -2,7 +2,7 @@
 //
 // DataFrame_generated.h: Rcpp R/C++ interface class library -- data frames
 //
-// Copyright (C) 2010 - 2011  Dirk Eddelbuettel and Romain Francois
+// Copyright (C) 2010 - 2013  Dirk Eddelbuettel and Romain Francois
 //
 // This file is part of Rcpp.
 //
@@ -26,201 +26,121 @@
 
 template <typename T1>
 static DataFrame create( const T1& t1 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1 ) ) ;
 } 
 
 
 template <typename T1, typename T2>
 static DataFrame create( const T1& t1, const T2& t2 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 ) ) ;
 } 
 
 
 template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14, typename T15, typename T16, typename T17, typename T18, typename T19, typename T20>
 static DataFrame create( const T1& t1, const T2& t2, const T3& t3, const T4& t4, const T5& t5, const T6& t6, const T7& t7, const T8& t8, const T9& t9, const T10& t10, const T11& t11, const T12& t12, const T13& t13, const T14& t14, const T15& t15, const T16& t16, const T17& t17, const T18& t18, const T19& t19, const T20& t20 ) {
-    try{
-        return DataFrame(internal::try_catch(::Rcpp_lcons( ::Rf_install( "data.frame"), pairlist( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 ) )));
-    } catch( eval_error& __ex__){
-        throw not_compatible("error calling the data.frame function") ;
-    }
+    return DataFrame( List::create( t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 ) ) ;
 } 
 
 #endif

Modified: pkg/Rcpp/inst/include/Rcpp/grow.h
===================================================================
--- pkg/Rcpp/inst/include/Rcpp/grow.h	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/include/Rcpp/grow.h	2013-04-02 14:24:48 UTC (rev 4300)
@@ -41,7 +41,7 @@
     	inline SEXP grow__dispatch( ::Rcpp::traits::true_type, const T& head, SEXP tail ){
     	    SEXP y = PROTECT( wrap( head.object) ) ;
     	    SEXP x = PROTECT( Rf_cons( y , tail) ) ;
-    	    SEXP headNameSym = ::Rf_install( head.name.c_str() ); // cannot be gc()ed once in symbol table
+    	    SEXP headNameSym = ::Rf_install( head.name.c_str() );
     	    SET_TAG( x, headNameSym ); 
     	    UNPROTECT(2); 
     	    return x; 	

Modified: pkg/Rcpp/inst/include/Rcpp/traits/named_object.h
===================================================================
--- pkg/Rcpp/inst/include/Rcpp/traits/named_object.h	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/inst/include/Rcpp/traits/named_object.h	2013-04-02 14:24:48 UTC (rev 4300)
@@ -31,15 +31,13 @@
 template <typename T> struct needs_protection : false_type{} ;
 template <> struct needs_protection<SEXP> : true_type{} ;	
 
-template <typename T> class named_object ; 
-// {
-// 	public:
-// 		named_object( const std::string& name_, const T& o_) : 
-// 			name(name_), object(o_){}
-// 		const std::string& name ;
-// 		const T& object ;
-// 		
-// } ;
+template <typename T> class named_object {
+	public:
+		named_object( const std::string& name_, const T& o_) : 
+			name(name_), object(o_){}
+		const std::string& name ;
+		const T& object ;
+} ;
 template <> class named_object<SEXP> {
 public:
 	named_object( const std::string& name_, const SEXP& o_):

Modified: pkg/Rcpp/src/api.cpp
===================================================================
--- pkg/Rcpp/src/api.cpp	2013-04-02 14:19:55 UTC (rev 4299)
+++ pkg/Rcpp/src/api.cpp	2013-04-02 14:24:48 UTC (rev 4300)
@@ -454,10 +454,6 @@
         node = x ;
     }
      
-    DottedPair::Proxy& DottedPair::Proxy::operator=(const traits::named_object<SEXP>& rhs){
-    	return set( rhs.object, rhs.name.c_str() ) ;
-    }
-	
     DottedPair::Proxy& DottedPair::Proxy::operator=(const Proxy& rhs){
         return set(rhs) ;
     }



More information about the Rcpp-commits mailing list