mirror of
https://github.com/gnustep/apps-gorm.git
synced 2025-04-22 22:20:44 +00:00
More improvements to the class parser.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@20388 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
f5d1828901
commit
c3dcc6f3b0
4 changed files with 43 additions and 11 deletions
|
@ -1,3 +1,11 @@
|
|||
2004-11-27 13:22 Gregory John Casamento <greg_casamento@yahoo.com>
|
||||
|
||||
* GormObjCHeaderParser/OCClass.m
|
||||
* GormObjCHeaderParser/OCIVar.m
|
||||
* GormObjCHeaderParser/OCMethod.m: Added code to parse method
|
||||
to trim the result of any whitespace to make certain that there
|
||||
aren't any extra spaces in the data which could cause problems.
|
||||
|
||||
2004-11-27 09:17 Gregory John Casamento <greg_casamento@yahoo.com>
|
||||
|
||||
* GormObjCHeaderParser/OCClass.m: Condensed parse methods into
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <Foundation/NSString.h>
|
||||
#include <Foundation/NSArray.h>
|
||||
#include <Foundation/NSScanner.h>
|
||||
#include <Foundation/NSCharacterSet.h>
|
||||
#include <GormObjCHeaderParser/OCClass.h>
|
||||
#include <GormObjCHeaderParser/OCMethod.h>
|
||||
#include <GormObjCHeaderParser/OCIVar.h>
|
||||
|
@ -124,23 +125,45 @@
|
|||
NSString *methodsString = nil;
|
||||
NSString *ivarsString = nil;
|
||||
NSScanner *methodScan = nil;
|
||||
|
||||
[scanner scanUpToString: @"@interface" intoString: NULL]; // look ahead...
|
||||
[scanner scanUpToString: @"\n" intoString: &interfaceLine];
|
||||
iscan = [NSScanner scannerWithString: interfaceLine]; // reset scanner...
|
||||
if(NSEqualRanges([interfaceLine rangeOfString: @":"],NSMakeRange(NSNotFound,0)) == NO)
|
||||
NSRange range;
|
||||
NSRange notFound = NSMakeRange(NSNotFound,0);
|
||||
NSCharacterSet *wsnl = [NSCharacterSet whitespaceAndNewlineCharacterSet];
|
||||
|
||||
// get the interface line... look ahead...
|
||||
if(NSEqualRanges(range = [classString rangeOfString: @"{"], notFound) == NO)
|
||||
{
|
||||
[scanner scanUpToString: @"@interface" intoString: NULL];
|
||||
[scanner scanUpToString: @"{" intoString: &interfaceLine];
|
||||
iscan = [NSScanner scannerWithString: interfaceLine]; // reset scanner...
|
||||
}
|
||||
else // if there is no "{", then there are no ivars...
|
||||
{
|
||||
[scanner scanUpToString: @"@interface" intoString: NULL];
|
||||
[scanner scanUpToString: @"\n" intoString: &interfaceLine];
|
||||
iscan = [NSScanner scannerWithString: interfaceLine]; // reset scanner...
|
||||
}
|
||||
|
||||
// look ahead...
|
||||
if(NSEqualRanges([interfaceLine rangeOfString: @":"], notFound) == NO)
|
||||
{
|
||||
NSString *cn = nil, *scn = nil;
|
||||
|
||||
[iscan scanUpToAndIncludingString: @"@interface" intoString: NULL];
|
||||
[iscan scanUpToString: @":" intoString: &className];
|
||||
[iscan scanUpToString: @":" intoString: &cn];
|
||||
className = [cn stringByTrimmingCharactersInSet: wsnl];
|
||||
RETAIN(className);
|
||||
[iscan scanString: @":" intoString: NULL];
|
||||
[iscan scanUpToString: @" " intoString: &superClassName];
|
||||
[iscan scanUpToCharactersFromSet: wsnl intoString: &scn];
|
||||
superClassName = [scn stringByTrimmingCharactersInSet: wsnl];
|
||||
RETAIN(superClassName);
|
||||
}
|
||||
else // category...
|
||||
{
|
||||
NSString *cn = nil;
|
||||
|
||||
[iscan scanUpToAndIncludingString: @"@interface" intoString: NULL];
|
||||
[iscan scanUpToString: @" " intoString: &className];
|
||||
[iscan scanUpToString: @" " intoString: &cn];
|
||||
className = [cn stringByTrimmingCharactersInSet: wsnl];
|
||||
RETAIN(className);
|
||||
isCategory = YES;
|
||||
}
|
||||
|
|
|
@ -102,6 +102,7 @@
|
|||
scanner = [NSScanner scannerWithString: tempName];
|
||||
[scanner setCharactersToBeSkipped: [NSCharacterSet characterSetWithCharactersInString: @"*"]];
|
||||
[scanner scanUpToCharactersFromSet: wsnl intoString: &name];
|
||||
name = [name stringByTrimmingCharactersInSet: wsnl];
|
||||
RETAIN(name);
|
||||
}
|
||||
@end
|
||||
|
|
|
@ -161,7 +161,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
ASSIGN(name, selectorPart);
|
||||
ASSIGN(name, [selectorPart stringByTrimmingCharactersInSet: wsnl]);
|
||||
}
|
||||
else // No return type specified. The default is id, so we must treat it as a potential action...
|
||||
{
|
||||
|
@ -192,7 +192,7 @@
|
|||
selectorPart = [selectorPart stringByAppendingString: argPart];
|
||||
}
|
||||
|
||||
ASSIGN(name, selectorPart);
|
||||
ASSIGN(name, [selectorPart stringByTrimmingCharactersInSet: wsnl]);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -203,7 +203,7 @@
|
|||
NSScanner *selScanner = [NSScanner scannerWithString: tempSelector];
|
||||
[selScanner scanUpToAndIncludingString: @")" intoString: NULL];
|
||||
[selScanner scanUpToCharactersFromSet: wsnl intoString: &selectorPart];
|
||||
ASSIGN(name, selectorPart);
|
||||
ASSIGN(name, [selectorPart stringByTrimmingCharactersInSet: wsnl]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue