Files
UnrealEngineUWP/Engine/Source/Programs/UnrealHeaderTool/Private/UHTMakefile/UHTMakefileModuleDescriptor.cpp
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

84 lines
2.2 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "UHTMakefileModuleDescriptor.h"
#include "UnrealHeaderTool.h"
#include "UHTMakefile.h"
#include "ClassMaps.h"
void FUHTMakefileModuleDescriptor::SetPackageIndex(int32 Index)
{
PackageIndex = Index;
UHTMakefile->AddObject(ESerializedObjectType::EPackage, Index);
}
void FUHTMakefileModuleDescriptor::LoadModuleData(const FManifestModule& ManifestModule, EUHTMakefileLoadingPhase UHTMakefileLoadingPhase)
{
if (UHTMakefileLoadingPhase == EUHTMakefileLoadingPhase::Preload)
{
UHTMakefile->CreatePackage(GetPackageIndex());
}
for (int32 Index : HeadersOrder[+UHTMakefileLoadingPhase])
{
if (UHTMakefileLoadingPhase == EUHTMakefileLoadingPhase::Preload)
{
HeaderDescriptors[Index].SetMakefile(UHTMakefile);
}
HeaderDescriptors[Index].CreateObjects(UHTMakefileLoadingPhase);
}
if (UHTMakefileLoadingPhase == EUHTMakefileLoadingPhase::Load)
{
UHTMakefile->ResolvePackage(PackageIndex);
}
for (int32 Index : HeadersOrder[+UHTMakefileLoadingPhase])
{
HeaderDescriptors[Index].ResolveObjects(UHTMakefileLoadingPhase);
}
if (UHTMakefileLoadingPhase == EUHTMakefileLoadingPhase::Preload)
{
GPackageToManifestModuleMap.Add(UHTMakefile->GetPackageByIndex(GetPackageIndex()), &ManifestModule);
}
}
void FUHTMakefileModuleDescriptor::AddToHeaderOrder(FUnrealSourceFile* SourceFile)
{
if (SourceFile->GetPackage() != Package)
{
return;
}
int32 SourceFileIndex = UHTMakefile->GetUnrealSourceFileIndex(SourceFile);
TArray<int32>& CurrentHeadersOrder = HeadersOrder[+LoadingPhase];
checkSlow(!CurrentHeadersOrder.Contains(SourceFileIndex));
CurrentHeadersOrder.Add(SourceFileIndex);
}
void FUHTMakefileModuleDescriptor::Reset()
{
PackageIndex = INDEX_NONE;
HeadersOrder.Reset();
HeadersOrder.AddDefaulted(+EUHTMakefileLoadingPhase::Max);
LoadingPhase = EUHTMakefileLoadingPhase::Preload;
UHTMakefile = nullptr;
Package = nullptr;
for (auto& Kvp : HeaderDescriptors)
{
Kvp.Value.Reset();
}
HeaderDescriptors.Empty();
}
FArchive& operator<<(FArchive& Ar, FUHTMakefileModuleDescriptor& UHTMakefileModuleDescriptor)
{
Ar << UHTMakefileModuleDescriptor.PackageIndex;
Ar << UHTMakefileModuleDescriptor.HeaderDescriptors;
Ar << UHTMakefileModuleDescriptor.HeadersOrder;
return Ar;
}