mirror of
https://github.com/gnustep/libs-steptalk.git
synced 2025-02-20 18:22:02 +00:00
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:
parent
9d91c09b7f
commit
8417ff6e26
7 changed files with 66 additions and 4 deletions
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -106,7 +106,7 @@ some other, more clever mechanism. */
|
||||||
|
|
||||||
if(!signature)
|
if(!signature)
|
||||||
{
|
{
|
||||||
signature = STMethodSignatureForSelector(sel);
|
signature = STConstructMethodSignatureForSelector(sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
return signature;
|
return signature;
|
||||||
|
|
|
@ -62,7 +62,7 @@ STUndefinedObject *STNil = nil;
|
||||||
|
|
||||||
if(!signature)
|
if(!signature)
|
||||||
{
|
{
|
||||||
signature = STMethodSignatureForSelector(sel);
|
signature = STConstructMethodSignatureForSelector(sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
return signature;
|
return signature;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
|
|
||||||
if(!signature)
|
if(!signature)
|
||||||
{
|
{
|
||||||
signature = STMethodSignatureForSelector(sel);
|
signature = STConstructMethodSignatureForSelector(sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
return signature;
|
return signature;
|
||||||
|
|
Loading…
Reference in a new issue