From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id MAA09263; Mon, 27 Aug 2001 12:49:47 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id MAA09329 for ; Mon, 27 Aug 2001 12:49:46 +0200 (MET DST) Received: from porsta.cs.Helsinki.FI (porsta.cs.Helsinki.FI [128.214.48.124]) by nez-perce.inria.fr (8.11.1/8.10.0) with ESMTP id f7RAnjn27734 for ; Mon, 27 Aug 2001 12:49:46 +0200 (MET DST) Received: from harvakari.cs.Helsinki.FI (IDENT:ttkurppa@harvakari.cs.Helsinki.FI [128.214.9.152]) by porsta.cs.Helsinki.FI (8.11.6/8.11.6) with ESMTP id f7RAnjS20184 for ; Mon, 27 Aug 2001 13:49:45 +0300 Date: Mon, 27 Aug 2001 13:49:50 +0300 (EEST) From: T Teemu E Kurppa To: Subject: Re: [Caml-list] CamlIDL: omitting struct fields In-Reply-To: <1ylyj7fh.fsf@mail.ru> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On 27 Aug 2001, Dmitry Bely wrote: > T Teemu E Kurppa writes: > > > Unfortunately I encountered problems, when I omitted some struct fields > > from IDL specification. According the chapter 6 of CamlIDL manual > > (http://caml.inria.fr/camlidl/htmlman/main006.html), omitting > > irrelevant struct fields should be possible. < ... skipping ... > > > Have I misunderstood something ? > > Maybe :-) If you really need the trick with fields omitting (BTW, why?), The C-part of the implementation has many C-structs with information relevant for the AI, but unfortunately these structs also contain some GUI-specific fields. Design flaw obviously (Hey, I haven't done it ! :)). So I thought it would be cleaner to omit these fields with CamlIDL. > you should manually include the header file with "bar" definition into > the camlidl-generated c_idl.c, so it will use the correct memory > layout. Camlidl manual says that very clear. Okay, I think I understand the problem now. IMHO the manual didn't state this very clearly in Chapter 6, but on the other hand it would be better to read the whole manual before whining ;) Anyway, I noticed that it's possible to avoid _manual_ modification of camlidl-generated file with quote-statement and -no-include switch. Below is a working example for those who have stumbled on same problem. Add -no-include switch to camlidl command. > Hope to hear from you soon, > Dmitry I'll report, if I get something interesting done. And thanks for the help ! Teemu - c_idl.idl -------------------------- quote( h, "#include \"c_impl.h\"\n") struct bar { int x; //int y; int z; }; void f ([in,ref] struct bar* pbar); - c_impl.h --------------------------- #ifndef C_IMPL_H #define C_IMPL_H struct bar { int x; int y; int z; }; #endif - c_impl.c --------------------------- #include #include "c_impl.h" void f (struct bar* pbar) { printf ("x=%d, y=%d, z=%d\n", pbar->x, pbar->y, pbar->z); return; } - idl_test.ml ------------------------ open C_idl let main () = let bar = {x = 1; (*y = 2;*) z = 3} in f(bar) let _ = main () Teemu Kurppa Teemu.Kurppa@Helsinki.fi ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr