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
* stshell: fix for compiler

View file

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

View file

@ -37,8 +37,10 @@
#import <Foundation/NSString.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[] =
{
"@8@0:4",
@ -47,6 +49,10 @@ static const char *selector_types[] =
"@20@0:4@8@12@16",
"@24@0:4@8@12@16@20",
"@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)
@ -162,6 +168,8 @@ SEL STCreateTypedSelector(SEL sel)
SEL newSel;
NSLog(@"STCreateTypedSelector is deprecated.");
ptr = name;
while(*ptr)
@ -194,10 +202,51 @@ SEL STCreateTypedSelector(SEL sel)
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)
{
const char *types;
NSLog(@"STMethodSignatureForSelector is deprecated.");
types = sel_get_type(sel);
if(!types)

View file

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

View file

@ -62,7 +62,7 @@ STUndefinedObject *STNil = nil;
if(!signature)
{
signature = STMethodSignatureForSelector(sel);
signature = STConstructMethodSignatureForSelector(sel);
}
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
* Applied patch from Alexander V. Diemand (fixed bug #9595) - fixed

View file

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