On 03-Jan-2001, Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> wrote:
Wed, 03 Jan 2001 12:27:20 +1100, Manuel M. T. Chakravarty <chak@cse.unsw.edu.au> pisze:
This means that we should not provide
castFunPtrToPtr :: FunPtr a -> Ptr b castPtrToFunPtr :: Ptr a -> FunPtr b
It does not mean that, because existing C libraries are usually non-portable and some do require using such casts, however meaningless they could be.
Well, if they are left, then at very least they should be very clearly documented as being non-portable.
Has anybody ever used these casts?
Yes: me, for the readline library.
Could you be more specific? Which part of the readline library? Why was the cast needed?
But it's used to pass either a function pointer cast to a data pointer or a real data pointer to a function, together with an enumeration value indicating which one is this. Ugly, but that's life.
Another example is dlopen.
I think you mean dlsym(). -- Fergus Henderson <fjh@cs.mu.oz.au> | "I have always known that the pursuit | of excellence is a lethal habit" WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.