[Rcpp-devel] anyone familiar with the do_dotcode
Romain Francois
romain at r-enthusiasts.com
Wed Mar 24 17:20:50 CET 2010
I'm in the land of second guessing here, but I think the "slicing"
occurs because of this typedef:
#ifdef __cplusplus
typedef SEXP (*VarFun)(...);
#else
typedef DL_FUNC VarFun;
#endif
so foo is seen as a VarFun. I don't think what I want is possible...
Le 24/03/10 15:22, Romain Francois a écrit :
>
> Hello,
>
> I'd like to be able to simply define functions like this :
>
> SEXP foo( IntegerVector x ){
> // .. do something with x
> }
>
> instead of this:
>
> SEXP foo( SEXP x){
> IntegerVector xx(x) ;
> }
>
> and there is something in do_dotcode (I don't know what) that prevents
> this. With this file :
>
> =====================
> #include<Rcpp.h>
>
> using namespace Rcpp;
>
> extern "C" {
> SEXP foo ( IntegerVector x) ;
> }
>
> SEXP foo( IntegerVector x ) {
> Rprintf( "hello<%p> \n", x.asSexp() ) ;
> return x ;
> }
> =====================
>
> compiled into a so with :
>
> romain at naxos /tmp $ export PKG_LIBS=`Rscript -e "Rcpp:::LdFlags()"`
> romain at naxos /tmp $ export PKG_CXXFLAGS=`Rscript -e "Rcpp:::CxxFlags()"`
>
> and then :
>
>
> require( Rcpp)
> dyn.load( "foo.so" )
> .Call( "foo", 1:10 )
>
>
> This prints :
>
> romain at naxos /tmp $ Rscript test.R
> Le chargement a nécessité le package : Rcpp
> hello<0x100843178>
> NULL
>
>
> but, If I use this file instead:
>
> =====================
> #include<Rcpp.h>
>
> using namespace Rcpp;
>
> SEXP foo_( IntegerVector x ) ;
>
> extern "C" {
> SEXP foo ( SEXP x ){ return foo_(x) ; }
> }
>
> SEXP foo_( IntegerVector x ) {
> Rprintf( "hello<%p> \n", x.asSexp() ) ;
> return x ;
> }
> =====================
>
> it works:
>
> romain at naxos /tmp $ Rscript test.R
> Le chargement a nécessité le package : Rcpp
> hello<0x102cc0cd8>
> [1] 1 2 3 4 5 6 7 8 9 10
>
>
> In the first case, we are still able to determine the correct function,
> otherwise it would not print anything but the object is not correctly
> passed through.
>
> Any ideas ?
>
> Romain
>
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/OIXN : raster images and RImageJ
|- http://tr.im/OcQe : Rcpp 0.7.7
`- http://tr.im/O1wO : highlight 0.1-5
More information about the Rcpp-devel
mailing list