El 30 de marzo de 2010 14:39, Mikael <mikael.trash@gmail.com> escribió:
You do this, by declaring the passed u8vector as a scheme-object in the c-lambda definition.

The memory pointer to the u8vector's contents in the C code is resolved by

     void *u8vectorptr = ___CAST(void*,&___FETCH_U8(___BODY(theu8vectorschemeobjectvariable),___INT(0)));

Remember that the pointer is only to be kept until the next return to Scheme.
 
Mikael


Thanks!! :)

May I ask where did you get this from? Gambit's source code? I can't find docs about this...

Álvaro
 

2010/3/30 Álvaro Castro-Castilla <alvaro.castro.castilla@gmail.com>
Hi!

Is there a way to pass a u8-vector to a FFI interface somehow?
The way I expect this to work is through a (pointer unsigned-char), but it obviously doesn't work, claiming a proper C pointer. I would like to be able to build this arrays from Scheme code. Is there a way?

Currently I have to call a FFI function to set char by char, calling the c-lambda function too many times.

One thing that could work is something that converts u8-vectors to unsigned char* arrays, does that exist in Gambit?


Thanks,

Álvaro

_______________________________________________
Gambit-list mailing list
Gambit-list@iro.umontreal.ca
https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list