Files
Marc Audy e5610adfd8 Merging //UE4/Dev-Main to Dev-Anim (//UE4/Dev-Anim) @ 4802313
#rb
#rnx
#lockdown Laurent.Delayen

[CL 4803512 by Marc Audy in Dev-Anim branch]
2019-01-24 15:32:49 -05:00

57 lines
1.2 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "HeaderProvider.h"
#include "UnrealHeaderTool.h"
#include "UnrealTypeDefinitionInfo.h"
#include "ClassMaps.h"
FHeaderProvider::FHeaderProvider(EHeaderProviderSourceType InType, FString&& InId)//, bool bInAutoInclude/* = false*/)
: Type(InType)
, Id(MoveTemp(InId))
, Cache(nullptr)
{
}
FUnrealSourceFile* FHeaderProvider::Resolve()
{
if (Type != EHeaderProviderSourceType::Resolved)
{
if (Type == EHeaderProviderSourceType::ClassName)
{
FName IdName(*Id);
for (const auto& Pair : GTypeDefinitionInfoMap)
{
if (Pair.Key->GetFName() == IdName)
{
Cache = &Pair.Value->GetUnrealSourceFile();
break;
}
}
}
else if (const TSharedRef<FUnrealSourceFile>* Source = GUnrealSourceFilesMap.Find(Id))
{
Cache = &Source->Get();
}
Type = EHeaderProviderSourceType::Resolved;
}
return Cache;
}
FString FHeaderProvider::ToString() const
{
return FString::Printf(TEXT("%s %s"), Type == EHeaderProviderSourceType::ClassName ? TEXT("class") : TEXT("file"), *Id);
}
const FString& FHeaderProvider::GetId() const
{
return Id;
}
bool operator==(const FHeaderProvider& A, const FHeaderProvider& B)
{
return A.Id == B.Id && A.Type == B.Type;
}