>
> Would it be best to write something to do that in C as a
> foreign-primitive? Basically a C function, declared
> foreign-primitive, that takes a C-pointer and an int, and allocates a
> byte vector of the appropriate size. Presumably this would eat into
> the nursery until such time as a minor garbage collection takes place.
I suppose I mean something like this:
(define produce-byte-vector
(foreign-primitive scheme-object
((int size) (c-pointer data))
"C_word *p =
C_alloc(sizeof(C_header)+C_align(size));C_return(C_bytevector(&p,
size, data));"))
I expect I've got the arithmetic wrong, but this is the basic idea.
This is a nice easy implementation because you can then use
(byte-vector->u8vector), (byte-vector->s16vector) or whatever you want
to coerce the resulting byte vector to whatever you want.