[Rcpp-devel] Rostream.h header

Dirk Eddelbuettel edd at debian.org
Sun May 13 16:18:31 CEST 2012


Hi Alexey,

On 12 May 2012 at 19:03, Alexey Stukalov wrote:
| Dear Rcpp developers,
| 
| ATM to define the Rcpp::Rostream I have to fix the iostream/Rostream.h header
| directly and add
| 
| #include "Rstreambuf.h"
| 
| before its declarations.
| 
| Including "Rstreambuf.h" in my source file before "Rstreambuf.h" doesn't help,
| it seems the headers are processed in a way that Rostream declaration comes
| before Rstreambuf
| (due to RcppCommon.h that is included by Rstreambuf.h and not by Rostream.h).
| 
| Is it possible to fix Rostream.h in the mainline or there's another proper way
| to include it?

Can you restate your problem a little differently?  I don't quite understand
what you are trying to do, and what is not working.

What do you mean by "define the Rcpp::Rostream" ?  You would not have to
include that explicitly as our header structure already does it.  See the
example blog post from a few months ago:

   http://dirk.eddelbuettel.com/blog/2012/02/18#rcout_armadillo_example

That works the same way with Rcpp alone:

R> library(inline)
R> 
R> fun <- cxxfunction(signature(), plugin="Rcpp", body='
+   Rcpp::Rcout << "Hello, world" << std::endl;
+ ')
R> 
R> cat("Before Rcpp-created function\n")
Before Rcpp-created function
R> fun()
Hello, world
NULL
R> cat("After Rcpp-created function\n")
After Rcpp-created function
R> 
R> 

That doesn't work so impressively with inline etc as we come back to the
prompt anyway, but by using Rcpp::Rcout all your stdout access from C++ is
passed through the output stream controlled by R thanks to the work Jelmer did.

Or did I misunderstand and you wanted to do something different ?

Dirk

-- 
R/Finance 2012 Conference on May 11 and 12, 2012 at UIC in Chicago, IL
See agenda, registration details and more at http://www.RinFinance.com


More information about the Rcpp-devel mailing list