Files
UnrealEngineUWP/Engine/Source/Programs/UnrealHeaderTool/Private/UHTMakefile/PackageArchiveProxy.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

53 lines
1.7 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "PackageArchiveProxy.h"
#include "UnrealHeaderTool.h"
#include "UObject/Package.h"
#include "Templates/Casts.h"
FPackageArchiveProxy::FPackageArchiveProxy(FUHTMakefile& UHTMakefile, UPackage* Package)
: FObjectBaseArchiveProxy(UHTMakefile, Package)
{
PackageFlags = Package->GetPackageFlags();
MetadataArchiveProxy = FMetadataArchiveProxy(UHTMakefile, Package->GetMetaData());
}
FArchive& operator<<(FArchive& Ar, FPackageArchiveProxy& PackageArchiveProxy)
{
Ar << static_cast<FObjectBaseArchiveProxy&>(PackageArchiveProxy);
Ar << PackageArchiveProxy.PackageFlags;
Ar << PackageArchiveProxy.MetadataArchiveProxy;
return Ar;
}
void FPackageArchiveProxy::AddReferencedNames(UPackage* Package, FUHTMakefile& UHTMakefile)
{
FObjectBaseArchiveProxy::AddReferencedNames(Package, UHTMakefile);
FMetadataArchiveProxy::AddReferencedNames(Package->GetMetaData(), UHTMakefile);
}
void FPackageArchiveProxy::Resolve(UPackage* Package, const FUHTMakefile& UHTMakefile) const
{
FObjectBaseArchiveProxy::Resolve(Package, UHTMakefile);
MetadataArchiveProxy.Resolve(Package->GetMetaData(), UHTMakefile);
}
UPackage* FPackageArchiveProxy::CreatePackage(const FUHTMakefile& UHTMakefile)
{
FName PackageName = Name.CreateName(UHTMakefile);
UPackage* Package = Cast<UPackage>(StaticFindObjectFast(UPackage::StaticClass(), nullptr, PackageName, false, false));
if (!Package)
{
Package = ::CreatePackage(nullptr, *PackageName.ToString());
}
PostConstruct(Package);
return Package;
}
void FPackageArchiveProxy::PostConstruct(UPackage* Package) const
{
FObjectBaseArchiveProxy::PostConstruct(Package);
Package->SetPackageFlagsTo(PackageFlags);
}