mirror of
https://github.com/QuasarApp/macdependency.git
synced 2025-04-27 21:04:31 +00:00
102 lines
2.1 KiB
Plaintext
102 lines
2.1 KiB
Plaintext
//
|
|
// SymbolTableController.m
|
|
// MacDependency
|
|
//
|
|
// Created by Konrad Windszus on 18.07.09.
|
|
// Copyright 2009 Konrad Windszus. All rights reserved.
|
|
//
|
|
|
|
#import "SymbolTableController.h"
|
|
#import "MyDocument.h"
|
|
#include "MachO/symboltableentry.h"
|
|
|
|
|
|
@interface SymbolTableController()
|
|
-(void)setFilter;
|
|
- (NSPredicate*) typeFilter;
|
|
@end
|
|
|
|
@implementation SymbolTableController
|
|
|
|
|
|
const int TYPE[] = {SymbolTableEntry::TypeExported, SymbolTableEntry::TypeImported};
|
|
|
|
- (id)initWithCoder:(NSCoder *)decoder {
|
|
self = [super initWithCoder:decoder];
|
|
if (self) {
|
|
demangleNames = true;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
// called when all connections were made
|
|
- (void)awakeFromNib {
|
|
[self setFilter];
|
|
}
|
|
|
|
- (NSPredicate*) typeFilter {
|
|
NSMutableString* typeFilter = [NSMutableString string];
|
|
|
|
for (int segment=0; segment < sizeof(TYPE)/sizeof(*TYPE); segment++) {
|
|
if ([typeFilterControl isSelectedForSegment:segment]) {
|
|
NSString* condition = [NSString stringWithFormat:@"type=%d", TYPE[segment]];
|
|
if ([typeFilter length] > 0) {
|
|
[typeFilter appendString:@" or "];
|
|
}
|
|
[typeFilter appendString:condition];
|
|
}
|
|
}
|
|
|
|
// select nothing if no filter set
|
|
NSPredicate* predicate;
|
|
if ([typeFilter length] == 0) {
|
|
predicate = [NSPredicate predicateWithValue:NO];
|
|
} else {
|
|
predicate = [NSPredicate predicateWithFormat:typeFilter];
|
|
}
|
|
return predicate;
|
|
}
|
|
|
|
- (NSPredicate*)nameFilter {
|
|
return nameFilter;
|
|
}
|
|
|
|
|
|
- (void)setNameFilter:(NSPredicate*) newNameFilter {
|
|
nameFilter = newNameFilter;
|
|
[self setFilter];
|
|
}
|
|
|
|
- (IBAction)typeFilterChanged:(id)sender {
|
|
[self setFilter];
|
|
}
|
|
|
|
-(void)setFilter {
|
|
NSPredicate* typeFilter = [self typeFilter];
|
|
NSPredicate* predicate;
|
|
if (nameFilter) {
|
|
predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:nameFilter, typeFilter, nil]];
|
|
} else {
|
|
predicate = typeFilter;
|
|
}
|
|
//NSLog(@"%@", predicate);
|
|
[self setFilterPredicate:predicate];
|
|
}
|
|
|
|
- (BOOL)demangleNames {
|
|
return demangleNames;
|
|
}
|
|
|
|
- (BOOL*)demangleNamesPtr {
|
|
return &demangleNames;
|
|
}
|
|
|
|
- (void)setDemangleNames:(BOOL)demangle {
|
|
self->demangleNames = demangle;
|
|
|
|
// refresh
|
|
[self rearrangeObjects];
|
|
}
|
|
|
|
@end
|