| Index: class-dump/src/CDSymbolReferences.m
|
| ===================================================================
|
| --- class-dump/src/CDSymbolReferences.m (revision 0)
|
| +++ class-dump/src/CDSymbolReferences.m (revision 0)
|
| @@ -0,0 +1,172 @@
|
| +// -*- mode: ObjC -*-
|
| +
|
| +// This file is part of class-dump, a utility for examining the Objective-C segment of Mach-O files.
|
| +// Copyright (C) 1997-1998, 2000-2001, 2004-2010 Steve Nygard.
|
| +
|
| +#import "CDSymbolReferences.h"
|
| +
|
| +@implementation CDSymbolReferences
|
| +
|
| +- (id)init;
|
| +{
|
| + if ([super init] == nil)
|
| + return nil;
|
| +
|
| + frameworkNamesByClassName = nil;
|
| + frameworkNamesByProtocolName = nil;
|
| +
|
| + classes = [[NSMutableSet alloc] init];
|
| + protocols = [[NSMutableSet alloc] init];
|
| +
|
| + return self;
|
| +}
|
| +
|
| +- (void)dealloc;
|
| +{
|
| + [frameworkNamesByClassName release];
|
| + [frameworkNamesByProtocolName release];
|
| +
|
| + [classes release];
|
| + [protocols release];
|
| +
|
| + [super dealloc];
|
| +}
|
| +
|
| +- (void)setFrameworkNamesByClassName:(NSDictionary *)newValue;
|
| +{
|
| + if (newValue == frameworkNamesByClassName)
|
| + return;
|
| +
|
| + [frameworkNamesByClassName release];
|
| + frameworkNamesByClassName = [newValue retain];
|
| +}
|
| +
|
| +- (void)setFrameworkNamesByProtocolName:(NSDictionary *)newValue;
|
| +{
|
| + if (newValue == frameworkNamesByProtocolName)
|
| + return;
|
| +
|
| + [frameworkNamesByProtocolName release];
|
| + frameworkNamesByProtocolName = [newValue retain];
|
| +}
|
| +
|
| +- (NSString *)frameworkForClassName:(NSString *)aClassName;
|
| +{
|
| + return [frameworkNamesByClassName objectForKey:aClassName];
|
| +}
|
| +
|
| +- (NSString *)frameworkForProtocolName:(NSString *)aProtocolName;
|
| +{
|
| + return [frameworkNamesByProtocolName objectForKey:aProtocolName];
|
| +}
|
| +
|
| +- (NSArray *)classes;
|
| +{
|
| + return [[classes allObjects] sortedArrayUsingSelector:@selector(compare:)];
|
| +}
|
| +
|
| +- (void)addClassName:(NSString *)aClassName;
|
| +{
|
| + [classes addObject:aClassName];
|
| +}
|
| +
|
| +- (void)removeClassName:(NSString *)aClassName;
|
| +{
|
| + if (aClassName != nil)
|
| + [classes removeObject:aClassName];
|
| +}
|
| +
|
| +- (NSArray *)protocols;
|
| +{
|
| + return [[protocols allObjects] sortedArrayUsingSelector:@selector(compare:)];
|
| +}
|
| +
|
| +- (void)addProtocolName:(NSString *)aProtocolName;
|
| +{
|
| + [protocols addObject:aProtocolName];
|
| +}
|
| +
|
| +- (void)addProtocolNamesFromArray:(NSArray *)protocolNames;
|
| +{
|
| + [protocols addObjectsFromArray:protocolNames];
|
| +}
|
| +
|
| +- (NSString *)description;
|
| +{
|
| + return [NSString stringWithFormat:@"<%@:%p> frameworkNamesByClassName: %@, frameworkNamesByProtocolName: %@, classes: %@, protocols: %@",
|
| + NSStringFromClass([self class]), self,
|
| + frameworkNamesByClassName, frameworkNamesByProtocolName,
|
| + [self classes], [self protocols]];
|
| +}
|
| +
|
| +- (void)_appendToString:(NSMutableString *)resultString;
|
| +{
|
| + NSArray *names;
|
| +
|
| + names = [self protocols];
|
| + for (NSString *name in names) {
|
| + NSString *str;
|
| +
|
| + str = [self importStringForProtocolName:name];
|
| + if (str != nil)
|
| + [resultString appendString:str];
|
| + }
|
| + if ([names count] > 0)
|
| + [resultString appendString:@"\n"];
|
| +
|
| + names = [self classes];
|
| + if ([names count] > 0) {
|
| + [resultString appendFormat:@"@class %@;\n\n", [names componentsJoinedByString:@", "]];
|
| + }
|
| +}
|
| +
|
| +- (NSString *)referenceString;
|
| +{
|
| + NSMutableString *referenceString;
|
| +
|
| + referenceString = [[[NSMutableString alloc] init] autorelease];
|
| + [self _appendToString:referenceString];
|
| +
|
| + if ([referenceString length] == 0)
|
| + return nil;
|
| +
|
| + return referenceString;
|
| +}
|
| +
|
| +- (void)removeAllReferences;
|
| +{
|
| + [classes removeAllObjects];
|
| + [protocols removeAllObjects];
|
| +}
|
| +
|
| +- (NSString *)importStringForClassName:(NSString *)aClassName;
|
| +{
|
| + if (aClassName != nil) {
|
| + NSString *framework;
|
| +
|
| + framework = [self frameworkForClassName:aClassName];
|
| + if (framework == nil)
|
| + return [NSString stringWithFormat:@"#import \"%@.h\"\n", aClassName];
|
| + else
|
| + return [NSString stringWithFormat:@"#import <%@/%@.h>\n", framework, aClassName];
|
| + }
|
| +
|
| + return nil;
|
| +}
|
| +
|
| +- (NSString *)importStringForProtocolName:(NSString *)aProtocolName;
|
| +{
|
| + if (aProtocolName != nil) {
|
| + NSString *framework;
|
| +
|
| + framework = [self frameworkForClassName:aProtocolName];
|
| + if (framework == nil)
|
| + return [NSString stringWithFormat:@"#import \"%@-Protocol.h\"\n", aProtocolName];
|
| + else
|
| + return [NSString stringWithFormat:@"#import <%@/%@-Protocol.h>\n", framework, aProtocolName];
|
| + }
|
| +
|
| + return nil;
|
| +}
|
| +
|
| +@end
|
|
|
| Property changes on: class-dump/src/CDSymbolReferences.m
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|