// Copyright Epic Games, Inc. All Rights Reserved. #include "ClassMaps.h" #include "UnrealHeaderTool.h" #include "UnrealTypeDefinitionInfo.h" FUnrealSourceFiles GUnrealSourceFilesMap; FTypeDefinitionInfoMap GTypeDefinitionInfoMap; TMap> GPackageSingletons; FCriticalSection GPackageSingletonsCriticalSection; FPublicSourceFileSet GPublicSourceFileSet; TMap GArrayDimensions; TMap GPackageToManifestModuleMap; TMap GGeneratedCodeHashes; FRWLock GGeneratedCodeHashesLock; TMap GEnumUnderlyingTypes; FClassDeclarations GClassDeclarations; TSet GUnsizedProperties; TSet GEditorOnlyDataTypes; TMap, int32>> GStructToSourceLine; TMap GClassSerializerMap; TSet GPropertyUsesMemoryImageAllocator; void FClassDeclarations::AddIfMissing(FName Name, TUniqueFunction()>&& DeclConstructFunc) { FRWScopeLock Lock(ClassDeclLock, SLT_Write); if (!ClassDeclarations.Contains(Name)) { TSharedRef ClassDecl = DeclConstructFunc(); ClassDeclarations.Add(Name, MoveTemp(ClassDecl)); } } FClassDeclarationMetaData* FClassDeclarations::Find(FName Name) { FRWScopeLock Lock(ClassDeclLock, SLT_ReadOnly); if (TSharedRef* ClassDecl = ClassDeclarations.Find(Name)) { return &ClassDecl->Get(); } return nullptr; } FClassDeclarationMetaData& FClassDeclarations::FindChecked(FName Name) { FRWScopeLock Lock(ClassDeclLock, SLT_ReadOnly); return ClassDeclarations.FindChecked(Name).Get(); }