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

49 lines
1.7 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "ObjectBaseArchiveProxy.h"
#include "UnrealHeaderTool.h"
#include "UObject/ObjectMacros.h"
#include "UObject/UObjectBase.h"
#include "UHTMakefile.h"
FObjectBaseArchiveProxy::FObjectBaseArchiveProxy(FUHTMakefile& UHTMakefile, const UObjectBase* ObjectBase)
{
ObjectFlagsUint32 = static_cast<uint32>(ObjectBase->GetFlags());
ClassIndex = UHTMakefile.GetClassIndex(ObjectBase->GetClass());
Name = FNameArchiveProxy(UHTMakefile, ObjectBase->GetFName());
OuterIndex = UHTMakefile.GetObjectIndex(ObjectBase->GetOuter());
}
UObjectBase* FObjectBaseArchiveProxy::CreateObjectBase(const FUHTMakefile& UHTMakefile) const
{
UObjectBase* ObjectBase = new UObjectBase(nullptr, EObjectFlags(ObjectFlagsUint32), EInternalObjectFlags::Native, nullptr, Name.CreateName(UHTMakefile));
PostConstruct(ObjectBase);
return ObjectBase;
}
void FObjectBaseArchiveProxy::Resolve(UObjectBase* ObjectBase, const FUHTMakefile& UHTMakefile) const
{
ObjectBase->ClassPrivate = UHTMakefile.GetClassByIndex(ClassIndex);
ObjectBase->OuterPrivate = UHTMakefile.GetObjectByIndex(OuterIndex);
}
void FObjectBaseArchiveProxy::AddReferencedNames(const UObjectBase* ObjectBase, FUHTMakefile& UHTMakefile)
{
UHTMakefile.AddName(ObjectBase->GetFName());
}
void FObjectBaseArchiveProxy::PostConstruct(UObjectBase* ObjectBase) const
{
ObjectBase->ObjectFlags = static_cast<EObjectFlags>(ObjectFlagsUint32);
}
FArchive& operator<<(FArchive& Ar, FObjectBaseArchiveProxy& ObjectBaseArchiveProxy)
{
Ar << ObjectBaseArchiveProxy.ObjectFlagsUint32;
Ar << ObjectBaseArchiveProxy.ClassIndex;
Ar << ObjectBaseArchiveProxy.Name;
Ar << ObjectBaseArchiveProxy.OuterIndex;
return Ar;
}