English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    
Browse thread
caml_copy_string
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Till Varoquaux <till@p...>
Subject: Re: [Caml-list] caml_copy_string
In byterun/mlvalues.h

#define Bp_val(v) ((char *) (v))
....
#define String_val(x) ((char *) Bp_val(x))

Doesn't look like String_val is doing much copying to me....


Till

On Sat, Aug 21, 2010 at 7:46 PM, Mathias Kende <mathias.kende@ens.fr> wrote:
> Le samedi 21 août 2010 à 18:30 -0500, Jeffrey Barber a écrit :
>> Is there a way to get a string from C to OCaml without the
>> caml_copy_string
>> function, or is there a version that doesn't copy the string?
>
> There is no such function in the Caml FFI. You could write one yourself
> but then the string must have been specially allocated because you need
> to add a one word header to the string and maybe some byte at the end.
> So, if you have to exchange strings between OCaml and C, the easiest way
> is to always allocate them with the caml_alloc_string function. That way
> you can use the pointer returned by String_val in your C code and the
> string remains a valid Caml string (except caml does not use zero as the
> end of string and will stick to its allocated size).
>
> Mathias
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>