Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: [Caml-list] Type hidding
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Warp <warplayer@f...>
Subject: Re: [Caml-list] Type hidding
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