[Rcpp-commits] r310 - in pkg: inst inst/unitTests src/Rcpp
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Thu Jan 7 22:28:09 CET 2010
Author: romain
Date: 2010-01-07 22:28:05 +0100 (Thu, 07 Jan 2010)
New Revision: 310
Modified:
pkg/inst/ChangeLog
pkg/inst/unitTests/runit.Pairlist.R
pkg/src/Rcpp/Pairlist.h
Log:
Pairlist gains push_front method
Modified: pkg/inst/ChangeLog
===================================================================
--- pkg/inst/ChangeLog 2010-01-07 21:04:28 UTC (rev 309)
+++ pkg/inst/ChangeLog 2010-01-07 21:28:05 UTC (rev 310)
@@ -1,5 +1,7 @@
2010-01-07 Romain Francois <francoisromain at free.fr>
+ * src/Rcpp/Pairlist.h: gains a push_front method
+
* src/Rcpp/wrap.h : now the result type of the various wrap
functions depends on the parameters. wrap( bool ) makes a
LogicalVector, etc ... wrap(SEXP) dispatches to the
Modified: pkg/inst/unitTests/runit.Pairlist.R
===================================================================
--- pkg/inst/unitTests/runit.Pairlist.R 2010-01-07 21:04:28 UTC (rev 309)
+++ pkg/inst/unitTests/runit.Pairlist.R 2010-01-07 21:28:05 UTC (rev 310)
@@ -52,3 +52,17 @@
}
}
+test.Pairlist.push.front <- function(){
+ funx <- cfunction(signature(), '
+ Pairlist p ;
+ p.push_front( 1 ) ;
+ p.push_front( 10.0 ) ;
+ p.push_front( "foo" ) ;
+ p.push_front( Named( "foobar", 10) ) ;
+ return p ;
+ ', Rcpp=TRUE, verbose=FALSE, includes = "using namespace Rcpp;" )
+ checkEquals( funx(),
+ pairlist( foobar = 10, "foo", 10.0, 1L),
+ msg = "Pairlist::push_front" )
+}
+
Modified: pkg/src/Rcpp/Pairlist.h
===================================================================
--- pkg/src/Rcpp/Pairlist.h 2010-01-07 21:04:28 UTC (rev 309)
+++ pkg/src/Rcpp/Pairlist.h 2010-01-07 21:28:05 UTC (rev 310)
@@ -28,9 +28,9 @@
namespace Rcpp{
/**
- * C++ wrapper around calls (LANGSXP SEXP)
+ * C++ wrapper around pair lists (LISTSXP SEXP)
*
- * This represents calls that can be evaluated
+ * This represents dotted pair lists
*/
class Pairlist : public RObject{
public:
@@ -64,6 +64,19 @@
#endif
~Pairlist() ;
+
+ /**
+ * wraps an object and add it in front of the pairlist
+ *
+ * @param object anything that can be wrapped by one
+ * of the wrap functions, or an object of class Named
+ */
+ template <typename T>
+ void push_front( const T& object){
+ setSEXP( grow(object, m_sexp) ) ;
+ }
+
+
};
#ifdef HAS_VARIADIC_TEMPLATES
@@ -80,7 +93,6 @@
}
#endif
-
} // namespace Rcpp
#endif
More information about the Rcpp-commits
mailing list