blob: 37b3438fa7301d9fee27ffa35ab59a0050e568cc [file] [log] [blame]
// -*- mode: ObjC -*-
// This file is part of class-dump, a utility for examining the Objective-C segment of Mach-O files.
// Copyright (C) 1997-2019 Steve Nygard.
@class CDType, CDTypeController, CDTypeFormatter;
@interface CDStructureTable : NSObject
@property (strong) NSString *identifier;
@property (strong) NSString *anonymousBaseName;
@property (assign) BOOL shouldDebug;
@property (weak) CDTypeController *typeController;
// Phase 0
- (void)phase0RegisterStructure:(CDType *)structure usedInMethod:(BOOL)isUsedInMethod;
- (void)finishPhase0;
// Phase 1
- (void)runPhase1;
- (void)phase1RegisterStructure:(CDType *)structure;
- (void)finishPhase1;
@property (nonatomic, readonly) NSUInteger phase1_maxDepth;
// Phase 2
- (void)runPhase2AtDepth:(NSUInteger)depth;
- (CDType *)phase2ReplacementForType:(CDType *)type;
- (void)finishPhase2;
// Phase 3
- (void)phase2ReplacementOnPhase0;
- (void)buildPhase3Exceptions;
- (void)runPhase3;
- (void)phase3RegisterStructure:(CDType *)structure
count:(NSUInteger)referenceCount
usedInMethod:(BOOL)isUsedInMethod;
- (void)finishPhase3;
- (CDType *)phase3ReplacementForType:(CDType *)type;
// Other
// Called by CDTypeController prior to calling the next two methods.
- (void)generateTypedefNames;
- (void)generateMemberNames;
// Called by CDTypeController
- (void)appendNamedStructuresToString:(NSMutableString *)resultString
formatter:(CDTypeFormatter *)typeFormatter
markName:(NSString *)markName;
// Called by CDTypeController
- (void)appendTypedefsToString:(NSMutableString *)resultString
formatter:(CDTypeFormatter *)typeFormatter
markName:(NSString *)markName;
- (BOOL)shouldExpandType:(CDType *)type;
- (NSString *)typedefNameForType:(CDType *)type;
// Debugging
- (void)debugName:(NSString *)name;
- (void)debugAnon:(NSString *)str;
- (void)logPhase0Info;
- (void)logPhase2Info;
- (void)logPhase3Info;
@end