[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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