Browse thread
A pair of "Interfacing with C" questions
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | malc <malc@p...> |
| Subject: | Re: [Caml-list] A pair of "Interfacing with C" questions |
On Thu, 21 Jul 2005, Jacques Garrigue wrote: > From: Robert Roessler <roessler@rftp.com> > >> 1) in wrapping a large widget with multiple interfaces using >> "strings", I sometimes allow the widget to copy a C-string into a >> Caml-allocated string - INCLUDING "overwriting" the terminating zero >> byte with zero... I wanted to make sure this was not seen as a major >> problem. > > No problem currently: for C compatibility all ocaml strings have a 0 > after their end. Nobody can give "future" guarantees, but if there is > a change at this level, I assume this would be well publicised. > >> 2) this is about "future-proofing" (at the source level) code which >> interfaces with external [foreign] components and needs to store and >> pass around "opaque pointers": what is the best base Caml data type to >> use? >> >> I currently use >> >> type opaque_ptr = int32 >> >> I assume the other choices include int64, nativeint, or even int. > > If you look at mlvalues.h you will see that nativeint is define as > long int. So this should be the natural format for a pointer. I don't think so, Win64 ABI has sizeof(long) == 4 and sizeof(void *) == 8. <snip> -- mailto:malc@pulsesoft.com