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 documentation and COM issues
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2002-06-04 (16:28)
From: Florian Hars <florian@h...>
Subject: [Caml-list] CamlIDL documentation and COM issues
I am trying to write an interface to an existing C library and I intend 
to use CamlIDL for this task, but I am missing some more HOWTO-like 

The library uses a pattern that should be common enough to supported in 
CamlIDL (and explained in the hints on writing IDL files): there is a 
struct that is only of internal relavance, and there is an open and a 
close function that returns or frees a pointer to such a struct, and 
several functions that operate on such a handle:

typedef struct { /* things */ } Foo;
typedef Foo * FooHandle;
FooHandle FooOpen(args...);
int FooOperate(FooHandle fhdl, args...);
void FooClose(FooHandle fhdl);

Now all I need is a way to put this handle into a Caml variable (and, 
optionally, to call FooClose automatically whenever the handle runs out 
of scope). It looks like the [abstract] and [ptr] attributes, either 
alone or in combination, might be relevant for this task. But [ptr] 
requires the Com module, which I do not want to use. (OK, it is tiny 
under unix, but still... what happens if I ever recompile the program 
under windoze? Shouldn't the generally useful features for interfacing 
to C/C++ and the COM-specific stuff be somehow separated, like in a 
module Idl and another module Com? This would certainly help to reduce 
the prevailing confusion over the possible uses of CamlIDL. Or is it 
irrelevant for my problem?)

An example for the use of errorcheck(fn) and a remark on the type of fn 
in errorcheck might be helpful, too.

Oh, and shouldn't the example on page 24 of the Manual (1.0.4) read

  double time() quote(call, "_res=....; ");
Or is "call" implicit if no ident is given in a quote in a function 

Yours, Florian Hars.

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