Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

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: David Brown <caml-list@d...>
Subject: 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:

value field_to_ml (one_field *_c2, camlidl_ctx _ctx)
  value _v1;
  value _v3;
  if ((*_c2) == NULL) {
    _v1 = Val_int(0);
  } else {
    _v3 = copy_string (*_c2);
      _v1 = camlidl_alloc_small(1, 0);
      Field(_v1, 0) = _v3;
  return _v1;

Ideally, I would like to be able to use another field to get the
length, but that function needs another argument that the interface
function gets as an argument.

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).

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

Dave Brown