[Rcpp-devel] Raise a condition

Tim Keitt tkeitt at utexas.edu
Thu Jun 19 00:15:01 CEST 2014


On Wed, Jun 18, 2014 at 5:07 PM, Romain Francois <romain at r-enthusiasts.com>
wrote:

> Le 18 juin 2014 à 23:54, Tim Keitt <tkeitt at utexas.edu> a écrit :
>
>
> I'd like to raise a condition other than error or warning. Is that
> possible using the Rcpp api? I assume this can be done via R internals, but
> I'd prefer not to call error() directly (or is that the recommendation?).
>
> THK
>
>
> Definitely not. Rf_error should really only be called from C code. If you
> call it from C++, there is a great chance you'll lose determinism as
> destructors for your c++ objects are very likely not to be called. Most of
> the time, it will just mean you'll never release some objects to the
> garbage collector, but it could also get you leaks or other nice stuff
> depending on what your destructors were supposed to do and did not get a
> chance to do.
>

That was my understanding. Just wanted to be sure it was still the case.


>
> I'm not sure Rcpp has a way to raise an R condition apart from calling
> stop, which usually is good enough. Otherwise, you can borrow from Rcpp11
> and adapt some code from
> https://github.com/Rcpp11/Rcpp11/blob/450aade7338c16c34618ad0916003e8ca4fb58a6/inst/include/Rcpp/Condition.h
>

Ah. I see. Eval "stop" in the global env with the condition as the
argument. Clever.

THK


>
> Romain
>



-- 
http://www.keittlab.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20140618/c56b3b21/attachment.html>


More information about the Rcpp-devel mailing list