FClassArchiveProxy::FClassArchiveProxy(FUHTMakefile& UHTMakefile, const UClass* Class) : FStructArchiveProxy(UHTMakefile, Class) { ClassUnique = Class->ClassUnique; ClassFlags = Class->ClassFlags; ClassCastFlags = Class->ClassCastFlags; ClassWithinIndex = UHTMakefile.GetClassIndex(Class->ClassWithin); ClassGeneratedByIndex = UHTMakefile.GetObjectIndex(Class->ClassGeneratedBy); ClassConfigName = FNameArchiveProxy(UHTMakefile, Class->ClassConfigName); bCooked = Class->bCooked; ClassReps.Empty(Class->ClassReps.Num()); for (FRepRecord RepRecord : Class->ClassReps) { ClassReps.Add(FRepRecordArchiveProxy(UHTMakefile, RepRecord)); } NetFields.Empty(Class->NetFields.Num()); for (UField* Field : Class->NetFields) { NetFields.Add(UHTMakefile.GetFieldIndex(Field)); } FuncMap.Empty(Class->FuncMap.Num()); for (auto& Kvp : Class->FuncMap) { FuncMap.Add(TPairInitializer<FNameArchiveProxy, int32>(FNameArchiveProxy(UHTMakefile, Kvp.Key), UHTMakefile.GetFunctionIndex(Kvp.Value))); } Interfaces.Empty(Class->Interfaces.Num()); for (FImplementedInterface ImplementedInterface : Class->Interfaces) { Interfaces.Add(FImplementedInterfaceArchiveProxy(UHTMakefile, ImplementedInterface)); } }
FObjectBaseArchiveProxy::FObjectBaseArchiveProxy(FUHTMakefile& UHTMakefile, const UObjectBase* ObjectBase) { ObjectFlagsUint32 = static_cast<uint32>(ObjectBase->ObjectFlags); ClassIndex = UHTMakefile.GetClassIndex(ObjectBase->Class); Name = FNameArchiveProxy(UHTMakefile, ObjectBase->Name); OuterIndex = UHTMakefile.GetObjectIndex(ObjectBase->Outer); }
void FClassArchiveProxy::Resolve(UClass* Class, const FUHTMakefile& UHTMakefile) const { FStructArchiveProxy::Resolve(Class, UHTMakefile); Class->SetSuperStruct(UHTMakefile.GetStructByIndex(SuperStructIndex)); Class->ClassWithin = UHTMakefile.GetClassByIndex(ClassWithinIndex); Class->ClassGeneratedBy = UHTMakefile.GetObjectByIndex(ClassGeneratedByIndex); Class->NetFields.Empty(NetFields.Num()); for (FSerializeIndex FieldIndex : NetFields) { Class->NetFields.Add(UHTMakefile.GetFieldByIndex(FieldIndex)); } Class->FuncMap.Empty(FuncMap.Num()); for (auto& Kvp : FuncMap) { Class->FuncMap.Add(Kvp.Key.CreateName(UHTMakefile), UHTMakefile.GetFunctionByIndex(Kvp.Value)); } Class->Interfaces.Empty(Interfaces.Num()); for (FImplementedInterfaceArchiveProxy ImplementedInterfaceArchiveProxy : Interfaces) { FImplementedInterface ImplementedInterface = ImplementedInterfaceArchiveProxy.CreateImplementedInterface(UHTMakefile); ImplementedInterfaceArchiveProxy.Resolve(ImplementedInterface, UHTMakefile); Class->Interfaces.Add(ImplementedInterface); } Class->ClassConfigName = ClassConfigName.CreateName(UHTMakefile); }
void FClassArchiveProxy::AddReferencedNames(const UClass* Class, FUHTMakefile& UHTMakefile) { FStructArchiveProxy::AddReferencedNames(Class, UHTMakefile); UHTMakefile.AddName(Class->ClassConfigName); for (auto& Kvp : Class->FuncMap) { UHTMakefile.AddName(Kvp.Key); } }
void FScopeArchiveProxy::Resolve(FScope* Scope, const FUHTMakefile& UHTMakefile) const { Scope->Parent = UHTMakefile.GetScopeByIndex(ParentIndex); for (auto& Kvp : TypeMap) { FName Name = Kvp.Key.CreateName(UHTMakefile); UField* Field = UHTMakefile.GetFieldByIndex(Kvp.Value); Scope->TypeMap.Add(Name, Field); } }
void FScopeArchiveProxy::AddReferencedNames(const FScope* Scope, FUHTMakefile& UHTMakefile) { for (auto& Kvp : Scope->TypeMap) { UHTMakefile.AddName(Kvp.Key); } }
FScopeArchiveProxy::FScopeArchiveProxy(const FUHTMakefile& UHTMakefile, const FScope* Scope) { ParentIndex = UHTMakefile.GetScopeIndex(Scope->GetParent()); for (auto& Kvp : Scope->TypeMap) { TypeMap.Add(TPairInitializer<FNameArchiveProxy, FSerializeIndex>(FNameArchiveProxy(UHTMakefile, Kvp.Key), UHTMakefile.GetFieldIndex(Kvp.Value))); } }
void FEnumArchiveProxy::AddReferencedNames(const UEnum* Enum, FUHTMakefile& UHTMakefile) { FFieldArchiveProxy::AddReferencedNames(Enum, UHTMakefile); for (int32 i = 0; i < Enum->NumEnums(); ++i) { UHTMakefile.AddName(Enum->GetNameByIndex(i)); } }
void FObjectBaseArchiveProxy::AddReferencedNames(const UObjectBase* ObjectBase, FUHTMakefile& UHTMakefile) { UHTMakefile.AddName(ObjectBase->Name); }
void FObjectBaseArchiveProxy::Resolve(UObjectBase* ObjectBase, const FUHTMakefile& UHTMakefile) const { ObjectBase->Class = UHTMakefile.GetClassByIndex(ClassIndex); ObjectBase->Outer = UHTMakefile.GetObjectByIndex(OuterIndex); }
FFieldArchiveProxy::FFieldArchiveProxy(FUHTMakefile& UHTMakefile, const UField* Field) : FObjectBaseArchiveProxy(UHTMakefile, Field) { NextIndex = UHTMakefile.GetFieldIndex(Field->Next); }
void FFieldArchiveProxy::Resolve(UField* Field, const FUHTMakefile& UHTMakefile) const { FObjectBaseArchiveProxy::Resolve(Field, UHTMakefile); Field->Next = UHTMakefile.GetFieldByIndex(NextIndex); }