Files
UnrealEngineUWP/Engine/Source/Programs/UnrealHeaderTool/Private/ClassDeclarationMetaData.h
marc audy 96792bfd40 UHT optimizations part 2 - Class Metadata improvements
* Added a sorted specifier list to reduce string compares when evaluating metadata tags
* Use move semantices where possible
* Use RemoveSwap instead of Remove when processing show/hide metadata tags. Generated code can change as a result of hide/show tag order changing.
#jira
#rnx


#ROBOMERGE-SOURCE: CL 10872240 via CL 10872241 via CL 10872242
#ROBOMERGE-BOT: (v620-10870533)

[CL 10872243 by marc audy in Main branch]
2019-12-30 16:29:04 -05:00

73 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/NameTypes.h"
#include "Containers/Map.h"
#include "UObject/Class.h"
class FClass;
class FClasses;
struct FPropertySpecifier;
/** Structure that holds class meta data generated from its UCLASS declaration */
class FClassDeclarationMetaData
{
public:
FClassDeclarationMetaData();
EClassFlags ClassFlags;
TMap<FName, FString> MetaData;
FString ClassWithin;
FString ConfigName;
TArray<FString> HideCategories;
TArray<FString> ShowSubCatgories;
TArray<FString> HideFunctions;
TArray<FString> AutoExpandCategories;
TArray<FString> AutoCollapseCategories;
TArray<FString> DependsOn;
TArray<FString> ClassGroupNames;
TArray<FString> SparseClassDataTypes;
/**
* Parse Class's properties to generate its declaration data.
*
* @param InClassSpecifiers Class properties collected from its UCLASS macro
* @param InRequiredAPIMacroIfPresent *_API macro if present (empty otherwise)
* @param OutClassData Parsed class meta data
*/
void ParseClassProperties(TArray<FPropertySpecifier>&& InClassSpecifiers, const FString& InRequiredAPIMacroIfPresent);
/**
* Merges all category properties with the class which at this point only has its parent propagated categories
*
* @param Class Class to merge categories for
*/
void MergeClassCategories(FClass* Class);
/**
* Merges all class flags and validates them
*
* @param DeclaredClassName Name this class was declared with (for validation)
* @param PreviousClassFlags Class flags before resetting the class (for validation)
* @param Class Class to merge flags for
* @param AllClasses All known classes
*/
void MergeAndValidateClassFlags(const FString& DeclaredClassName, uint32 PreviousClassFlags, FClass* Class, const FClasses& AllClasses);
private:
/** Merges all 'show' categories */
void MergeShowCategories();
/** Sets and validates 'within' property */
void SetAndValidateWithinClass(FClass* Class, const FClasses& AllClasses);
/** Sets and validates 'ConfigName' property */
void SetAndValidateConfigName(FClass* Class);
TArray<FString> ShowCategories;
TArray<FString> ShowFunctions;
TArray<FString> DontAutoCollapseCategories;
bool WantsToBePlaceable;
};