Removed STMethodSignatureForSelector - not-portable to OSX

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@20329 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Stefan Urbanek 2004-11-09 21:12:19 +00:00
parent 9d91c09b7f
commit 8417ff6e26
7 changed files with 66 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2004 Nov 9 Stefan Urbanek
* Remove STMethodSignatureForSelector as it was deprecated because of
inportability to OSX.
2004 Sep 6 Stefan Urbanek 2004 Sep 6 Stefan Urbanek
* stshell: fix for compiler * stshell: fix for compiler

View file

@ -42,5 +42,8 @@ extern NSArray *STAllObjectiveCSelectors(void);
extern NSValue *STValueFromSelector(SEL sel); extern NSValue *STValueFromSelector(SEL sel);
extern SEL STSelectorFromValue(NSValue *val); extern SEL STSelectorFromValue(NSValue *val);
extern SEL STSelectorFromString(NSString *aString); extern SEL STSelectorFromString(NSString *aString);
extern NSMethodSignature *STConstructMethodSignatureForSelector(SEL sel);
/* Deprecated - remove */
extern NSMethodSignature *STMethodSignatureForSelector(SEL sel); extern NSMethodSignature *STMethodSignatureForSelector(SEL sel);

View file

@ -37,8 +37,10 @@
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <Foundation/NSValue.h> #import <Foundation/NSValue.h>
#define SELECTOR_TYPES_COUNT 6 #define SELECTOR_TYPES_COUNT 10
/* Predefined default selector types up to 10 arguments for fast creation.
It should be faster than manually constructing the string. */
static const char *selector_types[] = static const char *selector_types[] =
{ {
"@8@0:4", "@8@0:4",
@ -47,6 +49,10 @@ static const char *selector_types[] =
"@20@0:4@8@12@16", "@20@0:4@8@12@16",
"@24@0:4@8@12@16@20", "@24@0:4@8@12@16@20",
"@28@0:4@8@12@16@20@24" "@28@0:4@8@12@16@20@24"
"@32@0:4@8@12@16@20@24@28"
"@36@0:4@8@12@16@20@24@28@32"
"@40@0:4@8@12@16@20@24@28@32@36"
"@44@0:4@8@12@16@20@24@28@32@36@40"
}; };
NSMutableDictionary *STAllObjectiveCClasses(void) NSMutableDictionary *STAllObjectiveCClasses(void)
@ -162,6 +168,8 @@ SEL STCreateTypedSelector(SEL sel)
SEL newSel; SEL newSel;
NSLog(@"STCreateTypedSelector is deprecated.");
ptr = name; ptr = name;
while(*ptr) while(*ptr)
@ -194,10 +202,51 @@ SEL STCreateTypedSelector(SEL sel)
return newSel; return newSel;
} }
NSMethodSignature *STConstructMethodSignatureForSelector(SEL sel)
{
const char *name = sel_get_name(sel);
const char *ptr;
const char *types = (const char *)0;
int argc = 0;
ptr = name;
while(*ptr)
{
if(*ptr == ':')
{
argc ++;
}
ptr++;
}
if( argc < SELECTOR_TYPES_COUNT )
{
NSDebugLLog(@"STSending",
@"registering selector '%s' "
@"with %i arguments, types:'%s'",
name,argc,selector_types[argc]);
types = selector_types[argc];
}
if(!types)
{
[NSException raise:STInternalInconsistencyException
format:@"Unable to construct types for selector '%s'",
name];
return 0;
}
return [NSMethodSignature signatureWithObjCTypes:types];
}
NSMethodSignature *STMethodSignatureForSelector(SEL sel) NSMethodSignature *STMethodSignatureForSelector(SEL sel)
{ {
const char *types; const char *types;
NSLog(@"STMethodSignatureForSelector is deprecated.");
types = sel_get_type(sel); types = sel_get_type(sel);
if(!types) if(!types)

View file

@ -106,7 +106,7 @@ some other, more clever mechanism. */
if(!signature) if(!signature)
{ {
signature = STMethodSignatureForSelector(sel); signature = STConstructMethodSignatureForSelector(sel);
} }
return signature; return signature;

View file

@ -62,7 +62,7 @@ STUndefinedObject *STNil = nil;
if(!signature) if(!signature)
{ {
signature = STMethodSignatureForSelector(sel); signature = STConstructMethodSignatureForSelector(sel);
} }
return signature; return signature;

View file

@ -1,3 +1,8 @@
2004 Nov 9 Stefan Urbanek
* Remove STMethodSignatureForSelector as it was deprecated because of
inportability to OSX.
2004 Jul 10 Stefan Urbanek 2004 Jul 10 Stefan Urbanek
* Applied patch from Alexander V. Diemand (fixed bug #9595) - fixed * Applied patch from Alexander V. Diemand (fixed bug #9595) - fixed

View file

@ -112,7 +112,7 @@
if(!signature) if(!signature)
{ {
signature = STMethodSignatureForSelector(sel); signature = STConstructMethodSignatureForSelector(sel);
} }
return signature; return signature;