// Load any markers. The superview takes care of filtering out for just the
// curently displayed file.
- NSSet* markers = [sourceView_ markers];
+ NSSet<NSNumber*>* markers = [sourceView_ markers];
// Go through the lines.
const NSRange kNullRange = NSMakeRange(NSNotFound, 0);
// ruler, rather than just the width of the string.
drawRect.origin.x = NSMinX(rect);
- Breakpoint* test = [[[Breakpoint alloc] initWithLine:lineNumber
- inFile:[sourceView_ file]] autorelease];
- if ([markers containsObject:test]) {
+ if ([markers containsObject:@(lineNumber)]) {
[self drawBreakpointInRect:drawRect];
}
if (sourceView_.markedLine == lineNumber) {
BSLineNumberRulerView* ruler_;
NSScrollView* scrollView_;
- // Set of Breakpoint objects.
- NSSet* markers_;
+ // Line numbers to mark.
+ NSSet<NSNumber*>* markers_;
NSString* file_;
NSUInteger markedLine_;
@property (nonatomic, readonly) NSTextView* textView;
@property (nonatomic, readonly) NSScrollView* scrollView;
-@property (nonatomic, retain) NSSet* markers;
+@property (nonatomic, retain) NSSet<NSNumber*>* markers;
@property (nonatomic, assign) NSString* file;
@property (nonatomic, assign) NSUInteger markedLine;
@property (nonatomic, assign) id delegate;
Breakpoint* bp = [selection objectAtIndex:0];
[sourceView setFile:[bp file]];
[sourceView scrollToLine:[bp line]];
- [sourceView setMarkers:[NSSet setWithArray:[manager breakpointsForFile:[bp file]]]];
+ [sourceView setMarkers:[manager breakpointsForFile:bp.file]];
}
#pragma mark BSSourceView Delegate
[bp release];
}
- [sourceView setMarkers:[NSSet setWithArray:[manager breakpointsForFile:file]]];
+ [sourceView setMarkers:[manager breakpointsForFile:file]];
}
/**
+ (BreakpointManager*)sharedManager;
- (void)addBreakpoint:(Breakpoint*)bp;
- (Breakpoint*)removeBreakpointAt:(NSUInteger)line inFile:(NSString*)file;
-- (NSArray*)breakpointsForFile:(NSString*)file;
+- (NSSet<NSNumber*>*)breakpointsForFile:(NSString*)file;
- (BOOL)hasBreakpointAt:(NSUInteger)line inFile:(NSString*)file;
@end
{
if ([b line] == line && [[b file] isEqualToString:file])
{
+ // Keep the breakpoint alive after it is removed from the breakpoints
+ // array.
+ [[b retain] autorelease];
+
[breakpoints removeObject:b];
[connection removeBreakpoint:b];
/**
* Returns all the breakpoints for a given file
*/
-- (NSArray*)breakpointsForFile:(NSString*)file
+- (NSSet<NSNumber*>*)breakpointsForFile:(NSString*)file
{
- NSMutableArray* matches = [NSMutableArray array];
- for (Breakpoint* b in breakpoints)
- {
- if ([[b file] isEqualToString:file])
- {
- [matches addObject:b];
+ NSMutableSet<NSNumber*>* matches = [NSMutableSet set];
+ for (Breakpoint* b in breakpoints) {
+ if ([b.file isEqualToString:file]) {
+ [matches addObject:@(b.line)];
}
}
-
+
return matches;
}
AppDelegate* appDel = [NSApp delegate];
[[[appDel breakpoint] arrayController] rearrangeObjects];
[[[appDel breakpoint] sourceView] setNeedsDisplay:YES];
- [[[appDel breakpoint] sourceView] setMarkers:[NSSet setWithArray:[self breakpointsForFile:file]]];
+ [[[appDel breakpoint] sourceView] setMarkers:[self breakpointsForFile:file]];
[[[appDel debugger] sourceViewer] setNeedsDisplay:YES];
- [[[appDel debugger] sourceViewer] setMarkers:[NSSet setWithArray:[self breakpointsForFile:file]]];
+ [[[appDel debugger] sourceViewer] setMarkers:[self breakpointsForFile:file]];
}
@end
{
[sourceViewer setString:frame.source asFile:filename];
- NSSet* breakpoints = [NSSet setWithArray:[[BreakpointManager sharedManager] breakpointsForFile:filename]];
+ NSSet<NSNumber*>* breakpoints = [[BreakpointManager sharedManager] breakpointsForFile:filename];
[sourceViewer setMarkers:breakpoints];
}
[bp release];
}
- [sourceViewer setMarkers:[NSSet setWithArray:[mngr breakpointsForFile:file]]];
- [sourceViewer setNeedsDisplay:YES];
+ [sourceViewer setMarkers:[mngr breakpointsForFile:file]];
}
@end