[Rcpp-devel] Raise a condition
tkeitt at utexas.edu
Thu Jun 19 00:30:41 CEST 2014
On Wed, Jun 18, 2014 at 5:22 PM, Romain Francois <romain at r-enthusiasts.com>
> Le 19 juin 2014 à 00:15, Tim Keitt <tkeitt at utexas.edu> a écrit :
> 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?).
>> 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
> Ah. I see. Eval "stop" in the global env with the condition as the
> argument. Clever.
> It is more of a hack due to lack of proper api from R.
> If you do this, make sure you don't have any c++ object in scope.
> Essentially that means you would evaluate `stop( condition )` in a top
> level catch block.
Rcpp objects are I assume ok however.
I will try "signalCondition" and see what happens.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Rcpp-devel