class-dump/CDType.h
Steve Nygard a16202812d Changes to support "id <MyProtocol>" types that appear in Leopard. We now
have a quoted string token in the lexer (so we can easily peek past it for
another double quote, as happens in structures with member names).

Right now the adopted protocols is just a string, but we should check to see
if multiple protocols can occur, and if so split the string between commas
and use a list instead.
2006-10-12 05:42:07 +00:00

77 lines
2.6 KiB
Objective-C

// 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-2005 Steve Nygard
#import <Foundation/NSObject.h>
#import "CDStructureRegistrationProtocol.h"
@class NSArray, NSString;
@class CDSymbolReferences, CDTypeFormatter, CDTypeName;
@interface CDType : NSObject
{
int type;
NSString *protocols;
CDType *subtype;
CDTypeName *typeName;
NSArray *members;
NSString *bitfieldSize;
NSString *arraySize;
NSString *variableName;
}
- (id)init;
- (id)initSimpleType:(int)aTypeCode;
- (id)initIDType:(CDTypeName *)aName;
- (id)initIDTypeWithProtocols:(NSString *)someProtocols;
- (id)initNamedType:(CDTypeName *)aName;
- (id)initStructType:(CDTypeName *)aName members:(NSArray *)someMembers;
- (id)initUnionType:(CDTypeName *)aName members:(NSArray *)someMembers;
- (id)initBitfieldType:(NSString *)aBitfieldSize;
- (id)initArrayType:(CDType *)aType count:(NSString *)aCount;
- (id)initPointerType:(CDType *)aType;
- (id)initModifier:(int)aModifier type:(CDType *)aType;
- (void)dealloc;
- (NSString *)variableName;
- (void)setVariableName:(NSString *)newVariableName;
- (int)type;
- (BOOL)isIDType;
- (CDType *)subtype;
- (CDTypeName *)typeName;
- (NSArray *)members;
- (void)setMembers:(NSArray *)newMembers;
- (int)typeIgnoringModifiers;
- (NSString *)description;
- (NSString *)formattedString:(NSString *)previousName formatter:(CDTypeFormatter *)typeFormatter level:(int)level symbolReferences:(CDSymbolReferences *)symbolReferences;
- (NSString *)formattedStringForMembersAtLevel:(int)level formatter:(CDTypeFormatter *)typeFormatter symbolReferences:(CDSymbolReferences *)symbolReferences;
- (NSString *)formattedStringForSimpleType;
- (NSString *)typeString;
- (NSString *)bareTypeString;
- (NSString *)keyTypeString;
- (NSString *)_typeStringWithVariableNamesToLevel:(int)level;
- (NSString *)_typeStringForMembersWithVariableNamesToLevel:(int)level;
- (void)phase:(int)phase registerStructuresWithObject:(id <CDStructureRegistration>)anObject usedInMethod:(BOOL)isUsedInMethod;
- (void)phase1RegisterStructuresWithObject:(id <CDStructureRegistration>)anObject;
- (void)phase2RegisterStructuresWithObject:(id <CDStructureRegistration>)anObject
usedInMethod:(BOOL)isUsedInMethod
countReferences:(BOOL)shouldCountReferences;
- (BOOL)isEqual:(CDType *)otherType;
- (BOOL)isBasicallyEqual:(CDType *)otherType;
- (BOOL)isStructureEqual:(CDType *)otherType;
- (void)mergeWithType:(CDType *)otherType;
- (void)generateMemberNames;
@end