caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: T Teemu E Kurppa <ttkurppa@cs.Helsinki.FI>
To: <caml-list@inria.fr>
Subject: Re: [Caml-list] CamlIDL: omitting struct fields
Date: Mon, 27 Aug 2001 13:49:50 +0300 (EEST)	[thread overview]
Message-ID: <Pine.LNX.4.33.0108271319030.19300-100000@harvakari.cs.Helsinki.FI> (raw)
In-Reply-To: <1ylyj7fh.fsf@mail.ru>

On 27 Aug 2001, Dmitry Bely wrote:

> T Teemu E Kurppa <ttkurppa@cs.Helsinki.FI> 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 <stdio.h>
#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


      reply	other threads:[~2001-08-27 10:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-27  6:48 T Teemu E Kurppa
2001-08-27  7:20 ` Dmitry Bely
2001-08-27 10:49   ` T Teemu E Kurppa [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.33.0108271319030.19300-100000@harvakari.cs.Helsinki.FI \
    --to=ttkurppa@cs.helsinki.fi \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).