discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSStream update


From: Richard Frith-Macdonald
Subject: Re: NSStream update
Date: Wed, 22 Feb 2006 06:24:59 +0000


On 21 Feb 2006, at 19:18, Derek Zhou wrote:

"Andrew Ruder" <aeruder@gmail.com> writes:

2. make the ivar/setter generic somehow ... eg by using a void*
rather than an int.  Actually a windows handle is an unsigned long
thought I'm not sure it's guaranteed to stay that way ... using void*
in the generic part should be safe though.

The worst thing about the void * is that the number of warnings
generated on a amd64 machine is pretty staggering on NSStream.  I've
included a sample output below.  Can't this be done with typedef's?

- Andy
I don't have a 64bit machine so I cannot verify, but In
Foundation/NSRunloop.h there is:

- (void) addEvent: (void*)data
             type: (RunLoopEventType)type
          watcher: (id<RunLoopEvents>)watcher
          forMode: (NSString*)mode;

Where data is the file descriptor (int) in Unix. So how does that
work?

You call it as [loop addEvent (void*)(intptr_t)desc type: type watcher: watcher forMode: mode]

The double cast tells the compiler how to pass it and not to generate a warning.

The (intptr_t) tells it to extend an integer value to the size of a pointer. The (void*) tells it that it is OK to treat the value as an abstract pointer.

PS. I made sure the code in svn does not generate warnings.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]