Index: class-dump/src/CDOCMethod.m |
=================================================================== |
--- class-dump/src/CDOCMethod.m (revision 0) |
+++ class-dump/src/CDOCMethod.m (revision 0) |
@@ -0,0 +1,128 @@ |
+// -*- 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 "CDOCMethod.h" |
+ |
+#import "CDClassDump.h" |
+#import "CDTypeFormatter.h" |
+#import "CDTypeParser.h" |
+#import "NSError-CDExtensions.h" |
+#import "CDTypeController.h" |
+ |
+@implementation CDOCMethod |
+ |
+- (id)init; |
+{ |
+ [NSException raise:@"RejectUnusedImplementation" format:@"-initWithName:type:imp: is the designated initializer"]; |
+ return nil; |
+} |
+ |
+- (id)initWithName:(NSString *)aName type:(NSString *)aType imp:(NSUInteger)anImp; |
+{ |
+ if ([self initWithName:aName type:aType] == nil) |
+ return nil; |
+ |
+ [self setImp:anImp]; |
+ |
+ return self; |
+} |
+ |
+- (id)initWithName:(NSString *)aName type:(NSString *)aType; |
+{ |
+ if ([super init] == nil) |
+ return nil; |
+ |
+ name = [aName retain]; |
+ type = [aType retain]; |
+ imp = 0; |
+ |
+ hasParsedType = NO; |
+ parsedMethodTypes = nil; |
+ |
+ return self; |
+} |
+ |
+- (void)dealloc; |
+{ |
+ [name release]; |
+ [type release]; |
+ |
+ [parsedMethodTypes release]; |
+ |
+ [super dealloc]; |
+} |
+ |
+- (NSString *)name; |
+{ |
+ return name; |
+} |
+ |
+- (NSString *)type; |
+{ |
+ return type; |
+} |
+ |
+- (NSUInteger)imp; |
+{ |
+ return imp; |
+} |
+ |
+- (void)setImp:(NSUInteger)newValue; |
+{ |
+ imp = newValue; |
+} |
+ |
+- (NSArray *)parsedMethodTypes; |
+{ |
+ if (hasParsedType == NO) { |
+ CDTypeParser *parser; |
+ NSError *error; |
+ |
+ parser = [[CDTypeParser alloc] initWithType:type]; |
+ parsedMethodTypes = [[parser parseMethodType:&error] retain]; |
+ if (parsedMethodTypes == nil) |
+ NSLog(@"Warning: Parsing method types failed, %@", name); |
+ [parser release]; |
+ hasParsedType = YES; |
+ } |
+ |
+ return parsedMethodTypes; |
+} |
+ |
+- (NSString *)description; |
+{ |
+ return [NSString stringWithFormat:@"[%@] name: %@, type: %@, imp: 0x%016lx", |
+ NSStringFromClass([self class]), name, type, imp]; |
+} |
+ |
+- (void)appendToString:(NSMutableString *)resultString typeController:(CDTypeController *)typeController symbolReferences:(CDSymbolReferences *)symbolReferences; |
+{ |
+ NSString *formattedString; |
+ |
+ formattedString = [[typeController methodTypeFormatter] formatMethodName:name type:type symbolReferences:symbolReferences]; |
+ if (formattedString != nil) { |
+ [resultString appendString:formattedString]; |
+ [resultString appendString:@";"]; |
+ if ([typeController shouldShowMethodAddresses] && imp != 0) { |
+ if ([typeController targetArchUses64BitABI]) |
+ [resultString appendFormat:@"\t// IMP=0x%016lx", imp]; |
+ else |
+ [resultString appendFormat:@"\t// IMP=0x%08lx", imp]; |
+ } |
+ } else |
+ [resultString appendFormat:@" // Error parsing type: %@, name: %@", type, name]; |
+} |
+ |
+- (NSComparisonResult)ascendingCompareByName:(CDOCMethod *)otherMethod; |
+{ |
+ return [name compare:[otherMethod name]]; |
+} |
+ |
+- (id)copyWithZone:(NSZone *)zone; |
+{ |
+ return [[CDOCMethod alloc] initWithName:name type:type imp:imp]; |
+} |
+ |
+@end |
Property changes on: class-dump/src/CDOCMethod.m |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |