[gambit-list] Returning a byte array from C

Marc Feeley feeley at iro.umontreal.ca
Thu Sep 26 10:29:43 EDT 2013


On 2013-09-26, at 12:21 AM, Vijay Mathew <vijay.the.lisper at gmail.com> wrote:

> Thanks again for all the great feedback!
> 
> I think the call to ____FIX() is not required if Scheme code access the C function through a declaration like this:
> 
> (define read-bytes (c-lambda (int unsigned-int scheme-object) int "read_bytes"))
> 
> Is that correct?

That is correct.  However, using ___FIX() is faster for converting a C integer to a Scheme fixnum.  And ___INT() is faster for converting a Scheme fixnum to a C integer. So better performance is obtained with:

(define read-bytes
  (c-lambda (scheme-object scheme-object scheme-object)
            scheme-object
   "___result = ___FIX(read (___INT(___arg1),___BODY(___arg3),___INT(___arg2));"))

Marc




More information about the Gambit-list mailing list