[Rcpp-commits] r261 - in pkg: inst/unitTests src

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sun Jan 3 13:24:50 CET 2010


Author: romain
Date: 2010-01-03 13:24:50 +0100 (Sun, 03 Jan 2010)
New Revision: 261

Modified:
   pkg/inst/unitTests/runit.Symbol.R
   pkg/src/Symbol.cpp
Log:
fixed Symbol( SYMSXP ) constructor

Modified: pkg/inst/unitTests/runit.Symbol.R
===================================================================
--- pkg/inst/unitTests/runit.Symbol.R	2010-01-03 11:30:08 UTC (rev 260)
+++ pkg/inst/unitTests/runit.Symbol.R	2010-01-03 12:24:50 UTC (rev 261)
@@ -39,7 +39,11 @@
 	UNPROTECT(1) ; /* res */
 	return res ;
 	', Rcpp=TRUE, verbose=FALSE, includes = "using namespace Rcpp;" )
-	checkTrue( all( funx() ), msg = "Symbol creation" )
+	res <- funx()
+	checkTrue( res[1L], msg = "Symbol creation - SYMSXP " )
+	checkTrue( res[2L], msg = "Symbol creation - CHARSXP " )
+	checkTrue( res[3L], msg = "Symbol creation - STRSXP " )
+	checkTrue( res[4L], msg = "Symbol creation - std::string " )
 }
 
 test.Symbol.notcompatible <- function(){

Modified: pkg/src/Symbol.cpp
===================================================================
--- pkg/src/Symbol.cpp	2010-01-03 11:30:08 UTC (rev 260)
+++ pkg/src/Symbol.cpp	2010-01-03 12:24:50 UTC (rev 261)
@@ -29,11 +29,12 @@
 		return "not compatible with Symbol, excepting SYMSXP, CHARSXP or STRSXP" ;
 	}
 	
-	Symbol::Symbol( SEXP x = R_NilValue ) throw(not_compatible) : RObject::RObject() {
+	Symbol::Symbol( SEXP x ) throw(not_compatible) : RObject::RObject() {
 		if( x != R_NilValue ){
 			int type = TYPEOF(x) ;
 			switch( type ){
 			case SYMSXP:
+				setSEXP( x ) ;
 				break; /* nothing to do */
 			case CHARSXP:
 				setSEXP( Rf_install(CHAR(x)) ) ;



More information about the Rcpp-commits mailing list