// -*- 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.

#import "CDOCClassReference.h"
#import "CDOCClass.h"
#import "CDSymbol.h"

@implementation CDOCClassReference

- (instancetype)initWithClassSymbol:(CDSymbol *)symbol;
{
    if ((self = [super init])) {
        _classSymbol = symbol;
    }

    return self;
}

- (instancetype)initWithClassObject:(CDOCClass *)classObject;
{
    if ((self = [super init])) {
        _classObject = classObject;
    }

    return self;
}

- (instancetype)initWithClassName:(NSString *)className;
{
    if ((self = [super init])) {
        _className = [className copy];
    }

    return self;
}

- (NSString *)className;
{
    if (_className != nil)
        return _className;
    else if (_classObject != nil)
        return [_classObject name];
    else if (_classSymbol != nil)
        return [CDSymbol classNameFromSymbolName:[_classSymbol name]];
    else
        return nil;
}

- (BOOL)isExternalClass;
{
    return (!_classObject && (!_classSymbol || [_classSymbol isExternal]));
}

@end
