UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NameTypes.h File Reference

Go to the source code of this file.

Classes

struct  FClangKeepDebugInfo
 
struct  FNameEntryId
 
struct  FNameEntryHeader
 
struct  FNameEntry
 
struct  FNameEntrySerialized
 
struct  FMinimalName
 
struct  FScriptName
 
struct  FMemoryImageName
 
class  FName
 
struct  TIsZeroConstructType< class FName >
 
struct  TIsPODType< FName >
 
struct  FNameFastLess
 
struct  FNameLexicalLess
 
struct  FNameDebugVisualizer
 
class  FLazyName
 
class  FDisplayNameEntryId
 
class  FNameBuilder
 
struct  TIsContiguousContainer< FNameBuilder >
 

Namespaces

namespace  UE
 
namespace  UE::Core
 
namespace  UE::Core::Private
 implementation
 
namespace  Freeze
 

Macros

#define WITH_CASE_PRESERVING_NAME   WITH_EDITORONLY_DATA
 
#define UE_FNAME_OUTLINE_NUMBER   0
 
#define UE_FNAME_ENTRY_ALIGNMENT   0
 
#define checkName   checkSlow
 
#define NAME_NO_NUMBER_INTERNAL   0
 
#define NAME_INTERNAL_TO_EXTERNAL(x)   (x - 1)
 
#define NAME_EXTERNAL_TO_INTERNAL(x)   (x + 1)
 
#define NAME_NO_NUMBER   NAME_INTERNAL_TO_EXTERNAL(NAME_NO_NUMBER_INTERNAL)
 
#define SUBOBJECT_DELIMITER_ANSI   ":"
 
#define SUBOBJECT_DELIMITER   TEXT(SUBOBJECT_DELIMITER_ANSI)
 
#define SUBOBJECT_DELIMITER_CHAR_ANSI   ':'
 
#define SUBOBJECT_DELIMITER_CHAR   TEXT(SUBOBJECT_DELIMITER_CHAR_ANSI)
 
#define INVALID_NAME_CHARACTERS   TEXT("\"' ,\n\r\t")
 
#define INVALID_OBJECTNAME_CHARACTERS   TEXT("\"' ,/.:|&!~\n\r\t@#(){}[]=;^%$`")
 
#define INVALID_OBJECTPATH_CHARACTERS   TEXT("\"' ,|&!~\n\r\t@#(){}[]=;^%$`")
 
#define INVALID_LONGPACKAGE_CHARACTERS   TEXT("\\:*?\"<>|' ,.&!~\n\r\t@#")
 
#define VALID_SAVEDDIRSUFFIX_CHARACTERS   TEXT("_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
 
#define NAMED_PAK_CHUNK_DELIMITER_CHAR   TEXT('-')
 

Typedefs

typedef FNameEntryId NAME_INDEX
 

Enumerations

enum  { NAME_SIZE = 1024 }
 
enum class  ENameCase : uint8 { CaseSensitive , IgnoreCase }
 
enum  ELinkerNameTableConstructor { ENAME_LinkerConstructor }
 
enum  EFindName { FNAME_Find , FNAME_Add }
 

Functions

CORE_API void Freeze::ApplyMemoryImageNamePatch (void *NameDst, const FMemoryImageName &Name, const FPlatformTypeLayoutParameters &LayoutParams)
 
CORE_API void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, const FMemoryImageName &Object, const FTypeLayoutDesc &)
 
CORE_API uint32 Freeze::IntrinsicUnfrozenCopy (const FMemoryUnfreezeContent &Context, const FMemoryImageName &Object, void *OutDst)
 
 Expose_TNameOf (FName) namespace Freeze
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (FMemoryImageName)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (FScriptName)
 
FORCEINLINE FName MinimalNameToName (FMinimalName InName)
 
FORCEINLINE FName ScriptNameToName (FScriptName InName)
 
FORCEINLINE FMinimalName NameToMinimalName (FName InName)
 
FORCEINLINE FScriptName NameToScriptName (FName InName)
 
CORE_API FString LexToString (const FName &Name)
 
FORCEINLINE void LexFromString (FName &Name, const TCHAR *Str)
 
FWideStringBuilderBaseoperator<< (FWideStringBuilderBase &Builder, const FName &Name)
 
FUtf8StringBuilderBaseoperator<< (FUtf8StringBuilderBase &Builder, const FName &Name)
 
CORE_API FWideStringBuilderBaseoperator<< (FWideStringBuilderBase &Builder, FNameEntryId Id)
 
CORE_API FUtf8StringBuilderBaseoperator<< (FUtf8StringBuilderBase &Builder, FNameEntryId Id)
 
bool operator< (FName, FName)=delete
 
bool operator> (FName, FName)=delete
 
bool operator<= (FName, FName)=delete
 
bool operator>= (FName, FName)=delete
 
CORE_API void AppendHash (FBlake3 &Builder, FName In)
 

Macro Definition Documentation

◆ checkName

#define checkName   checkSlow

◆ INVALID_LONGPACKAGE_CHARACTERS

#define INVALID_LONGPACKAGE_CHARACTERS   TEXT("\\:*?\"<>|' ,.&!~\n\r\t@#")

These characters cannot be used in long package names

◆ INVALID_NAME_CHARACTERS

#define INVALID_NAME_CHARACTERS   TEXT("\"' ,\n\r\t")

These are the characters that cannot be used in general FNames

◆ INVALID_OBJECTNAME_CHARACTERS

#define INVALID_OBJECTNAME_CHARACTERS   TEXT("\"' ,/.:|&!~\n\r\t@#(){}[]=;^%$`")

These characters cannot be used in object names

◆ INVALID_OBJECTPATH_CHARACTERS

#define INVALID_OBJECTPATH_CHARACTERS   TEXT("\"' ,|&!~\n\r\t@#(){}[]=;^%$`")

These characters cannot be used in ObjectPaths, which includes both the package path and part after the first .

◆ NAME_EXTERNAL_TO_INTERNAL

#define NAME_EXTERNAL_TO_INTERNAL (   x)    (x + 1)

◆ NAME_INTERNAL_TO_EXTERNAL

#define NAME_INTERNAL_TO_EXTERNAL (   x)    (x - 1)

Conversion routines between external representations and internal

◆ NAME_NO_NUMBER

Special value for an FName with no number

◆ NAME_NO_NUMBER_INTERNAL

#define NAME_NO_NUMBER_INTERNAL   0

Externally, the instance number to represent no instance number is NAME_NO_NUMBER, but internally, we add 1 to indices, so we use this define internally for zero'd memory initialization will still make NAME_None as expected

◆ NAMED_PAK_CHUNK_DELIMITER_CHAR

#define NAMED_PAK_CHUNK_DELIMITER_CHAR   TEXT('-')

Delimiter used to distinguish when a named pak chunk starts and ends. When using named pak chunk this will be the character wrapping the name.

◆ SUBOBJECT_DELIMITER

#define SUBOBJECT_DELIMITER   TEXT(SUBOBJECT_DELIMITER_ANSI)

◆ SUBOBJECT_DELIMITER_ANSI

#define SUBOBJECT_DELIMITER_ANSI   ":"

this is the character used to separate a subobject root from its subobjects in a path name.

◆ SUBOBJECT_DELIMITER_CHAR

#define SUBOBJECT_DELIMITER_CHAR   TEXT(SUBOBJECT_DELIMITER_CHAR_ANSI)

◆ SUBOBJECT_DELIMITER_CHAR_ANSI

#define SUBOBJECT_DELIMITER_CHAR_ANSI   ':'

this is the character used to separate a subobject root from its subobjects in a path name, as a char

◆ UE_FNAME_ENTRY_ALIGNMENT

#define UE_FNAME_ENTRY_ALIGNMENT   0

◆ UE_FNAME_OUTLINE_NUMBER

#define UE_FNAME_OUTLINE_NUMBER   0

◆ VALID_SAVEDDIRSUFFIX_CHARACTERS

#define VALID_SAVEDDIRSUFFIX_CHARACTERS   TEXT("_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")

These characters can be used in relative directory names (lowercase versions as well)

◆ WITH_CASE_PRESERVING_NAME

#define WITH_CASE_PRESERVING_NAME   WITH_EDITORONLY_DATA

Do we want to support case-variants for FName? This will add an extra NAME_INDEX variable to FName, but means that ToString() will return you the exact same string that FName::Init was called with (which is useful if your FNames are shown to the end user) Currently this is enabled for the Editor and any Programs (such as UHT), but not the Runtime

Typedef Documentation

◆ NAME_INDEX

Legacy typedef - this is no longer an index

Use GetTypeHash(FName) or GetTypeHash(FNameEntryId) for hashing To compare with ENames use FName(EName) or FName::ToEName() instead

Enumeration Type Documentation

◆ anonymous enum

Maximum size of name, including the null terminator.

Enumerator
NAME_SIZE 

◆ EFindName

Enumeration for finding name.

Enumerator
FNAME_Find 

Find a name; return 0/NAME_None/FName() if it doesn't exist. When UE_FNAME_OUTLINE_NUMBER is set, we search for the exact name including the number suffix. Otherwise we search only for the string part.

FNAME_Add 

Find a name or add it if it doesn't exist.

◆ ELinkerNameTableConstructor

Enumerator
ENAME_LinkerConstructor 

◆ ENameCase

enum class ENameCase : uint8
strong
Enumerator
CaseSensitive 
IgnoreCase 

Function Documentation

◆ AppendHash()

CORE_API void AppendHash ( FBlake3 Builder,
FName  In 
)

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [1/2]

DECLARE_INTRINSIC_TYPE_LAYOUT ( FMemoryImageName  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [2/2]

DECLARE_INTRINSIC_TYPE_LAYOUT ( FScriptName  )

◆ Expose_TNameOf()

Expose_TNameOf ( FName  )

◆ LexFromString()

FORCEINLINE void LexFromString ( FName Name,
const TCHAR Str 
)

◆ LexToString()

CORE_API FString LexToString ( const FName Name)

◆ MinimalNameToName()

FORCEINLINE FName MinimalNameToName ( FMinimalName  InName)

◆ NameToMinimalName()

FORCEINLINE FMinimalName NameToMinimalName ( FName  InName)

◆ NameToScriptName()

FORCEINLINE FScriptName NameToScriptName ( FName  InName)

◆ operator<()

bool operator< ( FName  ,
FName   
)
delete

◆ operator<<() [1/4]

FUtf8StringBuilderBase & operator<< ( FUtf8StringBuilderBase Builder,
const FName Name 
)
inline

◆ operator<<() [2/4]

◆ operator<<() [3/4]

FWideStringBuilderBase & operator<< ( FWideStringBuilderBase Builder,
const FName Name 
)
inline

◆ operator<<() [4/4]

◆ operator<=()

bool operator<= ( FName  ,
FName   
)
delete

◆ operator>()

bool operator> ( FName  ,
FName   
)
delete

◆ operator>=()

bool operator>= ( FName  ,
FName   
)
delete

◆ ScriptNameToName()

FORCEINLINE FName ScriptNameToName ( FScriptName  InName)