mirror of
https://github.com/darlinghq/class-dump.git
synced 2024-11-27 06:10:25 +00:00
129 lines
3.1 KiB
Objective-C
129 lines
3.1 KiB
Objective-C
//
|
|
// $Id: ObjcProtocol.m,v 1.1 1999/07/31 03:32:26 nygard Exp $
|
|
//
|
|
|
|
//
|
|
// This file is a part of class-dump v2, a utility for examining the
|
|
// Objective-C segment of Mach-O files.
|
|
// Copyright (C) 1997 Steve Nygard
|
|
//
|
|
// This program is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
//
|
|
// You may contact the author by:
|
|
// e-mail: nygard@telusplanet.net
|
|
//
|
|
|
|
#import "ObjcProtocol.h"
|
|
#if NS_TARGET_MAJOR < 4
|
|
#import <foundation/NSUtilities.h>
|
|
#endif
|
|
#import <stdio.h>
|
|
|
|
@implementation ObjcProtocol
|
|
|
|
- initWithProtocolName:(NSString *)protocolName
|
|
{
|
|
if ([super init] == nil)
|
|
return nil;
|
|
|
|
protocol_name = [protocolName retain];
|
|
protocol_names = [[NSMutableArray array] retain];
|
|
protocol_methods = [[NSMutableArray array] retain];
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void) dealloc
|
|
{
|
|
[protocol_name release];
|
|
[protocol_names release];
|
|
[protocol_methods release];
|
|
|
|
[super dealloc];
|
|
}
|
|
|
|
- (NSString *) protocolName
|
|
{
|
|
return protocol_name;
|
|
}
|
|
|
|
- (NSString *) sortableName
|
|
{
|
|
return protocol_name;
|
|
}
|
|
|
|
- (void) addProtocolNames:(NSArray *)newProtocolNames
|
|
{
|
|
[protocol_names addObjectsFromArray:newProtocolNames];
|
|
}
|
|
|
|
- (void) addProtocolMethod:(ObjcMethod *)newMethod
|
|
{
|
|
[protocol_methods addObject:newMethod];
|
|
}
|
|
|
|
- (void) addProtocolMethods:(NSArray *)newProtocolMethods
|
|
{
|
|
[protocol_methods addObjectsFromArray:newProtocolMethods];
|
|
}
|
|
|
|
- (void) showDefinition:(int)flags
|
|
{
|
|
NSEnumerator *enumerator;
|
|
ObjcMethod *method;
|
|
NSString *protocolName;
|
|
|
|
printf ("@protocol %s", [protocol_name cString]);
|
|
|
|
if ([protocol_names count] > 0)
|
|
{
|
|
enumerator = [protocol_names objectEnumerator];
|
|
printf (" <");
|
|
protocolName = [enumerator nextObject];
|
|
if (protocolName != nil)
|
|
{
|
|
printf ("%s", [protocolName cString]);
|
|
|
|
while (protocolName = [enumerator nextObject])
|
|
{
|
|
printf (", %s", [protocolName cString]);
|
|
}
|
|
}
|
|
|
|
printf (">");
|
|
}
|
|
|
|
printf ("\n");
|
|
|
|
if (flags & F_SORT_METHODS)
|
|
enumerator = [[protocol_methods sortedArrayUsingSelector:@selector (orderByMethodName:)] objectEnumerator];
|
|
else
|
|
enumerator = [protocol_methods objectEnumerator];
|
|
|
|
while (method = [enumerator nextObject])
|
|
{
|
|
[method showMethod:'-'];
|
|
if (flags & F_SHOW_METHOD_ADDRESS)
|
|
{
|
|
printf ("\t// IMP=0x%08lx", [method address]);
|
|
}
|
|
printf ("\n");
|
|
}
|
|
|
|
printf ("@end\n\n");
|
|
}
|
|
|
|
@end
|