[Rcpp-devel] Local .h files and Rcpp attributes

Dirk Eddelbuettel edd at debian.org
Sat Oct 19 14:49:29 CEST 2013


On 18 October 2013 at 22:13, Mark Fredrickson wrote:
| Short version: Is it possible to instruct the code generator in
| `compileAttributes` to source local header files when generating
| RcppExports.cpp?

I'll let JJ take the Attributes aspect but maybe it is something else...
 
| Long version: I'm trying to crib from the Dirk's examples in his recent UCB

[ Nit: U of C, not UCB. If UCB wants to invite me ... ;-) ]

| talk examples about function pointers (http://dirk.eddelbuettel.com/papers/
| rcpp_booth_uofc_oct2013-part2.pdf). In it, he uses a `typedef` to define the
| type of his function call. This is all great if using `sourceCpp` to slurp in
| the file directly, but I'm getting errors when compiling a package. I'd like to
| use attributes to export my functions at both the R level and as the target of
| function pointers, but this may be incompatible with attributes, at least at
| some level.

The same trick was already used in RcppDE (which was a proof of concept about
converting DEoption from 700 lines of plain C to 400 lines of C++ / Rcpp)
where I have

	typedef double (*funcPtr)(SEXP);

and the rest works like a 'plain old package'.
 
| My (perhaps naive) attempts are giving errors about my `funcPtr` type not being
| defined. I've tried moving this definition to a header file, but even with `//
| [[Rcpp::depends(myheader)]]` or `\\[Rcpp::depends(myheader.h)]]`, the generated
| RcppExports.cpp file does not include `myheader.h`.

What exactly is the error?  Could it be as simple as missing

     -I.

in src/Makevars ?  That is not added by default so try adding the line

    PKG_CPPFLAGS = -I.

(not indented, of course) to src/Makevars (and src/Makevars.win)
 
| My (non-working) code can be found at:
| 
| https://github.com/markmfredrickson/RItools/blob/ri-rcpp/src/teststatistics.cpp

Thanks for the pointer to sources.

Hope this helps,  Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list