Minor bug correction in class parser.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@20387 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2004-11-27 14:14:55 +00:00
parent 2543fee8fb
commit f5d1828901
2 changed files with 57 additions and 60 deletions

View file

@ -1,3 +1,8 @@
2004-11-27 09:17 Gregory John Casamento <greg_casamento@yahoo.com>
* GormObjCHeaderParser/OCClass.m: Condensed parse methods into
parse. Corrected a minor issue.
2004-11-27 05:53 Gregory John Casamento <greg_casamento@yahoo.com>
* GormObjCHeaderParser/OCClass.h

View file

@ -116,36 +116,38 @@
ASSIGN(classString, resultString);
}
- (void) _parseClass
- (void) parse
{
NSScanner *scanner = [NSScanner scannerWithString: classString];
NSScanner *iscan = nil;
NSString *interfaceLine = nil;
NSString *methodsString = nil;
NSString *ivarsString = nil;
NSScanner *methodScan = nil;
[scanner scanUpToString: @"@interface" intoString: NULL]; // look ahead...
[scanner scanUpToString: @"\n" intoString: &interfaceLine];
scanner = [NSScanner scannerWithString: interfaceLine]; // reset scanner...
iscan = [NSScanner scannerWithString: interfaceLine]; // reset scanner...
if(NSEqualRanges([interfaceLine rangeOfString: @":"],NSMakeRange(NSNotFound,0)) == NO)
{
[scanner scanUpToAndIncludingString: @"@interface" intoString: NULL];
[scanner scanUpToString: @":" intoString: &className];
[iscan scanUpToAndIncludingString: @"@interface" intoString: NULL];
[iscan scanUpToString: @":" intoString: &className];
RETAIN(className);
[scanner scanString: @":" intoString: NULL];
[scanner scanUpToString: @" " intoString: &superClassName];
[iscan scanString: @":" intoString: NULL];
[iscan scanUpToString: @" " intoString: &superClassName];
RETAIN(superClassName);
}
else // category...
{
[scanner scanUpToAndIncludingString: @"@interface" intoString: NULL];
[scanner scanUpToString: @" " intoString: &className];
[iscan scanUpToAndIncludingString: @"@interface" intoString: NULL];
[iscan scanUpToString: @" " intoString: &className];
RETAIN(className);
[self setIsCategory: YES];
isCategory = YES;
}
}
- (void) _parseIVars
{
NSScanner *scanner = [NSScanner scannerWithString: classString];
NSString *ivarsString = nil;
if(isCategory == NO)
{
NSScanner *ivarScan = nil;
// put the ivars into a a string...
[scanner scanUpToAndIncludingString: @"{" intoString: NULL];
@ -153,54 +155,44 @@
[scanner scanString: @"}" intoString: NULL];
// scan each ivar...
scanner = [NSScanner scannerWithString: ivarsString];
while(![scanner isAtEnd])
ivarScan = [NSScanner scannerWithString: ivarsString];
while(![ivarScan isAtEnd])
{
NSString *ivarLine = nil;
OCIVar *ivar = nil;
[scanner scanUpToString: @";" intoString: &ivarLine];
[scanner scanString: @";" intoString: NULL];
[ivarScan scanUpToString: @";" intoString: &ivarLine];
[ivarScan scanString: @";" intoString: NULL];
ivar = AUTORELEASE([[OCIVar alloc] initWithString: ivarLine]);
[ivar parse];
[ivars addObject: ivar];
}
}
- (void) _parseMethods
{
NSScanner *scanner = [NSScanner scannerWithString: classString];
NSString *methodsString = nil;
}
// put the methods into a a string...
[scanner scanUpToAndIncludingString: @"{" intoString: NULL];
[scanner scanUpToString: @"}" intoString: NULL];
[scanner scanString: @"}" intoString: NULL];
if(ivarsString != nil)
{
[scanner scanUpToString: @"@end" intoString: &methodsString];
}
else //
{
scanner = [NSScanner scannerWithString: classString];
[scanner scanUpToAndIncludingString: interfaceLine intoString: NULL];
[scanner scanUpToString: @"@end" intoString: &methodsString];
}
// scan each method...
scanner = [NSScanner scannerWithString: methodsString];
while(![scanner isAtEnd])
methodScan = [NSScanner scannerWithString: methodsString];
while(![methodScan isAtEnd])
{
NSString *methodLine = nil;
OCMethod *method = nil;
[scanner scanUpToString: @";" intoString: &methodLine];
[scanner scanString: @";" intoString: NULL];
[methodScan scanUpToString: @";" intoString: &methodLine];
[methodScan scanString: @";" intoString: NULL];
method = AUTORELEASE([[OCMethod alloc] initWithString: methodLine]);
[method parse];
[methods addObject: method];
}
}
- (void) parse
{
// [self _strip];
[self _parseClass];
if([self isCategory] == NO)
{
[self _parseIVars];
}
[self _parseMethods];
}
@end