Further improvments to the class parser.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@20412 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2004-12-03 03:43:24 +00:00
parent 122766b676
commit 935fba9568
2 changed files with 35 additions and 24 deletions

View file

@ -1,3 +1,9 @@
2004-12-02 06:20 Gregory John Casamento <greg_casamento@yahoo.com>
* GormObjCHeaderParser/OCClass.m: [OCClass parse] added
a check to determine if the string is nil before loading it
into the scanner.
2004-12-02 06:20 Gregory John Casamento <greg_casamento@yahoo.com>
* GormObjCHeaderParser/OCClass.m: added code in parse method

View file

@ -138,7 +138,6 @@
NSString *interfaceLine = nil;
NSString *methodsString = nil;
NSString *ivarsString = nil;
NSScanner *methodScan = nil;
NSRange range;
NSRange notFound = NSMakeRange(NSNotFound,0);
NSCharacterSet *wsnl = [NSCharacterSet whitespaceAndNewlineCharacterSet];
@ -194,22 +193,25 @@
[scanner scanUpToString: @"}" intoString: &ivarsString];
[scanner scanString: @"}" intoString: NULL];
// scan each ivar...
ivarScan = [NSScanner scannerWithString: ivarsString];
while(![ivarScan isAtEnd])
if(ivarsString != nil)
{
NSString *ivarLine = nil;
OCIVarDecl *ivarDecl = nil;
[ivarScan scanUpToString: @";" intoString: &ivarLine];
[ivarScan scanString: @";" intoString: NULL];
ivarDecl = AUTORELEASE([[OCIVarDecl alloc] initWithString: ivarLine]);
[ivarDecl parse];
[ivars addObjectsFromArray: [ivarDecl ivars]];
// scan each ivar...
ivarScan = [NSScanner scannerWithString: ivarsString];
while(![ivarScan isAtEnd])
{
NSString *ivarLine = nil;
OCIVarDecl *ivarDecl = nil;
[ivarScan scanUpToString: @";" intoString: &ivarLine];
[ivarScan scanString: @";" intoString: NULL];
ivarDecl = AUTORELEASE([[OCIVarDecl alloc] initWithString: ivarLine]);
[ivarDecl parse];
[ivars addObjectsFromArray: [ivarDecl ivars]];
}
}
}
// put the methods into a a string...
// put the methods into a string...
if(ivarsString != nil)
{
[scanner scanUpToString: @"@end" intoString: &methodsString];
@ -222,17 +224,20 @@
}
// scan each method...
methodScan = [NSScanner scannerWithString: methodsString];
while(![methodScan isAtEnd])
if(methodsString != nil)
{
NSString *methodLine = nil;
OCMethod *method = nil;
[methodScan scanUpToString: @";" intoString: &methodLine];
[methodScan scanString: @";" intoString: NULL];
method = AUTORELEASE([[OCMethod alloc] initWithString: methodLine]);
[method parse];
[methods addObject: method];
NSScanner *methodScan = [NSScanner scannerWithString: methodsString];
while(![methodScan isAtEnd])
{
NSString *methodLine = nil;
OCMethod *method = nil;
[methodScan scanUpToString: @";" intoString: &methodLine];
[methodScan scanString: @";" intoString: NULL];
method = AUTORELEASE([[OCMethod alloc] initWithString: methodLine]);
[method parse];
[methods addObject: method];
}
}
}
@end