Browse thread
[Caml-list] CamlIDL and true abstract types
- Lauri Alanko
[
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: | 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 la@iki.fi ------------------- 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