Index: class-dump/src/CDClassFrameworkVisitor.m |
=================================================================== |
--- class-dump/src/CDClassFrameworkVisitor.m (revision 0) |
+++ class-dump/src/CDClassFrameworkVisitor.m (revision 0) |
@@ -0,0 +1,80 @@ |
+// -*- 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 "CDClassFrameworkVisitor.h" |
+ |
+#import "CDOCClass.h" |
+#import "CDObjectiveCProcessor.h" |
+#import "CDMachOFile.h" |
+ |
+// This builds up a dictionary mapping class names to a framework name. It is used to generate individual imports when creating separate header files. |
+ |
+@implementation CDClassFrameworkVisitor |
+ |
+- (id)init; |
+{ |
+ if ([super init] == nil) |
+ return nil; |
+ |
+ frameworkNamesByClassName = [[NSMutableDictionary alloc] init]; |
+ frameworkNamesByProtocolName = [[NSMutableDictionary alloc] init]; |
+ frameworkName = nil; |
+ |
+ return self; |
+} |
+ |
+- (void)dealloc; |
+{ |
+ [frameworkNamesByClassName release]; |
+ [frameworkNamesByProtocolName release]; |
+ [frameworkName release]; |
+ |
+ [super dealloc]; |
+} |
+ |
+- (NSDictionary *)frameworkNamesByClassName; |
+{ |
+ return frameworkNamesByClassName; |
+} |
+ |
+- (NSDictionary *)frameworkNamesByProtocolName; |
+{ |
+ return frameworkNamesByProtocolName; |
+} |
+ |
+- (NSString *)frameworkName; |
+{ |
+ return frameworkName; |
+} |
+ |
+- (void)setFrameworkName:(NSString *)newFrameworkName; |
+{ |
+ if (newFrameworkName == frameworkName) |
+ return; |
+ |
+ [frameworkName release]; |
+ frameworkName = [newFrameworkName retain]; |
+} |
+ |
+- (void)willVisitObjectiveCProcessor:(CDObjectiveCProcessor *)anObjCSegment; |
+{ |
+ [self setFrameworkName:[[anObjCSegment machOFile] importBaseName]]; |
+} |
+ |
+- (void)willVisitClass:(CDOCClass *)aClass; |
+{ |
+ if (frameworkName != nil) { |
+ [frameworkNamesByClassName setObject:frameworkName forKey:[aClass name]]; |
+ } |
+} |
+ |
+- (void)willVisitProtocol:(CDOCProtocol *)aProtocol; |
+{ |
+ if (frameworkName != nil) { |
+ [frameworkNamesByProtocolName setObject:frameworkName forKey:[aProtocol name]]; |
+ } |
+} |
+ |
+@end |
Property changes on: class-dump/src/CDClassFrameworkVisitor.m |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |