Files
UnrealEngineUWP/Engine/Source/Programs/UnrealHeaderTool/Private/ParserClass.h
marc audy f88c49cee3 UHT optimizations part 4 - Improve HeaderParser times by ~35%
* FToken now lazily initializes FName version when needed
* FToken now avoids string compares when matching single character symbols and requires that case sensitivity be specified for matching identifiers
* FClass now maintains a type package name map rather than reconstructing package name repeatedly
* HeaderParser now avoids name lookups, avoids case insensitive string compares, and uses move semantics whenever possible
#rb
#jira
#rnx


#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 10872843 via CL 10872844 via CL 10872845
#ROBOMERGE-BOT: (v623-10872670)

[CL 10872857 by marc audy in Main branch]
2019-12-31 16:09:30 -05:00

72 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Class.h"
#include "UObject/Field.h"
class UField;
struct EEnforceInterfacePrefix
{
enum Type
{
None,
I,
U
};
};
class FClasses;
class FClass : public UClass
{
public:
FClass();
/**
* Returns the name of the given class with a valid prefix.
*
* @param InClass Class used to create a valid class name with prefix
*/
FString GetNameWithPrefix(EEnforceInterfacePrefix::Type EnforceInterfacePrefix = EEnforceInterfacePrefix::None) const;
/**
* Returns the super class of this class, or NULL if there is no superclass.
*
* @return The super class of this class.
*/
FClass* GetSuperClass() const;
/**
* Returns the 'within' class of this class.
*
* @return The 'within' class of this class.
*/
FClass* GetClassWithin() const;
TArray<FClass*> GetInterfaceTypes() const;
void GetHideCategories(TArray<FString>& OutHideCategories) const;
void GetShowCategories(TArray<FString>& OutShowCategories) const;
void GetSparseClassDataTypes(TArray<FString>& OutSparseClassDataTypes) const;
/** Helper function that checks if the field is a dynamic type (can be constructed post-startup) */
template <typename T>
static bool IsDynamic(const T* Field)
{
return Field->HasMetaData(NAME_ReplaceConverted);
}
/** Helper function that checks if the field is belongs to a dynamic type */
static bool IsOwnedByDynamicType(const UField* Field);
static bool IsOwnedByDynamicType(const FField* Field);
/** Helper function to get the source replaced package name */
static const FString& GetTypePackageName(const UField* Field);
static const FString& GetTypePackageName(const FField* Field);
static const FName NAME_ReplaceConverted;
};