English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] CamlIDL and true abstract types
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2002-05-17 (20:18)
From: Lauri Alanko <la@i...>
Subject: [Caml-list] CamlIDL and true abstract types
Hello. I recently learned of CamlIDL (thanks to the list), and tried it out.
After trying it out for a while, it seems to me that an absolutely essential
feature is missing: abstract types.

With an abstract type I mean a type whose representation is known neither at
the C side nor in the caml world. Typically these are of the form:

typedef struct Foo_ Foo;

Where the actual definition of struct Foo_ is completely missing from public
headers, or even if it is not, its structure is supposed to be an
implementation detail. These sorts of types are needed often enough in many
bindings, and the Caml translation for Foo* should be clear:

type foo

Yet somehow there seems to be no direct way for doing this within CamlIDL.
How come?

Another funny thing about CamlIDL is that it translates everything _by
value_. C structs are transformed to newly allocated caml blocks and vice
versa. Yet often enough the _identity_ of the struct (ie. its physical
address) is essential. And though CamlIDL provides the "ptr" translation for
pointers, it uses Com.unique as the translation type instead of a pure
abstract type. And it provides no way to directly access or modify fields of
existing C structs.

To my mind, this makes CamlIDL unusable for creating bindings for anything
but the most simple-minded libraries. Yet many people seem to promote it.
Have I misunderstood something?

Lauri Alanko
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners