This is Stack.m in view mode; [Download] [Up]
/* Stack.m created by ovidiu on Sat 22-Mar-1997 */
#import <Foundation/Foundation.h>
#import "GdbDisplayController.h"
#import "DebuggerController_Protocol.h"
#import "NSScannerAddition.h"
#import "Frame.h"
#import "Stack.h"
@implementation Stack
- init
{
self = [super init];
frames = [NSMutableArray new];
selectedFrame = -1;
return self;
}
- (void)dealloc
{
[frames release];
[super dealloc];
}
- (void)setGdbController:(GdbDisplayController*)object
{
gdbController = object;
}
- (void)createStackFromGdbBacktrace:(NSString*)gdbOutput
type:(GdbOutputType)type
{
NSScanner* scanner;
/* Ignore other output types. */
if (type != GDB_OUTPUT_ANNOTATION)
return;
scanner = [NSScanner scannerWithString:gdbOutput];
[frames removeAllObjects];
while (![scanner isAtEnd]) {
NSString* functionAnnotation;
Frame* frame;
if (![scanner scanUpToString:@"\032\032frame-end\n"
intoString:&functionAnnotation])
break;
[scanner scanString:@"\032\032frame-end\n" intoString:NULL];
frame = [Frame frameWithAnnotation:functionAnnotation stack:self];
if (frame)
[frames addObject:frame];
}
[gdbController stackChanged];
// NSLog (@"%@ output = %@", NSStringFromSelector(_cmd), frames);
}
- (void)setSelectedFrame:(int)newFrame
{
if (selectedFrame != newFrame) {
id frameCmd = [NSString stringWithFormat:@"frame %d", newFrame];
[[[self gdbController] gdbManager]
executeCmd:frameCmd withTty:YES withAnnotation:NO];
selectedFrame = newFrame;
}
}
- (int)selectedFrame { return selectedFrame; }
- (NSArray*)frames { return frames; }
- (GdbDisplayController*)gdbController { return gdbController; }
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.