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
next parent 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