Version française
Home     About     Download     Resources     Contact us    
Browse thread
CamlIDL and string options.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Xavier Leroy <Xavier.Leroy@i...>
Subject: Re: CamlIDL and string options.
> I'm trying to write a camlidl interface for a function that returns a
> char *.  I want the ML result to be a string option.  If the returned
> pointer is null, then return None, otherwise return the string it
> points to in Some.
> 
> I can make it work, but only by writing my own c2ml routine

I'm afraid this is the only solution with the current CamlIDL.  C strings
([string] char *) are treated internally like a special case of arrays
([string] char []), and arrays are assumed not to be "NULL" pointers.

In particular, the "obvious" CamlIDL declaration [string,unique] char *
doesn't work because the "unique" attribute is ignored.  

I'll keep that in mind for future versions of CamlIDL.

> In actuality, the function is more complicated than even this.  It
> actually returns a char**.  There is a function available that returns
> the number of char*'s in it.  There is another function that returns
> the length of each char* (provided they aren't NULL).

It looks like you'll really have to write a specialized c2ml routine!
I'm willing to help; just send me (personally, not to the list) some
more details on the C API you're interfacing with.

> The other possibility is that someone else has already written an
> interface of MySQL, and I'm duplicating their effort.

The Caml Hump (http://caml.inria.fr/) lists some OCaml database bindings,
but none for MySQL.

- Xavier Leroy