Hello Evan and Thomas, Thank you for your suggestions, I decided to go for `CHICKEN_new_gc_root` and it works like I hoped.
I was the lookup-table before but found it to be too unwieldy in my project. Thanks again, Pluijzer On Mon, 16 Dec 2013 13:28:27 +1300 Evan Hanson <[email protected]> wrote: > Hi Pluijzer, > > On 16/12/13 12:59, pluijzer wrote: > > I am using a C-library that lets you assign user data to objects via a > > void pointer. I would like to assign a scheme object to this pointer, > > but as I understand I cannot use 'object->pointer' for this, as the > > garbage collector might move the object. > > There are a couple of ways to do this. > > One is to manually move the object into static memory, via > `object-evict` (http://api.call-cc.org/doc/lolevel#def:object-evict). > This is nice and easy, but might not work as expected for all data > types. > > Another is to create a new GC root for the object, via > `CHICKEN_new_gc_root` and its associated procedures > (http://api.call-cc.org/doc/foreign/embedding#sec:CHICKEN_new_gc_root). > > You might also sidestep the issue entirely by keeping your objects in a > Scheme-side lookup table and only storing immediate values in the > pointer that you can then use to retrieve the objects as needed. > > Other folks may chime in with more ideas, but I hope these help some. > > Cheers, > > Evan > > _______________________________________________ > Chicken-users mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/chicken-users -- pluijzer <[email protected]> _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
