caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jacques Garrigue <garrigue@math.nagoya-u.ac.jp>
To: micha-1@fantasymail.de
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] native values in objects from c
Date: Thu, 31 Aug 2006 15:55:12 +0900 (JST)	[thread overview]
Message-ID: <20060831.155512.94497249.garrigue@math.nagoya-u.ac.jp> (raw)
In-Reply-To: <20060829140717.108000@gmx.net>

From: "Michael Wohlwend" <micha-1@fantasymail.de>

> > Well, since fields start at 0, the 3rd field is number 2.
> 
> thanks for helping; actually my fault was to think the elements are linear ordered, even if the class is inherited (I want to get the first value of the base). The values are ordered reverse of definition, whereas the docu says:
> "Instance variables are stored in the order in which they appear in the class definition"
> 
> In the end I want to hide public methods which give you access the the pointer to the c++ object and hiding an external method is easy.

Aargh, you're right. The behaviour changed between 3.08 and 3.09.
In 3.08, fields are still ordered in definition order, including
inherited ones, but in 3.09, due to an optimization, inherited fields
appear after newly defined ones. The trouble is that this being due
to an optimization, this may change again, so it is not a good idea to
depend on it.
Note also that it is pretty easy to define another object, with the
same type as the one you want to interface with C++, but with
completely different fields. I.e., accessing object fields from the C
side is always dangerous.
A better approach it to add a method which returns the field with an
abstract type, this way users cannot break the type system.

Jacques Garrigue


  reply	other threads:[~2006-08-31  6:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-29 11:50 Michael Wohlwend
2006-08-29 13:05 ` [Caml-list] " Jacques Garrigue
2006-08-29 14:07   ` Michael Wohlwend
2006-08-31  6:55     ` Jacques Garrigue [this message]
2006-08-31  8:22       ` Michael Wohlwend

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=20060831.155512.94497249.garrigue@math.nagoya-u.ac.jp \
    --to=garrigue@math.nagoya-u.ac.jp \
    --cc=caml-list@inria.fr \
    --cc=micha-1@fantasymail.de \
    /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).