fixup ugly coding stype to improve maintainability

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32384 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2011-02-26 21:42:20 +00:00
parent e0706bed39
commit ba31196455

View file

@ -1,7 +1,8 @@
#import <Foundation/NSObject.h> #import <Foundation/NSObject.h>
// Declare the block copy functions ourself so that we don't depend on a /* Declare the block copy functions ourself so that we don't depend on a
// specific header location. * specific header location.
*/
void *_Block_copy(void *); void *_Block_copy(void *);
void _Block_release(void *); void _Block_release(void *);
@ -9,44 +10,52 @@ void _Block_release(void *);
@end @end
@implementation GSBlock @implementation GSBlock
+ (void)load + (void) load
{ {
unsigned int methodCount; unsigned int methodCount;
Method *m = NULL; Method *m = NULL;
Method *methods = Method *methods = class_copyMethodList(self, &methodCount);
class_copyMethodList(self, &methodCount); id blockClass = objc_lookUpClass("_NSBlock");
id blockClass = objc_lookUpClass("_NSBlock"); Protocol *nscopying = NULL;
Protocol *nscopying = NULL;
// If we don't have an _NSBlock class, we don't have blocks support in the /* If we don't have an _NSBlock class, we don't have blocks support in the
// runtime, so give up. * runtime, so give up.
if (nil == blockClass) { return; } */
if (nil == blockClass)
{
return;
}
// Copy all of the methods in this class onto the block-runtime-provided /* Copy all of the methods in this class onto the block-runtime-provided
// _NSBlock * _NSBlock
for (m = methods ; NULL!=*m ; m++) */
{ for (m = methods; NULL != *m; m++)
class_addMethod(blockClass, method_getName(*m), {
method_getImplementation(*m), method_getTypeEncoding(*m)); class_addMethod(blockClass, method_getName(*m),
} method_getImplementation(*m), method_getTypeEncoding(*m));
nscopying = objc_getProtocol("NSCopying"); }
class_addProtocol(blockClass, nscopying); nscopying = objc_getProtocol("NSCopying");
class_addProtocol(blockClass, nscopying);
} }
- (id)copyWithZone: (NSZone*)aZone
- (id) copyWithZone: (NSZone*)aZone
{ {
return _Block_copy(self); return _Block_copy(self);
} }
- (id)copy
- (id) copy
{ {
return _Block_copy(self); return _Block_copy(self);
} }
- (id)retain
- (id) retain
{ {
return _Block_copy(self); return _Block_copy(self);
} }
- (void)release
- (void) release
{ {
_Block_release(self); _Block_release(self);
} }
@end @end