caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Warp" <warplayer@free.fr>
To: "Jeff Henrikson" <jehenrik@yahoo.com>
Cc: "OCaml" <caml-list@inria.fr>
Subject: Re: [Caml-list] Type hidding
Date: Thu, 17 Jan 2002 18:44:42 +0100	[thread overview]
Message-ID: <01ca01c19f7e$a566fbd0$ac00a8c0@warp> (raw)
In-Reply-To: <000901c19ecf$b8c93ee0$0b01a8c0@mit.edu>

Ok I've tried this doing :

 (set_window_data wnd#hwnd 10);
 let v = (get_window_data wnd#hwnd) in
     (print_int (Obj.magic v: int));

But it print a wrong number ( not 10 )
I've tried to trace calls into the C DLL where primitives *_window_data are,
I can see the set_window_data call but the get_window_data call is NOT done
by the interpreter

What's wrong ?

Warp

> Do you know about Obj.magic?  It unsafely casts anything to the unlimited
polymorphic type, so you can cast to something else:
>
> (Obj.magic x : int)
>
> casts x to an int no matter what.  Note that this does not help you at all
if you are using the least significant bit, which is
> reserved for pointer tracing in ocaml.  If you bind bind something
arbitrary with a 0 lsb to an ocaml variable, you run the risk of
> GC running off the end of the earth tracing that.  You are supposed to
convert the variable to an int32 or something else in C
> before returning it to caml.  See the FFI docs.
>
>
> Jeff
>
> > Hello !
> > I'm having theses functions :
> >
> > external set_window_data : wnd:hwnd -> 'a -> unit = "set_window_data"
> > external get_window_data : wnd:hwnd -> 'a = "get_window_data"
> >
> > I know that's very type-unsafe and all, but i really need the user to be
> > able to put any kind of data into it. If you got another idea, please
let me
> > know.
> >
> > BTW, then with my handle i'm doing that :
> >     (set_window_data wnd 0);
> >     (print_int (get_window_data wnd));
> >
> > but it raises (about the call the get_window_data ) :
> >     This expression has type wnd:hwnd -> 'a but is here used with type
int
> >
> > I've tried to "force" the return value to int but it doesn't seems to
work.
> > Any help welcomed.
> >
> > Warp
> >
> > -------------------
> > 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
> >
>
>

-------------------
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:[~2002-01-17 17:47 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <000901c19ecf$b8c93ee0$0b01a8c0@mit.edu>
2002-01-17 17:44 ` Warp [this message]
2002-01-18  6:40   ` Jacques Garrigue
2002-01-16 20:09 Warp
2002-01-16 23:32 ` Ceri Storey
2002-01-17 10:57 ` Daniel de Rauglaudre

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='01ca01c19f7e$a566fbd0$ac00a8c0@warp' \
    --to=warplayer@free.fr \
    --cc=caml-list@inria.fr \
    --cc=jehenrik@yahoo.com \
    /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).