On Nov 28, 2009, at 7:50 PM, Guillaume Yziquel wrote:

> Whit Armstrong a écrit :
>> I've had success w/ using a reference counting paradigm in which the outside
>> memory manager calls UNPROTECT_PTR(R_object_); in its destructor.
>> So, in my case (using c++ ) if objects are allocated on the heap, which
>> allocate R objects as their backend storage, I don't have to worry about out
>> of order UNPROTECT calls b/c UNPROTECT_PTR will just put the objects that
>> c++ destroys on the gc list.
>> If you are using c as the glue for all your ocaml bindings, they you may
>> want to have a look at this:
>> http://github.com/armstrtw/rabstraction
>> Or the in progress re-write here: http://github.com/armstrtw/RObjects
>> -Whit
> 
> Thanks a lot for these pointers.
> 
> UNPROTECT_PTR seems quite interesting. As I understand it, it avoids caring 
> about protecting and unprotecting in the order the stacks would expect. This 
> is quite interesting, since I'd like to keep OCaml's GC to do housekeeping, 
> and not rely on referencing counting.
> 

FWIW what I think you should be really looking at is 
R_PreserveObject/R_ReleaseObject. I would suggest looking at the many other R 
embeddings in other languages that already exist since I don't think you 
approach is very viable (but I think I expressed that already before).

Cheers,
Simon


> I'm using C as the glue, but I want it to be as thin as possible. I will 
> probably not do reference counting in C, for instance. Nevertheless, there's 
> obviously good ideas in rabstraction/RObjects that I'll adapt.
> 
> Thanks a lot.
> 
> -- 
>     Guillaume Yziquel
> http://yziquel.homelinux.org/
> 
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to